This help page is for Desktop Studio. This information is also available for CXone Studio.

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 13. 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 prerecorded 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.


Comparison of Similar Actions

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

Input Properties

These properties define data that the action uses when executing.




Change the Caption to something that uniquely identifies this action in the script. The IVR Press Path report includes the action name and caption. 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 audio file is located in a different folder, include the path to the file. For example, if the script is in the root folder and the audio file is in a subfolder two levels down, enter "Subfolder\Subfolder2\Audio-file.wav". If the script is in a subfolder one level down from the root and the audio file is in a different subfolder on the same level, enter "\..\Subfolder\Audio-file.wav".

If the prompt is TTS, click the ellipsis button A series of three dots in a row. 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}"

For more information about formatting prompts in this property, see the Prompts page. You can also double-click the action on the canvas to open the Sequence Editor to create your prompt.


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.

When enabled, this option clears the buffer when the action begins. Any key presses that happened earlier in the script will not be passed into this action. If you disable this option, the action processes and acts on any DTMF tones passed to the action through the buffer. Set to True to enable or False to disable. When DTMF tones are passed into this action, the script immediately takes the path for the OnDigit branch condition.

Set to True to enable this option or False to disable it.


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.

Result Branch Conditions

Result branch conditions allow you to create branches in your script to handle different outcomes when an action executes.




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 for the number of seconds or milliseconds 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 branch for each option using variable branch conditions.

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

Script Example

This is an example to show how this action can be used in scripts. It is not intended to be a complete script. Additional scripting may be required.

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.

A portion of a script showing how to use the MENU action.

Would you like to download this script?