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

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

  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.