Operating the telephony
Operations are split between the Navin Manager (state of the services, restarts, upgrades, backups) and Navin
Enterprise (calls, recordings, routing, quotas). The operations below are those of the /v1/telephony API of the
Control Plane; every sensitive action is written to the existing audit log.
Calls
| Need | Operation |
|---|---|
| Calls in progress of the tenant and their channels | GET /v1/telephony/active-calls |
| Hang up a call | POST /v1/telephony/active-calls/{linkedid}/hangup (ARI, or LiveKit for the AI branch) |
| Transfer a call to an extension or an E.164 number | POST /v1/telephony/active-calls/{linkedid}/transfer |
| History, filters, pagination | GET /v1/telephony/calls |
| One call with its legs, events and recordings | GET /v1/telephony/calls/{id} |
| Live statistics for the dashboards | GET /v1/telephony/stats |
The CDR and CEL arrive through AMI (cdr_manager, cel_manager). The state of the AMI event connection of every node
is read by the platform administrator (GET /v1/telephony/event-streams).
Recordings, voicemail and conferences
- Recordings. MixMonitor writes on the Asterisk node; Navin Enterprise fetches the file through ARI, encrypts it,
stores it in SeaweedFS (bucket
navin-telephony) then deletes it from the node. Listening goes through a signed URL of 300 seconds (POST /v1/telephony/recordings/{id}/download, audited). A legal hold (PUT .../legal-hold) prevents the deletion. - Voicemail.
GET /v1/telephony/voicemail, listening through a signed URL (.../listen), mark as read (.../read), deletion. - Conferences. Sessions and participants:
GET /v1/telephony/conference-sessions. - IVR prompts. Upload, read and download:
/v1/telephony/ivr-prompts.
The retention of the recordings comes from the quotas of the tenant.
Fraud and blocks
Navin Enterprise raises fraud alerts (GET /v1/telephony/fraud-alerts, audited acknowledgement). An administrator
blocks a tenant or an extension at once on every Kamailio of the pool (POST /v1/telephony/blocks) and lifts the
block (POST /v1/telephony/blocks/{id}/lift). Kamailio always enforces the calls per second and the concurrent calls
of the tenant, the anti-flood (pike) and the ban after authentication failures (ipban), see
Security.
Maintenance of a node
- Drain the Asterisk or LiveKit SIP node:
POST /v1/telephony/pbx-pools/{id}/drain(platform administrator), which puts the destination in drain on every Kamailio of the pool; it receives no new call, the calls in progress go on. - Wait for the end of the calls in progress of the node (
GET /v1/telephony/active-calls). - Do the operation in the Manager (upgrade, restart, move).
- Restore the destination with the same drain operation.
After a restart of Kamailio, Navin Enterprise restores the routing tables by itself (it compares core.uptime);
POST /v1/telephony/pbx-pools/{id}/reconcile forces the reconciliation of the Kamailio tables and the LiveKit SIP
objects with the published version.
Observability
Metrics: res_prometheus of Asterisk, xhttp_prom of Kamailio, Prometheus ports of LiveKit, LiveKit SIP, Egress and
the workers, collected by the Prometheus of the catalogue; logs through Alloy; alerts through Alertmanager. The
business indicators (calls, CPS, quality, queues, consumption) are computed by Navin Enterprise from the CDR, CEL and
events. The health states of every service are in the Manager console.
Who does what
| Task | Tool |
|---|---|
| install, upgrade, restart, move a service | Navin Manager |
| certificates, firewall, ports | Navin Manager |
| backup and restore of the services | Navin Manager, see Backup and restore |
| extensions, trunks, numbers, routing, IVR, queues, agents | Navin portal, see Configuration |
| calls, recordings, fraud, drain, reconciliation | Navin Enterprise (API and portal) |