diff --git a/modules/features/teamsbot/service.py b/modules/features/teamsbot/service.py index df21d8ff..7251741e 100644 --- a/modules/features/teamsbot/service.py +++ b/modules/features/teamsbot/service.py @@ -303,6 +303,32 @@ class TeamsbotService: websocket=websocket, ) + elif msgType == "voiceGreeting": + greetingText = message.get("text", "") + greetingLang = message.get("language", self.config.language) + logger.info(f"[WS-DEBUG] Voice greeting request: text={greetingText[:60]}..., language={greetingLang}") + if greetingText and voiceInterface: + try: + ttsResult = await voiceInterface.textToSpeech( + text=greetingText, + languageCode=greetingLang, + voiceName=self.config.voiceId + ) + if ttsResult and isinstance(ttsResult, dict): + audioContent = ttsResult.get("audioContent") + if audioContent: + await websocket.send_text(json.dumps({ + "type": "playAudio", + "sessionId": sessionId, + "audio": { + "data": base64.b64encode(audioContent if isinstance(audioContent, bytes) else audioContent.encode()).decode(), + "format": "mp3", + } + })) + logger.info(f"Voice greeting TTS sent for session {sessionId}") + except Exception as ttsErr: + logger.warning(f"Voice greeting TTS failed for session {sessionId}: {ttsErr}") + elif msgType == "ping": await websocket.send_text(json.dumps({"type": "pong"}))