61 lines
1.9 KiB
Markdown
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.
|