Files
call-center/docs/roadmap/07-track11-live-operator-call-control.md
T

61 lines
1.9 KiB
Markdown

# 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
1. Migrations:
- `migrations/sql/0011_track11_voice_control_sqlite.sql`
- `migrations/sql/0011_track11_voice_control_postgres.sql`
2. Backend:
- `services/asterisk_bridge_service/app.py`
3. Operator UI:
- `ui/operator/index.html`
- `ui/operator/app.js`
4. Asterisk templates:
- `deployment/asterisk/pjsip.conf`
- `deployment/asterisk/extensions.conf`
5. Evidence and docs:
- `docs/runbooks/track11-live-operator-call-control.md`
- `docs/acceptance/track11/track11-acceptance.md`
## Accepted baseline
Track 11 is frozen with these guarantees:
- live inbound call visibility works in `/operator`
- `claim`, `hangup`, and `blind transfer` persist in bridge action logs
- `call.connected` and `call.transferred` are 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.