feat: handle voiceGreeting message type - TTS for bot join greeting

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
patrick-motsch 2026-02-18 00:17:42 +01:00
parent 5d40657aef
commit 33daa8dc74

View file

@ -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"}))