Configuring the telephony in the portal
The Telephony section of the portal (Operate group) configures the usages; every screen calls the /v1/telephony
API of the Control Plane. The changes are saved at once in Navin Enterprise and reach the engines at the
publication of the PBX pool.
Rights
| Role | Read | Write |
|---|---|---|
platform_admin | everything | everything, PBX pools included |
tenant_admin | the objects of its tenant | the objects of its tenant, except the PBX pools (name and mode read only) |
support_engineer, auditor | the objects of its tenant | none |
The softphone is open to every user who has a WebRTC extension. SIP passwords, trunk secrets, voicemail and conference codes are write only: the screen shows "set" or "not set", never the value.
PBX pools
A pool groups the Asterisk nodes installed by the Manager. Only the platform administrator declares it in
PBX pools: mode shared (common pool, dispatcher set 1) or dedicated (pool of one tenant, set 100 or above),
cluster and service of the Manager, nodes (name host [AMI port] [SIP address]), AMI and ARI users with the
reference of their secret (openbao:// or env://, never the secret), JSONRPC endpoints of Kamailio, reference of
the shared WebRTC secret, LiveKit SIP set. The creation from the inventory
(POST /v1/telephony/infrastructure/pools) fills these fields from the services of the Manager.
Tenant settings
Telephony settings sets for the tenant: SIP domain (for example <voice-host>), PBX pool, country code,
national and international prefixes, emergency numbers, time zone, WSS address of the softphones and retention of the
call records. Quotas and security sets the concurrent calls, the calls per second (enforced by Kamailio on every
new call), the minutes per month, the allowed country prefixes, the premium prefixes always blocked, the maximum
duration of a call and the retention of the recordings.
Telephony objects
| Screen | Object | Key points |
|---|---|---|
| SIP trunks | carrier trunk | host, port, UDP, TCP or TLS transport, authentication, registration, codecs (ulaw, alaw, g722, g729, opus, gsm), allowed numbers, presented number, failover order |
| Phone numbers | E.164 number | trunk, destination (extension, IVR, queue, AI voice agent, conference, external number), branch pbx or ai |
| Extensions | SIP phone or WebRTC softphone | call rights (internal, national, international, premium), voicemail, recording policy, forwarding, concurrent calls |
| Routing rules | inbound or outbound rule | Asterisk pattern (_0XXXXXXXXX), priority, time windows (mon-fri 09:00-18:00), trunks, stripped digits, added prefix |
| IVR builder | versioned IVR flow | play, menu and transfer nodes; draft, published version, archived versions; audio prompts stored in SeaweedFS |
| Call queues | call queue | strategy (ringall, leastrecent, fewestcalls, random, rrmemory, linear, wrandom), ringing, wrap up, maximum wait, music on hold, service level, members and penalties |
| Human agents | platform user | extension, skills |
| AI voice agents | agent run by the workers | LLM model (alias of the gateway), language, greeting, instructions, speech to text and text to speech models, voice, allowed tools, transfer target, maximum duration, fallback queue |
| Conferences | ConfBridge room | PIN, maximum participants, recording |
A number routed ai must have a voice agent as destination. An object still used by a number or a rule cannot be
deleted.
Publication
Publication compiles the configuration of the pool from the objects of all its tenants:
- Preview (
POST /v1/telephony/pbx-pools/{id}/preview): filespjsip_navin.conf,extensions_navin.conf,queues_navin.conf,voicemail_navin.conf,confbridge_navin.conf, difference with the published version, Kamailio tables and LiveKit objects. The compiler refuses any context of a tenant that would reference an object of another tenant. - Publish (
.../publish): delivery to every node through AMI (UpdateConfig), module reload, read back (GetConfig), routing pushed to Kamailio through JSONRPC, trunks and dispatch rules created in LiveKit. The version is kept with its text, its SHA-256 digest and its author. - Roll back (
.../rollback) to the previous version when a node refuses the new one.
The IVR flow has its own version publication (POST /v1/telephony/ivr-flows/{id}/versions/{version}/publish).
Softphone
Softphone places and receives calls from the browser on an extension of kind WebRTC. The portal requests
ephemeral credentials (POST /v1/telephony/webrtc/credentials, one hour at most), registers with Kamailio over WSS
and exchanges the media in DTLS-SRTP with Asterisk. The SIP password of the extension never leaves the server.