From cd2fffc651517b7e54997ac3e4a41c1fe94fc860 Mon Sep 17 00:00:00 2001 From: patrick-motsch Date: Thu, 26 Feb 2026 09:46:05 +0100 Subject: [PATCH] feat: emit ttsDeliveryStatus SSE diagnostics Made-with: Cursor --- modules/features/teamsbot/service.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/modules/features/teamsbot/service.py b/modules/features/teamsbot/service.py index c24f0388..b5136130 100644 --- a/modules/features/teamsbot/service.py +++ b/modules/features/teamsbot/service.py @@ -848,6 +848,12 @@ class TeamsbotService: # 4a: Voice response (TTS -> Audio to bot) if sendVoice: try: + await _emitSessionEvent(sessionId, "ttsDeliveryStatus", { + "status": "requested", + "hasWebSocket": websocket is not None, + "message": "TTS generation requested", + "timestamp": getIsoTimestamp(), + }) logger.info( f"Session {sessionId}: TTS requested (websocket_available={websocket is not None})" ) @@ -877,12 +883,30 @@ class TeamsbotService: }, })) logger.info(f"Session {sessionId}: TTS audio dispatched to bot") + await _emitSessionEvent(sessionId, "ttsDeliveryStatus", { + "status": "dispatched", + "hasWebSocket": True, + "message": "TTS audio dispatched to bot", + "timestamp": getIsoTimestamp(), + }) else: logger.warning( f"Session {sessionId}: TTS audio generated but cannot be played (bot websocket unavailable, likely fallback mode)" ) + await _emitSessionEvent(sessionId, "ttsDeliveryStatus", { + "status": "unavailable", + "hasWebSocket": False, + "message": "TTS audio generated but bot websocket unavailable", + "timestamp": getIsoTimestamp(), + }) except Exception as ttsErr: logger.warning(f"TTS failed for session {sessionId}: {ttsErr}") + await _emitSessionEvent(sessionId, "ttsDeliveryStatus", { + "status": "failed", + "hasWebSocket": websocket is not None, + "message": str(ttsErr), + "timestamp": getIsoTimestamp(), + }) if not sendChat: sendChat = True # Fallback to chat if voice-only and TTS failed