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