Spaces:
Running
Running
Update state_orchestrator.py
Browse files- state_orchestrator.py +32 -0
state_orchestrator.py
CHANGED
@@ -78,6 +78,10 @@ class StateOrchestrator:
|
|
78 |
|
79 |
def _setup_event_handlers(self):
|
80 |
"""Subscribe to relevant events"""
|
|
|
|
|
|
|
|
|
81 |
# Session lifecycle
|
82 |
self.event_bus.subscribe(EventType.SESSION_STARTED, self._handle_session_started)
|
83 |
self.event_bus.subscribe(EventType.SESSION_ENDED, self._handle_session_ended)
|
@@ -100,7 +104,35 @@ class StateOrchestrator:
|
|
100 |
|
101 |
# Error events
|
102 |
self.event_bus.subscribe(EventType.CRITICAL_ERROR, self._handle_critical_error)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
async def _handle_session_started(self, event: Event):
|
105 |
"""Handle session start"""
|
106 |
session_id = event.session_id
|
|
|
78 |
|
79 |
def _setup_event_handlers(self):
|
80 |
"""Subscribe to relevant events"""
|
81 |
+
|
82 |
+
# Conversation events
|
83 |
+
event_bus.subscribe(EventType.CONVERSATION_STARTED, self._handle_conversation_started)
|
84 |
+
|
85 |
# Session lifecycle
|
86 |
self.event_bus.subscribe(EventType.SESSION_STARTED, self._handle_session_started)
|
87 |
self.event_bus.subscribe(EventType.SESSION_ENDED, self._handle_session_ended)
|
|
|
104 |
|
105 |
# Error events
|
106 |
self.event_bus.subscribe(EventType.CRITICAL_ERROR, self._handle_critical_error)
|
107 |
+
|
108 |
+
async def _handle_conversation_started(self, event: Event) -> None:
|
109 |
+
"""Handle conversation start within existing session"""
|
110 |
+
session_id = event.session_id
|
111 |
+
context = self.sessions.get(session_id)
|
112 |
+
|
113 |
+
if not context:
|
114 |
+
log_error(f"❌ Session not found for conversation start | session_id={session_id}")
|
115 |
+
return
|
116 |
+
|
117 |
+
log_info(f"🎤 Conversation started | session_id={session_id}")
|
118 |
|
119 |
+
# Welcome mesajını şimdi başlat
|
120 |
+
if context.project_config and context.project_config.get("welcome_enabled", True):
|
121 |
+
await self.transition_to(session_id, ConversationState.PREPARING_WELCOME)
|
122 |
+
await self._prepare_welcome_message(session_id)
|
123 |
+
else:
|
124 |
+
# Welcome yoksa direkt listening'e geç
|
125 |
+
await self.transition_to(session_id, ConversationState.LISTENING)
|
126 |
+
|
127 |
+
# Start STT
|
128 |
+
await self._event_bus.publish(
|
129 |
+
Event(
|
130 |
+
type=EventType.START_STT,
|
131 |
+
data={"session_id": session_id},
|
132 |
+
session_id=session_id
|
133 |
+
)
|
134 |
+
)
|
135 |
+
|
136 |
async def _handle_session_started(self, event: Event):
|
137 |
"""Handle session start"""
|
138 |
session_id = event.session_id
|