Programmable Voice
Programmable voice lets your own software drive a call. When a call comes in, VoicerOnePBX asks a URL you control what to do, and you answer with a short script of verbs — speak this, collect a digit, record, transfer. If you've used Twilio's TwiML, this will feel familiar; VoicerOnePBX speaks both a JSON form and literal TwiML.
Three complete, runnable apps — an auto attendant, a survey, and a spoken support search — are written out in Python, Swift and Go on the Full Examples page, ready to download and run.
How it works
- A call is routed to a "programmable voice" destination. The PBX
POSTs the call details to your control URL. - You reply with a Call Control Document — an ordered list of verbs.
- The PBX runs them in order, then calls you back for the next step (e.g. after collecting a digit).
The verbs
| Verb | Does |
|---|---|
say | Speak text to the caller (text-to-speech). |
play | Play an audio file from a URL. |
gather | Collect keypad digits (or speech) and post them back. |
record | Record the caller and post the recording. |
route / forward | Send the call to an extension, queue or number. |
reject / hangup | Decline or end the call. |
redirect | Hand control to another URL. |
stream | Fork the live call audio to a WebSocket (for voice bots / real-time AI). |
Example (JSON)
[
{ "say": { "text": "Welcome to Acme. Please say why you're calling after the tone." } },
{ "gather": { "input": "speech", "actionUrl": "https://app.example.com/handle" } }
]
The same flow can be expressed as Twilio-style TwiML (<Response><Say>…</Say>…</Response>)
if that's what your tooling produces.
Outbound, too
You're not limited to inbound calls. Your software can ask the PBX to place a call and then
drive it with the same verbs via POST /api/voice/originate — great for reminders, notifications and
outbound campaigns.
Requests to your control URL are HMAC-signed (like webhooks), and the URLs the PBX will call back are guarded against being pointed at internal/metadata addresses.