1.9 KiB
1.9 KiB
Wave 2 / Track 11 - Live Operator Voice Control
Status: Accepted
Track 11 introduced the first real operator call-control loop on top of the accepted Asterisk bridge.
Goal
Move from event-only voice integration to operator-controlled live calls in the existing operator shell.
Accepted control path:
- operator sees a live inbound call in
/operator - operator answers media in external
MicroSIP/Zoiper - operator fixes ownership in the browser with
Принять в работу - operator can
ЗавершитьorПередать
Voice media stays outside the browser. No WebRTC in this track.
Scope
In scope:
- bridge live-call routes under
/asterisk/live-calls - own-call RBAC for
operator - operator live-call block
- action log and replay-safe behavior
- Asterisk event
MVPCCOperatorConnected - QA acceptance with real call and recording playback
Out of scope:
- ARI
- attended transfer or conference
- embedded browser softphone
- business API redesign
Deliverables
- Migrations:
migrations/sql/0011_track11_voice_control_sqlite.sqlmigrations/sql/0011_track11_voice_control_postgres.sql
- Backend:
services/asterisk_bridge_service/app.py
- Operator UI:
ui/operator/index.htmlui/operator/app.js
- Asterisk templates:
deployment/asterisk/pjsip.confdeployment/asterisk/extensions.conf
- Evidence and docs:
docs/runbooks/track11-live-operator-call-control.mddocs/acceptance/track11/track11-acceptance.md
Accepted baseline
Track 11 is frozen with these guarantees:
- live inbound call visibility works in
/operator claim,hangup, andblind transferpersist in bridge action logscall.connectedandcall.transferredare written as voice events- recording import and supervisor playback stay green
For the current operator UX, use the Track 12 runbook. Track 11 remains the control-path baseline.