Update engine protocol
This commit is contained in:
44
engine/app/backend_client.py
Normal file
44
engine/app/backend_client.py
Normal file
@@ -0,0 +1,44 @@
|
||||
"""Backend API client for assistant config."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import aiohttp
|
||||
from loguru import logger
|
||||
|
||||
from app.config import settings
|
||||
|
||||
|
||||
async def fetch_assistant_config(assistant_id: str) -> Optional[Dict[str, Any]]:
|
||||
"""Fetch assistant config payload from backend API.
|
||||
|
||||
Expected response shape:
|
||||
{
|
||||
"assistant": {...},
|
||||
"voice": {...} | null
|
||||
}
|
||||
"""
|
||||
if not settings.backend_url:
|
||||
logger.warning("BACKEND_URL not set; skipping assistant config fetch")
|
||||
return None
|
||||
|
||||
url = f"{settings.backend_url.rstrip('/')}/api/assistants/{assistant_id}/config"
|
||||
timeout = aiohttp.ClientTimeout(total=settings.backend_timeout_sec)
|
||||
|
||||
try:
|
||||
async with aiohttp.ClientSession(timeout=timeout) as session:
|
||||
async with session.get(url) as resp:
|
||||
if resp.status == 404:
|
||||
logger.warning(f"Assistant config not found: {assistant_id}")
|
||||
return None
|
||||
resp.raise_for_status()
|
||||
payload = await resp.json()
|
||||
if not isinstance(payload, dict):
|
||||
logger.warning("Assistant config payload is not a dict; ignoring")
|
||||
return None
|
||||
return payload
|
||||
except Exception as exc:
|
||||
logger.warning(f"Failed to fetch assistant config ({assistant_id}): {exc}")
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user