From 1c00ab6024dfc2080f572571379a0a2d5b95c058 Mon Sep 17 00:00:00 2001 From: patrick-motsch Date: Thu, 26 Feb 2026 21:45:47 +0100 Subject: [PATCH] Forward bot playback acknowledgements to SSE status stream. Handle ttsPlaybackAck websocket messages and emit ttsDeliveryStatus updates with playback_* states for UI diagnostics. Made-with: Cursor --- modules/features/teamsbot/service.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/features/teamsbot/service.py b/modules/features/teamsbot/service.py index a8469661..a8ee7c85 100644 --- a/modules/features/teamsbot/service.py +++ b/modules/features/teamsbot/service.py @@ -348,6 +348,23 @@ class TeamsbotService: elif msgType == "ping": await websocket.send_text(json.dumps({"type": "pong"})) + elif msgType == "ttsPlaybackAck": + playback = message.get("playback", {}) or {} + status = playback.get("status", "unknown") + ackMessage = playback.get("message") or "Bot playback status update" + logger.info( + f"[WS] TTS playback ack: status={status}, format={playback.get('format')}, " + f"bytesBase64={playback.get('bytesBase64')}" + ) + await _emitSessionEvent(sessionId, "ttsDeliveryStatus", { + "status": f"playback_{status}", + "hasWebSocket": True, + "message": ackMessage, + "timestamp": playback.get("timestamp") or getIsoTimestamp(), + "format": playback.get("format"), + "bytesBase64": playback.get("bytesBase64"), + }) + except Exception as e: if "disconnect" not in str(e).lower(): logger.error(f"[WS] Error for session {sessionId}: {type(e).__name__}: {e}")