The three simple routing modes cover most cases. When you need something they cannot express — a lookup mid-call, a payment, a branch on collected input — use automation flow mode and build the call as a workflow.
Inside that workflow, these actions operate on the live call.
The actions
| Action | What it does |
|---|---|
ivr_speak | Say something with text-to-speech |
ivr_play_audio | Play an audio file from a URL |
ivr_collect_input | Collect keypad digits or speech |
ivr_menu | Present a keypad menu |
ivr_transfer | Transfer to a phone, agent or queue |
ivr_forward | Ring a forwarding group |
ivr_record | Record the caller |
ivr_voicemail | Take voicemail, with transcription and notification |
ivr_send_sms | Send an SMS during the call |
ivr_send_email | Send an email during the call |
ivr_ai_assistant | Hand the call to the AI voice assistant |
ivr_twilio_pay | Collect a payment, PCI-compliant |
ivr_hangup | End the call, with an optional message |
Variables
Every action interpolates {{variable}}, so what you say can reflect what you know:
| Variable | Value |
|---|---|
{{caller}} | The caller's number |
{{calledNumber}} | The number they dialled |
{{callSid}} | The call's id |
{{variables.xyz}} | Anything collected earlier |
Collected input is stored under a name you choose, then read back the same way. That is how a flow asks for an account number and then uses it.
ivr_speak "Thanks. Looking up account {{variables.accountNumber}}."Collecting input
ivr_collect_input accepts keypad digits, speech, or both. Speech matters for anything longer than a few digits — nobody types a postcode on a phone keypad willingly.
Menus support retries and an invalid-input message, so a mistyped digit re-prompts instead of dropping the caller.
Payments on a call
ivr_twilio_pay collects card details in a PCI-compliant way. The digits go to the payment processor directly rather than through your flow, so card numbers never enter your logs or recordings.
If call recording is on, make sure it pauses while card details are entered. The pay action handles the card data itself, but a recording running alongside can capture the caller reading numbers aloud. Recording configuration supports pause and resume for exactly this.
Handing off to the AI
ivr_ai_assistant passes the live call to the AI voice assistant over a realtime connection. Use it as a fallback when a flow reaches something it cannot handle, rather than sending the caller to voicemail.
Webhooks
Call progress arrives as webhooks — recording completion carries the execution and the step to resume at, so a flow can wait for a recording and then continue.
Choosing between the modes
Use a simple menu when the options are fixed and lead somewhere.
Use AI assistant when callers ask for things in their own words.
Use automation flow when the call needs to do something — look up an order, take a payment, branch on an answer, write a record.
A flow can call the AI, and the AI can transfer into a group, so the modes compose rather than competing.