77 lines
2.1 KiB
Markdown
77 lines
2.1 KiB
Markdown
# 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
|
|
powershell -ExecutionPolicy Bypass -File scripts\start_track9_qa.ps1
|
|
```
|
|
|
|
Verify:
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
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`
|