Features
Everything you need to build programmable voice applications.
Programmable Call Routing
Define call flows through CallScripts — JSON arrays of verbs returned by your HTTP endpoints. Change routing logic without touching the PBX.
Call Forking
Ring multiple destinations in parallel. The first to answer wins and all other attempts are automatically cancelled.
Media Playback
Play audio announcements to callers as early media or during connected calls. Supports wav files from the local filesystem.
Codec Transcoding
RTPEngine handles codec negotiation and transcoding between endpoints. Supports G722, PCMA, PCMU, GSM, and AMR out of the box.
SIP Trunking
Connect to external SIP providers with inbound IP-based identification, outbound authentication, and automatic registration refresh.
Client Registration
SIP endpoints register to the system with digest authentication. A RegHook lets your application control authentication and assign dialplans per-client.
Multi-Domain
Run multiple SIP domains on a single instance. Each domain has its own clients, trunks, and dialplans — fully isolated.
Call Transfers
Handles SIP REFER for call transfers. When a connected party initiates a transfer, Dragon PBX sets up the new call leg automatically.
Status Webhooks
Receive real-time status updates for every call event — ringing, answered, hangup, transfer, and more — via HTTP POST to your StatusHook.
Retry Logic
If a call isn't answered or rejected after a CallScript completes, the system automatically retries up to 3 times with an incremented counter, letting your CallHook return different logic each time.
Call Script Verbs
Call routing is expressed through four simple verbs:
connect— Connect the call to one or more destinations (clients, trunks, or SIP URIs). Supports parallel ringing with configurable timeouts.announce— Play an audio file to the caller. Works as early media before answer or during a connected call.response— Send a SIP response code (3xx–6xx) to reject or redirect the call. Terminates processing.pause— Delay processing for a number of seconds.
These verbs compose into a sequence. For example: play a greeting, ring the user for 30 seconds, then if no answer, play a voicemail prompt.
Configuration Backends
Dragon PBX supports three pluggable backends for storing domain, client, and trunk configuration:
- JSON file — Simple and self-contained. Good for development and small deployments.
- HTTP API — Fetch configuration from your own API with token authentication and configurable cache TTL.
- PostgreSQL — For production deployments that need a persistent, queryable configuration store.
All three expose the same interface, so switching between them is a single environment variable change.