Menu
The Menu component plays a set of options to callers and routes each call according to the key the caller presses. It reads the tone a phone sends when a key is pressed, known as a DTMF (Dual-Tone Multi-Frequency) digit. Whatever the caller enters is saved in variables, so later components, or a Condition test, can reuse the value to decide where the call goes next.
You decide when the system stops gathering digits: it can stop once the digit or response timeout is reached, or as soon as the caller presses a configured end key. To prompt callers for input, attach one or more audio prompts or a text-to-speech message.

Prompt types
Section titled “Prompt types”The component can play any of the following prompt types to guide the caller.
| Prompt type | What it plays |
|---|---|
| Custom Prompt | An existing custom prompt, or a new one you record from an extension or upload as an audio file. |
| Music on Hold (MoH) | An existing Music on Hold playlist. |
| Text to Speech (TTS) | Text you supply, spoken in the language and voice style you choose. |


End keys
Section titled “End keys”An end key tells the system the caller has finished entering digits. You can use #, *, a numeric key, or no key at all, and you set it under Call Flow Designer > Options.

Configure the component
Section titled “Configure the component”After you drop the Menu component onto a call flow, you can set the prompt and digit timeout, the retry behavior for invalid input and for response timeouts, and the keys that map to each menu option.
Set the prompt and digit timeout
Section titled “Set the prompt and digit timeout”-
Click the Menu component to open its settings.

-
Choose a prompt to instruct callers, then complete its fields.
Custom Prompt

-
Click Custom Prompt.
-
Specify the prompt or prompts:
-
Select an existing prompt from the Prompt list.
-
Or add a new one: click Record New to record from an extension, or Upload to add an audio file.
-
-
Optional: select Enable Loop Playback to repeat the prompts.
Music on Hold (MoH)

-
Select Music on Hold.
-
Choose a playlist from the Music on Hold list.
Text to Speech (TTS)

-
Select Text to Speech.
-
Fill in the remaining fields so the system can turn your text into speech. You can use static or dynamic text:
-
Static text: type the wording straight into the Text field.
-
Dynamic text: type the wording and add placeholders backed by variables so the message is built on the fly. You can also set a prompt-generation timeout; if the speech is not ready in time, the caller moves to the next component without hearing a prompt.

The generated speech is saved and synced to PBX Settings > Voice Prompt > Custom Prompt.
-
-
-
In the Digit Timeout(s) field, set how long to wait for the caller’s next digit. Pick a value from the list or enter one between 1 and 9999.
-
Click Confirm in the bottom-right corner.
Set a retry strategy for no match
Section titled “Set a retry strategy for no match”Give callers another chance at the menu when their input does not match any option.

- Click the No Match branch.
- Select Return to Menu.
- In the Return Count list, choose how many times a caller can come back to the component after a no-match result.
- Optional: add an audio prompt or text-to-speech message that tells the caller to try again.
- Click Confirm in the bottom-right corner.
Set the response timeout and retry strategy
Section titled “Set the response timeout and retry strategy”Adjust how long the component waits for the caller to act, and let them retry when that time runs out.

- Click the Response Timeout branch.
- In the Component Response Timeout(s) field, set how long to wait for the caller. Pick a value from the list or enter one between 1 and 9999.
- Set the retry behavior for a timeout:
- Select Return to Menu.
- In the Return Count list, choose how many times a caller can come back to the component after a timeout.
- Optional: add an audio prompt or text-to-speech message that tells the caller to try again.
- Click Confirm in the bottom-right corner.
Set keys for menu options
Section titled “Set keys for menu options”-
Click the add button
on the component to create a branch for a key.
-
Click the new branch and complete its settings.

Setting What to do Enter values to match Enter the value that maps to this branch. Only digits and the characters *and#are allowed. Make sure the value does not clash with the end key set under Call Flow Designer > Options > End Key: if it does, the input is treated as invalid and sent to the No Match destination.Return to Menu Select Return to Menu, then choose a Return Count for how many times the caller can come back to the component. Optionally add a prompt or text-to-speech message that asks the caller to try again. This is useful for replaying the menu when a caller fails to make a selection. -
Click Confirm in the bottom-right corner.
Component variables
Section titled “Component variables”Each Menu component stores the caller’s input in variables. You can reference these in expression-aware components such as Condition to read the value and route the call accordingly.
| Variable | Type | Description | Example |
|---|---|---|---|
$Menu{index}.result | String | The outcome of the component:MenuResult.Timeout, no digit was pressed before the timeout, so the call went to the timeout destination.MenuResult.ValidOption, a valid key was pressed and the call went to its destination.MenuResult.InvalidOption, an invalid key was pressed and the call went to the no-match destination. | $Menu1.result(STRING)=MenuResult.InvalidOption |
$Menu{index}.ttsResult | String | The text-to-speech outcome:MenuTTSResult.Success, the text became speech and was played to the caller.MenuTTSResult.Timeout, the text was not converted in time, so the caller moved to the next component without a prompt. | $Menu1.ttsResult(STRING)=MenuTTSResult.Success |
$Menu{index}.userInput | String | The DTMF digits the caller pressed, excluding the end key set under Call Flow Designer > Options > End Key. | "2" |
Connect the branches
Section titled “Connect the branches”The Menu component includes two built-in branches, No Match and Response Timeout, plus up to 100 more branches for DTMF keys. Each branch connects to exactly one downstream component, chosen from the list below.
| Component | What it does |
|---|---|
| Prompt | Plays an audio prompt or a text-to-speech message to the caller. |
| Business Hours | Routes the call to different destinations based on the time of day. |
| Menu | Offers another set of options and routes on the DTMF digit the caller presses. |
| User Input | Collects DTMF digits from the caller, usually paired with Condition to route on what was entered. |
| Language | Switches the system-prompt language for the components that follow. |
| Record | Starts recording once the caller connects to another party, with optional notice prompts, or disables recording for a call that would otherwise be recorded. |
| Dial by Number | Lets callers dial a number directly to reach their destination. |
| Dial by Name | An end component that lets callers reach a user by typing the first three letters of their name. |
| Transfer | An end component that hands the caller to a set destination, with an optional prompt announcing the transfer. |
| Hang Up Call | An end component that disconnects the caller. |
| Condition | Routes calls according to logical expressions. |
| Loop | Repeats a group of components a set number of times or until a condition is met. |
| Internal Data Ops | Reads from and writes to the PBX’s built-in database. See Get Extension Presence Status, Set Extension Presence Status, Get Queue Agent, Get Queue Info, Get Agent Status, Set Agent Status, Get System Info, Get System Capacity, Get Extension Info, and Get Company Contact Info. |
| Email Sender | Sends email for real-time notifications, alerts, or user-specific information. |
| Database Access | Runs SQL against a database mid-call to read or update data. |
| HTTP Request | Sends HTTP requests to external servers to exchange data with third-party services. |