Voice: ensure mic on in auth join, add track diagnostics
Made-with: Cursor
This commit is contained in:
parent
2ce93c58a5
commit
35852f691b
2 changed files with 22 additions and 1 deletions
|
|
@ -286,6 +286,18 @@ export class AudioProcedure {
|
|||
|
||||
const before = await collectWebRtcAudioStats();
|
||||
|
||||
// Hypothesis B: verify TTS track matches PC sender track
|
||||
const ttsTrack = streamDest.stream.getAudioTracks()[0];
|
||||
const ttsTrackId = ttsTrack?.id || null;
|
||||
const senderTrackIds: string[] = [];
|
||||
for (const pc of pcs) {
|
||||
const senders = pc.getSenders?.() || [];
|
||||
for (const s of senders) {
|
||||
if (s?.track?.kind === 'audio') senderTrackIds.push(s.track.id);
|
||||
}
|
||||
}
|
||||
const trackMatch = ttsTrackId && senderTrackIds.includes(ttsTrackId);
|
||||
|
||||
// Play through the MediaStreamDestination -> Teams mic input
|
||||
const source = ctx.createBufferSource();
|
||||
source.buffer = audioBuffer;
|
||||
|
|
@ -308,10 +320,16 @@ export class AudioProcedure {
|
|||
after,
|
||||
deltaBytes: after.bytesSentTotal - before.bytesSentTotal,
|
||||
deltaPackets: after.packetsSentTotal - before.packetsSentTotal,
|
||||
ttsTrackId,
|
||||
senderTrackIds,
|
||||
trackMatch,
|
||||
};
|
||||
});
|
||||
}, { audioData, format });
|
||||
|
||||
this._logger.info(
|
||||
`[Voice] TTS track vs PC: ttsTrackId=${playbackDiag?.ttsTrackId ?? 'n/a'} senderTrackIds=[${(playbackDiag?.senderTrackIds ?? []).join(',')}] trackMatch=${playbackDiag?.trackMatch ?? false}`,
|
||||
);
|
||||
this._logger.info(
|
||||
`TTS WebRTC diagnostics: pcs=${playbackDiag?.after?.pcs ?? 0}, senders=${playbackDiag?.after?.senderCount ?? 0}, ` +
|
||||
`deltaBytes=${playbackDiag?.deltaBytes ?? 0}, deltaPackets=${playbackDiag?.deltaPackets ?? 0}`,
|
||||
|
|
|
|||
|
|
@ -371,7 +371,10 @@ export class BotOrchestrator {
|
|||
await this._takeScreenshot('step4a-no-buttons-found', this._isDebugMode);
|
||||
}
|
||||
|
||||
// STEP 5: Poll for "Join now" on the pre-join screen (mic is NOT touched)
|
||||
// Ensure microphone is ON before joining (required for voice playback)
|
||||
await this._ensureMicOn();
|
||||
|
||||
// STEP 5: Poll for "Join now" on the pre-join screen
|
||||
await this._takeScreenshot('step5-before-join-now', this._isDebugMode);
|
||||
|
||||
const joinNowBtn = await this._pollForElement(preJoinSelectors, 30000, 'Join now button');
|
||||
|
|
|
|||
Loading…
Reference in a new issue