Wire up headline fetch and background research triggers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -486,6 +486,7 @@ async def shutdown():
|
|||||||
for caller_id in list(caller_service.active_calls.keys()):
|
for caller_id in list(caller_service.active_calls.keys()):
|
||||||
caller_service.hangup(caller_id)
|
caller_service.hangup(caller_id)
|
||||||
caller_service.reset()
|
caller_service.reset()
|
||||||
|
await news_service.close()
|
||||||
print("[Server] Cleanup complete")
|
print("[Server] Cleanup complete")
|
||||||
|
|
||||||
|
|
||||||
@@ -670,6 +671,9 @@ async def start_call(caller_key: str):
|
|||||||
session.start_call(caller_key)
|
session.start_call(caller_key)
|
||||||
caller = session.caller # This generates the background if needed
|
caller = session.caller # This generates the background if needed
|
||||||
|
|
||||||
|
if not session.news_headlines:
|
||||||
|
asyncio.create_task(_fetch_session_headlines())
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"status": "connected",
|
"status": "connected",
|
||||||
"caller": caller["name"],
|
"caller": caller["name"],
|
||||||
@@ -692,6 +696,10 @@ async def hangup():
|
|||||||
_auto_respond_pending = None
|
_auto_respond_pending = None
|
||||||
_auto_respond_buffer.clear()
|
_auto_respond_buffer.clear()
|
||||||
|
|
||||||
|
if session._research_task and not session._research_task.done():
|
||||||
|
session._research_task.cancel()
|
||||||
|
session._research_task = None
|
||||||
|
|
||||||
caller_name = session.caller["name"] if session.caller else None
|
caller_name = session.caller["name"] if session.caller else None
|
||||||
session.end_call()
|
session.end_call()
|
||||||
|
|
||||||
@@ -819,6 +827,7 @@ async def chat(request: ChatRequest):
|
|||||||
|
|
||||||
epoch = _session_epoch
|
epoch = _session_epoch
|
||||||
session.add_message("user", request.text)
|
session.add_message("user", request.text)
|
||||||
|
session._research_task = asyncio.create_task(_background_research(request.text))
|
||||||
|
|
||||||
async with _ai_response_lock:
|
async with _ai_response_lock:
|
||||||
if _session_epoch != epoch:
|
if _session_epoch != epoch:
|
||||||
@@ -1371,6 +1380,8 @@ async def _trigger_ai_auto_respond(accumulated_text: str):
|
|||||||
|
|
||||||
broadcast_event("ai_done")
|
broadcast_event("ai_done")
|
||||||
|
|
||||||
|
session._research_task = asyncio.create_task(_background_research(accumulated_text))
|
||||||
|
|
||||||
# Also stream to active real caller so they hear the AI
|
# Also stream to active real caller so they hear the AI
|
||||||
if session.active_real_caller:
|
if session.active_real_caller:
|
||||||
caller_id = session.active_real_caller["caller_id"]
|
caller_id = session.active_real_caller["caller_id"]
|
||||||
@@ -1459,6 +1470,10 @@ async def hangup_real_caller():
|
|||||||
_auto_respond_pending = None
|
_auto_respond_pending = None
|
||||||
_auto_respond_buffer.clear()
|
_auto_respond_buffer.clear()
|
||||||
|
|
||||||
|
if session._research_task and not session._research_task.done():
|
||||||
|
session._research_task.cancel()
|
||||||
|
session._research_task = None
|
||||||
|
|
||||||
caller_id = session.active_real_caller["caller_id"]
|
caller_id = session.active_real_caller["caller_id"]
|
||||||
caller_phone = session.active_real_caller["phone"]
|
caller_phone = session.active_real_caller["phone"]
|
||||||
conversation_snapshot = list(session.conversation)
|
conversation_snapshot = list(session.conversation)
|
||||||
|
|||||||
Reference in New Issue
Block a user