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.