fix(audio): neue ARIA-Antwort verwirft pending Auto-Resume
Stefans Edge-Case: waehrend des Telefonats stellt der User eine neue Text-Frage. Die neue ARIA-Antwort startet sofort (offhook→offhook loest keinen halt aus). Vorher haette resumeFromInterruption nach Anruf-Ende noch die ALTE Antwort (die unterbrochen wurde) ab Position spielen wollen — Konflikt mit der neuen Antwort. Fix: in _handlePcmChunkImpl beim Wechsel zu einer neuen messageId: - laufenden resumeSound stoppen - pausedMessageId = '' wenn != neue messageId Damit gewinnt immer die neueste Antwort. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -814,6 +814,21 @@ class AudioService {
|
||||
this.pcmBuffer = [];
|
||||
this.pcmBytesCollected = 0;
|
||||
}
|
||||
// Resume-Sound stoppen falls noch aktiv (User hat nach Anruf eine
|
||||
// neue Frage gestellt — die alte interruptierte Antwort ist obsolet).
|
||||
if (this.resumeSound) {
|
||||
try { this.resumeSound.stop(); this.resumeSound.release(); } catch {}
|
||||
this.resumeSound = null;
|
||||
}
|
||||
// Pending Auto-Resume verwerfen wenn die neue Antwort eine andere
|
||||
// messageId hat. Sonst spielt nach 30s-Wartezeit der Resume die
|
||||
// ueberholte Antwort ab.
|
||||
if (this.pausedMessageId && this.pausedMessageId !== messageId) {
|
||||
console.log('[Audio] Neue TTS-Antwort (msgId=%s) — Auto-Resume fuer %s verworfen',
|
||||
messageId, this.pausedMessageId);
|
||||
this.pausedMessageId = '';
|
||||
this.pausedPosition = 0;
|
||||
}
|
||||
this.pcmStreamActive = true;
|
||||
this.pcmMessageId = messageId;
|
||||
this.pcmSampleRate = sampleRate;
|
||||
|
||||
Reference in New Issue
Block a user