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

2.1 KiB

Runbook - Track 11 Live Operator Call Control

Use this runbook to verify the accepted call-control path introduced in Track 11.

For the current operator UX and active/recent call behavior, use docs/runbooks/track12-operator-voice-ux.md.

Preconditions

  • Track 9 bridge works: /proxy/asterisk-bridge/asterisk/status returns ami_connected=true
  • operator SIP extensions exist in Asterisk: 2001, 2002
  • bridge env includes:
    • ASTERISK_CALLCONTROL_ENABLED=1
    • ASTERISK_OPERATOR_EXTENSION_MAP_JSON
    • ASTERISK_TRANSFER_TARGET_MAP_JSON

1) Start the QA stack

powershell -ExecutionPolicy Bypass -File scripts\start_track9_qa.ps1

Verify:

curl http://127.0.0.1:8080/proxy/asterisk-bridge/asterisk/status

2) Real call scenario

  1. Register caller softphone 1001.
  2. Register operator softphone 2001.
  3. Make call 1001 -> 7000.
  4. Open http://127.0.0.1:8080/operator as operator.
  5. In Живые звонки:
    • select the active call
    • click Принять в работу
  6. Speak in MicroSIP/Zoiper.
  7. Finish with one of:
    • Завершить
    • Передать

3) Verify persisted events

Expected event types for the same call:

  • call.started
  • call.connected
  • call.ended
  • recording.ready
  • optional call.transferred

4) Verify recording playback

  1. Open http://127.0.0.1:8080/supervisor.
  2. In Записи, load the latest recording for the call.
  3. Check inline playback: audio/*, HTTP 200.

5) Inspect action log

curl -H "X-User: operator_a" -H "X-Role: operator" ^
  http://127.0.0.1:8080/proxy/asterisk-bridge/asterisk/live-calls/<call_id>/actions

Each action should have:

  • action_type in claim|hangup|blind-transfer
  • result_status=ok
  • ami_action_id for a successful AMI call

6) Failure handling

  • 403 Operator can control only own claimed call
    • use the correct operator account or claim the call first
  • 409 Unable to resolve active channel for call
    • check AMI permissions and channel resolution
  • Unknown transfer queue_code
    • fix ASTERISK_TRANSFER_TARGET_MAP_JSON