Skip to main content

IVR Menus

IVR (Interactive Voice Response) menus provide automated phone navigation. Callers press digits on their keypad to route their call.

Purpose​

Use this module to:

  • Build menu trees with digit-based options
  • Play audio files, remote URLs, or text-to-speech greetings
  • Configure timeouts and invalid-input handling
  • Set failover destinations

Audio Sources​

A menu must have exactly one audio source:

SourceDescription
RecordingAudio file uploaded to MinIO
Remote URLExternal audio file URL
Text-to-SpeechPlain text rendered by Cloudonix TTS

Option Destination Types​

Each menu option routes to one of:

TypeDescription
ExtensionA specific extension
Ring GroupA ring group
Conference RoomA conference room
IVR MenuA sub-menu
Business HoursA business hours schedule
AI AssistantAn AI assistant
AI Load BalancerAn AI load balancer

Failover​

After max_turns invalid inputs, the call routes to the failover destination. The failover supports the same destination types as options, plus hangup, except business hours.

Permissions​

ActionOwnerPBX AdminPBX UserReporter
View IVR menusYesYesYesYes
Create IVR menusYesYesNoNo
Update IVR menusYesYesNoNo
Delete IVR menusYesYesNoNo

UI Workflow​

Create an IVR Menu​

  1. Navigate to IVR Menus in the sidebar
  2. Click Create IVR Menu
  3. Enter a name
  4. Choose an audio source (recording, URL, or TTS)
  5. Configure max_timeout, inter_digit_timeout, and max_turns
  6. Add menu options with digit input and destinations
  7. Set a failover destination
  8. Save

Toggle Status​

Use the status toggle to enable or disable a menu. Disabled menus are not used for routing.

Key Data Fields​

ivr_menus Table​

ColumnTypeNotes
idbigintPrimary key
organization_idFKTenant scope
namestringMenu name
audio_file_pathstring nullableAudio URL or MinIO path
tts_textstring nullableTTS content (max 1000)
tts_voicestring nullableVoice identifier
max_timeoutintegerWait for first input (1-30s)
inter_digit_timeoutintegerBetween digits (1-30s)
max_turnsintegerReplays on invalid input (1-9)
failover_destination_typeenumWhere to route after max turns
failover_destination_idinteger nullableTarget entity ID
statusenumactive, inactive

ivr_menu_options Table​

ColumnTypeNotes
ivr_menu_idFKParent menu
input_digitsstringDTMF digits (1-10 chars)
descriptionstring nullable
destination_typeenumTarget type
destination_idintegerTarget entity ID
priorityintegerDisplay order (1-20)
MethodEndpointPurpose
GET/v1/ivr-menus/voicesList available TTS voices
GET/POST/PUT/DELETE/v1/ivr-menus[/{ivrMenu}]Standard CRUD
PATCH/v1/ivr-menus/{ivrMenu}/toggle-statusToggle active status

See the OPBX REST API reference for full schemas.