Spaces:
Building
Building
Update state_orchestrator.py
Browse files- state_orchestrator.py +24 -10
state_orchestrator.py
CHANGED
@@ -339,9 +339,14 @@ class StateOrchestrator:
|
|
339 |
async def _handle_audio_playback_completed(self, event: Event):
|
340 |
"""Handle audio playback completion"""
|
341 |
session_id = event.session_id
|
342 |
-
|
343 |
|
344 |
-
|
|
|
|
|
|
|
|
|
|
|
345 |
|
346 |
if current_state in [ConversationState.PLAYING_WELCOME, ConversationState.PLAYING_RESPONSE]:
|
347 |
# Transition back to listening
|
@@ -354,6 +359,13 @@ class StateOrchestrator:
|
|
354 |
data={}
|
355 |
))
|
356 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
357 |
async def _handle_stt_error(self, event: Event):
|
358 |
"""Handle STT errors"""
|
359 |
session_id = event.session_id
|
@@ -475,14 +487,16 @@ class StateOrchestrator:
|
|
475 |
log_info(f"β
State transition | session_id={session_id}, {old_state.value} β {new_state.value}")
|
476 |
|
477 |
# Emit state transition event
|
478 |
-
await self.
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
|
|
|
|
486 |
)
|
487 |
|
488 |
return True
|
|
|
339 |
async def _handle_audio_playback_completed(self, event: Event):
|
340 |
"""Handle audio playback completion"""
|
341 |
session_id = event.session_id
|
342 |
+
context = self.sessions.get(session_id)
|
343 |
|
344 |
+
if not context:
|
345 |
+
return
|
346 |
+
|
347 |
+
current_state = context.state
|
348 |
+
|
349 |
+
log_info(f"π΅ Audio playback completed", session_id=session_id, state=current_state.value)
|
350 |
|
351 |
if current_state in [ConversationState.PLAYING_WELCOME, ConversationState.PLAYING_RESPONSE]:
|
352 |
# Transition back to listening
|
|
|
359 |
data={}
|
360 |
))
|
361 |
|
362 |
+
# Send STT ready signal to frontend
|
363 |
+
await self.event_bus.publish(Event(
|
364 |
+
type=EventType.STT_READY,
|
365 |
+
session_id=session_id,
|
366 |
+
data={}
|
367 |
+
))
|
368 |
+
|
369 |
async def _handle_stt_error(self, event: Event):
|
370 |
"""Handle STT errors"""
|
371 |
session_id = event.session_id
|
|
|
487 |
log_info(f"β
State transition | session_id={session_id}, {old_state.value} β {new_state.value}")
|
488 |
|
489 |
# Emit state transition event
|
490 |
+
await self.event_bus.publish(
|
491 |
+
Event(
|
492 |
+
type=EventType.STATE_TRANSITION,
|
493 |
+
data={
|
494 |
+
"old_state": old_state.value,
|
495 |
+
"new_state": new_state.value,
|
496 |
+
"timestamp": datetime.utcnow().isoformat()
|
497 |
+
},
|
498 |
+
session_id=session_id
|
499 |
+
)
|
500 |
)
|
501 |
|
502 |
return True
|