fix: E2EE key timing + verbose logging + shorter greeting
- Reorder: send call member event BEFORE creating VoiceSession - Store VoiceSession BEFORE start so sync handler can forward keys - Increase E2EE key wait from 3s to 10s - Add INFO-level logging for key lookup + room state scan via HTTP API - Tighten voice system prompt to prevent long rambling greetings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
18
voice.py
18
voice.py
@@ -23,10 +23,14 @@ ELEVENLABS_KEY = os.environ.get("ELEVENLABS_API_KEY", "")
|
||||
DEFAULT_VOICE_ID = "onwK4e9ZLuTAKqWW03F9" # Daniel - male, free tier
|
||||
|
||||
VOICE_PROMPT = """Du bist ein hilfreicher Sprachassistent in einem Matrix-Anruf.
|
||||
Regeln:
|
||||
- Halte Antworten KURZ - 1-3 Saetze maximal
|
||||
- Sei direkt, keine Fuellwoerter
|
||||
- Antworte immer auf Deutsch"""
|
||||
|
||||
STRIKTE Regeln:
|
||||
- Antworte IMMER auf Deutsch
|
||||
- Halte JEDE Antwort auf MAXIMAL 1-2 kurze Saetze
|
||||
- Sei direkt und praezise, keine Fuellwoerter
|
||||
- Erfinde NICHTS - keine Geschichten, keine Musik, keine Fantasie
|
||||
- Beantworte nur was gefragt wird
|
||||
- Wenn niemand etwas fragt, sage nur kurz Hallo"""
|
||||
|
||||
_vad = None
|
||||
def _get_vad():
|
||||
@@ -121,13 +125,13 @@ class VoiceSession:
|
||||
user_id = self.nio_client.user_id
|
||||
jwt = _generate_lk_jwt(self.room_id, user_id, self.device_id)
|
||||
|
||||
# Wait up to 3s for E2EE encryption key from Element Call
|
||||
for _ in range(30):
|
||||
# Wait up to 10s for E2EE encryption key from Element Call
|
||||
for _ in range(100):
|
||||
if self._e2ee_key:
|
||||
break
|
||||
await asyncio.sleep(0.1)
|
||||
if not self._e2ee_key:
|
||||
logger.warning("No E2EE key received after 3s, connecting without encryption")
|
||||
logger.warning("No E2EE key received after 10s, connecting without encryption")
|
||||
|
||||
# Connect with E2EE if key available
|
||||
e2ee_opts = None
|
||||
|
||||
Reference in New Issue
Block a user