Plays a message and adds a menu of choices that the contact can choose from. This action is typically used to give the contact choices that direct how the interaction is handled.

The value that the contact enters is stored in a variable that's created in the action. You can specify a name for this variable in the Variable property. The value this variable holds is used to carry out an action based on the contact's choice.

For example:

  • For Sales, press 1. For Support, press 2. For Billing, press 3.—In this scenario, the contact enters a number 1-3. That number is stored in a variable, which the script uses to direct the contact to the branch corresponding to their choice.
  • Enter your account number followed by the pound sign.—In this example, the account number that the contact enters is stored in a variable. The Menu action might be followed by other actions that use the variable's value to retrieve the contact's account page from a CRMClosed Third-party systems that manage such things as contacts, sales information, support details, and case histories. system and send it to the agent's screen.

Menu can play messages that are pre-recorded audio files, synthesized text-to-speechClosed Allows users to enter recorded prompts as text and use a computer-generated voice to speak the content. (TTS), or a combination of both. Double-click the Menu action to create the prompt you want to use.


  • You must use the proper formatting when entering prompt information in the Sequence property.

  • When the contact presses a number on their keypad to indicate their Menu choice, the script follows the branch for that number, if that number is linked to a branch. If the number is not linked, the script takes the Default branch. If Default isn't connected, the contact could get stuck at Menu and be unable to proceed.

  • If the contact uses a rotary phone, they won't be able to enter DTMFClosed Signaling tones that are generated when a user presses or taps a key on their telephone keypad. tones. They will be stuck at Menu unless you account for this scenario in the script.

  • You must create scripting logic to handle timeouts.

  • Audio files must be uncompressed WAV files with the following properties: 

    • Bit rate—64 kbps
    • Audio sample size—8 bit
    • Channels—1 (mono)
    • Audio sample rate—8 kHz
    • Audio format—CCITT μ-Law

Supported Script Types

The icon for the Phone script type - an old-style phone handset with curved lines indicating sound coming out of it.


Property Details

Best practice for this action is to change the Caption to something that uniquely identifies it. IVR Press Path reports include the name and caption of this action. Descriptive, unique captions make the reports easier to read and understand.


Define the prompt that the action plays. A prompt can be an audio file or text-to-speechClosed Allows users to enter recorded prompts as text and use a computer-generated voice to speak the content. (TTS). If the prompt is an audio file, enter the file name enclosed in double quotes. For example, "greeting.wav".

If the prompt is TTS, click the ellipsis button and enter the text you want the TTS service to read. Each segment must be enclosed in double quotes and include a prefix character to identify the type of information it is. For example: 

"%Your account balance is""silence.wav" "${accountBalance}"


Use this property to document the text that the prompt contains. The script doesn't use the text in this property. Because some prompts can be complex and contain multiple segments, it can be helpful to include the full text written without the formatting required by the Sequence property.


When a contact presses keys on their phone, a DTMF tone is generated and stored in a buffer. ClearDigits allows you to determine how this action handles DTMFClosed Signaling tones that are generated when a user presses or taps a key on their telephone keypad. tones that are in the buffer when the action starts.

The default is True, which clears the buffer when the action begins. Any key presses that happened earlier in the script will not be passed into this action. Set the action to False if you want this action to process and act on any DTMF tones that are passed to this action through the buffer. When DTMF tones are passed into this action, the script immediately takes the path for the OnDigit branch condition.


The maximum number of digits that a user can provide for the action; for example, if the prompt requests the last four digits of a person's ID number, set this value to 4. The default value is 11.

If the prompt calls for a terminator (such as the pound sign, or #), you must account for it in the MaxDigits value. For example, if the recorded menu message asks for the last 4 digits of the social security number "followed by the pound sign", set the value to 5.

When the MaxDigits value is reached, the script continues to execute following the MaxDigits branch, if it's connected.


Enter the character you want the contact to enter to indicate they've finished entering numbers. For example, the pound sign (#) is commonly used as a terminator. If you don't want to use a terminator character with this action, leave this property empty.

The terminator character is stored in the Variable unless you add a minus sign after the character in the Terminator field. For example, #-.

If you specify a terminator character, you must include it in the count of characters in the MaxDigits property. 


The total number of seconds the system waits for input of any type. Time is counted from the point when the Sequence prompt finishes.


The amount of time after the contact enters a number that the system waits to see if the contact enters another number. You must create scripting logic to handle this timeout scenario.


The name of the variable that you want to hold the DTMF digits that the contact enters.

The default, {MRES}, stands for "menu response." You can change it to something more easily recognizable or if you don't want the value to be overwritten by later instances of the Menu action in this script.

You can use the value stored in this variable for decision-making or other purposes in addition to triggering the appropriate branch.


Branch Details


The path taken unless the script meets a condition that requires it to take one of the other branches. It is also taken if the other branches are not defined.

Best Practice: Connect this branch and use it for error handling, such as when the contact presses a number that's not part of the menu. Failure to connect this branch can result in contacts getting stuck when something happens that isn't covered by the other branches.


The path taken when the contact enters the Terminator character.


The path taken when the contact enters the number of characters defined in MaxDigits.


The path taken if there is no response from the contact for the number of seconds specified in the Timeout property.


Path taken when the time specified in the InterDigitTimeout property is exceeded during the caller's DTMF response to a prompt.


Create a custom branch condition for each menu path you offer your contacts. For example, if contacts can press 1, 2, and 3 to reach different departments, create a custom branch condition for each choice.create a branch for each option using variable branch conditions.

Similar Actions

The following actions have similar functions, but with some key differences: 

Tips & Tricks

  • If your script contains multiple Menu actions and they all share the same Variable name, the variable value is overwritten when the next Menu action is processed. If you need to use the value of one of the variables elsewhere in the script, change that Menu action's Variable name.
  • When creating a menu, it is best to name the department first and then the number to dial/speak. Contacts are usually listening for the department name and then the number.
  • Create a branch to repeat the menu options. Use the Loop and Noresponse actions and connect them back to the Menu action.
  • Use the Phrase property to summarize or annotate the prompt's text.
  • If you find that contacts are getting stuck at Menu, verify that the Default branch is connected. The Default branch acts as a catch-all to handle situations where something happens that's not handled by the other branch conditions.
  • The Menu action's behavior is a combination of the Capture, Case, and Play actions.

Phone Script Example Using Menu

In this simple example, the script is triggered by a Begin action (not shown), after which a Menu action plays a message telling the caller to press 1 for Support, 2 for Sales, or 3 for Billing. Based on the button the caller presses on their phone keypad, the script executes a different Reqagent action that requests an agent from the skillClosed Used to automate delivery of interactions based on agent skills, abilities, and knowledge configured in that Reqagent action.

Would you like to download this script?