3.6 KiB
Architecture
Target architecture:
Kazakhtelecom SIP
-> Asterisk / PJSIP
-> inbound dialplan
-> Stasis(ai-operator)
-> Go AI Operator
-> ARI Call Manager
-> chan_websocket Media Gateway
-> Voice Provider Adapter
-> OpenAI Realtime or future provider
-> Knowledge Base / RAG
TZ-01 status:
- Stasis route is not enabled.
- Media gateway is not implemented.
- OpenAI provider is not implemented.
- Knowledge Base / RAG is not implemented.
- Live call handling is disabled.
Created package boundaries:
internal/asterisk/ari: local ARI health-check client.internal/call: call session, language, and state types.internal/media: media gateway interfaces and audio chunk types.internal/ai: voice provider interfaces and events.internal/dialogue: orchestrator interface and skeleton stub.internal/knowledge: search repository interface.internal/tools: future tool names.
TZ-03 status
The Go service can register ARI app ai-operator, read ARI events, parse Stasis and hangup lifecycle events, and manage in-memory sessions. Media Gateway, OpenAI provider, and production route switching are still not implemented.
TZ-04 status
The service can create ARI externalMedia WebSocket channels, connect to /media/{connection_id}, parse media control events, send media control commands, and collect basic media stats. OpenAI and production routing remain disabled.
TZ-05 status
The service now has a replaceable VoiceProvider layer with a fake provider and OpenAI Realtime skeleton. OpenAI remains behind an adapter. Conversation policy, language/region flow, tools execution, and RAG are not implemented yet.
TZ-06 Conversation Layer
Call Manager now delegates dialogue state to internal/dialogue. The state machine enforces language and region selection before any knowledge-base or business-tool flow. Production routing remains unchanged.
TZ-07 Language Selection
internal/dialogue/language normalizes user text, detects Russian/Kazakh choices, and applies state-aware selection policy. It feeds the Dialogue Orchestrator, which stores strict ru/kk only.
TZ-08 Region Resolver Update
TZ-08 adds an offline Kazakhstan Region Resolver with 20 enabled regions, stable region_code values, Almaty city/region clarification, false-positive protection, and explicit region-change policy. Production routing remains disabled; OpenAI, PostgreSQL, and Knowledge Base/RAG are still not used at this stage.
TZ-09 Knowledge Base Update
TZ-09 adds PostgreSQL + pgvector, KGA JSONL ingestion, fake embeddings, hybrid KB search, cross-language fallback for KK queries, citations, and search_knowledge_base integration behind the existing language/region guardrail. OpenAI is not called automatically and production routing remains disabled.
TZ-10 Agent Prompt and Tools
The agent behavior layer sits above Dialogue Orchestrator and below VoiceProvider. It builds the final state-aware prompt, formats KB-grounded answers, preserves no-hallucination behavior, and relays VoiceProvider ToolCall results back through SendToolResult.
TZ-11 Human Handoff / Fallback
The handoff layer sits beside Dialogue Orchestrator. User requests for an operator are detected from transcript text or tool calls, converted into structured handoff requests, policy-gated, and executed by a safe executor. Default mode is disabled_stub.
TZ-12 Audit Layer
The audit layer records call lifecycle, state transitions, redacted transcript events, tool calls, KB searches, handoff/fallback events, provider/media stats, exports and retention dry-runs through internal/audit.