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