Skip to content

Dialler providers

CXGear Dialler is provider-agnostic. Configuration, IVR, softphone, and call control use the same product model; each backend implements an adapter.

Provider (Asterisk | Twilio | Exotel | …)
└── Trunk + DIDs
└── Call routes (pattern / DID → agent | queue | IVR flow)
ConceptWhere it lives
IVR menus, prompts, DTMFDialler → IVR (generic)
Softphone Online / dialAdapter decides SDK (none, twilio_voice, …)
Voice / status / IVR webhooks/api/v1/telephony/webhook/* (one URL for all providers)
Call control (hangup, transfer, …)Adapter applyCallControl

Set PUBLIC_API_URL to your public API base, then point the provider’s voice webhook to:

{PUBLIC_API_URL}/api/v1/telephony/webhook/voice

Also available: /telephony/webhook/status, /telephony/webhook/ivr.

GET /dialler/softphone/capabilities returns the active provider’s SDK. The browser loads that driver only when needed (desk phones use sdk: none).

  1. Catalog entry in packages/shared/src/dialler.ts (credential fields)
  2. Adapter in apps/api/src/lib/dialler-adapters/
  3. Register in dialler-adapters/index.ts

IVR and wallboard do not change — they speak abstract instructions (play, gather, dial_client, …).