Skip to main content

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​

RoleReadWrite
platform_admineverythingeverything, PBX pools included
tenant_adminthe objects of its tenantthe objects of its tenant, except the PBX pools (name and mode read only)
support_engineer, auditorthe objects of its tenantnone

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​

ScreenObjectKey points
SIP trunkscarrier trunkhost, port, UDP, TCP or TLS transport, authentication, registration, codecs (ulaw, alaw, g722, g729, opus, gsm), allowed numbers, presented number, failover order
Phone numbersE.164 numbertrunk, destination (extension, IVR, queue, AI voice agent, conference, external number), branch pbx or ai
ExtensionsSIP phone or WebRTC softphonecall rights (internal, national, international, premium), voicemail, recording policy, forwarding, concurrent calls
Routing rulesinbound or outbound ruleAsterisk pattern (_0XXXXXXXXX), priority, time windows (mon-fri 09:00-18:00), trunks, stripped digits, added prefix
IVR builderversioned IVR flowplay, menu and transfer nodes; draft, published version, archived versions; audio prompts stored in SeaweedFS
Call queuescall queuestrategy (ringall, leastrecent, fewestcalls, random, rrmemory, linear, wrandom), ringing, wrap up, maximum wait, music on hold, service level, members and penalties
Human agentsplatform userextension, skills
AI voice agentsagent run by the workersLLM 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
ConferencesConfBridge roomPIN, 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:

  1. Preview (POST /v1/telephony/pbx-pools/{id}/preview): files pjsip_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.
  2. 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.
  3. 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.