Skip to content

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.

Menu component placed on the call-flow canvas

The component can play any of the following prompt types to guide the caller.

Prompt typeWhat it plays
Custom PromptAn 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.

Music on Hold entries available to the component

Text-to-Speech turned on under the AI integration

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.

End key option in the Call Flow Designer settings

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.

  1. Click the Menu component to open its settings.

    Opening the Menu component to configure it

  2. Choose a prompt to instruct callers, then complete its fields.

    Custom Prompt

    Custom prompt fields on the Menu component

    1. Click Custom Prompt.

    2. 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.

    3. Optional: select Enable Loop Playback to repeat the prompts.

    Music on Hold (MoH)

    Choosing Music on Hold for the Menu component

    1. Select Music on Hold.

    2. Choose a playlist from the Music on Hold list.

    Text to Speech (TTS)

    Text-to-Speech fields on the Menu component

    1. Select Text to Speech.

    2. 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.

        Example of dynamic text assembled from variables

      The generated speech is saved and synced to PBX Settings > Voice Prompt > Custom Prompt.

  3. 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.

  4. Click Confirm in the bottom-right corner.

Give callers another chance at the menu when their input does not match any option.

No Match branch settings on the Menu component

  1. Click the No Match branch.
  2. Select Return to Menu.
  3. In the Return Count list, choose how many times a caller can come back to the component after a no-match result.
  4. Optional: add an audio prompt or text-to-speech message that tells the caller to try again.
  5. 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.

Response Timeout branch settings on the Menu component

  1. Click the Response Timeout branch.
  2. 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.
  3. Set the retry behavior for a timeout:
    1. Select Return to Menu.
    2. In the Return Count list, choose how many times a caller can come back to the component after a timeout.
    3. Optional: add an audio prompt or text-to-speech message that tells the caller to try again.
  4. Click Confirm in the bottom-right corner.
  1. Click the add button Add branch icon on the component to create a branch for a key.

    Adding a key branch to the Menu component

  2. Click the new branch and complete its settings.

    Configuring a key branch on the Menu component

    SettingWhat to do
    Enter values to matchEnter 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 MenuSelect 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.
  3. Click Confirm in the bottom-right corner.

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.

VariableTypeDescriptionExample
$Menu{index}.resultStringThe 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}.ttsResultStringThe 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}.userInputStringThe DTMF digits the caller pressed, excluding the end key set under Call Flow Designer > Options > End Key."2"

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.

ComponentWhat it does
PromptPlays an audio prompt or a text-to-speech message to the caller.
Business HoursRoutes the call to different destinations based on the time of day.
MenuOffers another set of options and routes on the DTMF digit the caller presses.
User InputCollects DTMF digits from the caller, usually paired with Condition to route on what was entered.
LanguageSwitches the system-prompt language for the components that follow.
RecordStarts 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 NumberLets callers dial a number directly to reach their destination.
Dial by NameAn end component that lets callers reach a user by typing the first three letters of their name.
TransferAn end component that hands the caller to a set destination, with an optional prompt announcing the transfer.
Hang Up CallAn end component that disconnects the caller.
ConditionRoutes calls according to logical expressions.
LoopRepeats a group of components a set number of times or until a condition is met.
Internal Data OpsReads 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 SenderSends email for real-time notifications, alerts, or user-specific information.
Database AccessRuns SQL against a database mid-call to read or update data.
HTTP RequestSends HTTP requests to external servers to exchange data with third-party services.