Menu

Menus, also known as IVRs allow you to create branches in the callflow based on the caller’s input.

Overview

Menus essentially play a prompt, then branch based on caller DTMF input. The actual menu callflow has just two options because Menus are managed separately, created and updated by API.

Using the Menu module

The DTMF entered is matched against the “children” keys and that branch is taken.

Additionally, menu will use the branch keyed timeout when the timeout is reached. Please note this timeout value is from the menu doc, not the interdigit_timeout option in the menu callflow.

{
    "module":"menu",
    "data": {
        "id": "{MENU ID}"
    },
    "children": {
        "1": {"module":"...",...},
        "2": {"module":"...",...},
        "timeout": {"module":"...",...}
    }
}

If no timeout child is specified, the menu is retried (until retries are exceeded).

Schema

Validator for the menu callflow data object

KeyDescriptionTypeDefaultRequiredSupport Level
idMenu ID to usestring()false
interdigit_timeoutAmount of time, in milliseconds, to wait between keypressesinteger()false
skip_moduleWhen set to true this callflow action is skipped, advancing to the wildcard branch (if any)boolean()false

These options are configured by API.

KeyDescriptionTypeDefaultRequiredSupport Level
allow_record_from_offnetDetermines if the record pin can be used by external callsboolean()falsefalsesupported
branch_extensionWhether or not to branch extension when caller dials an extension. If true, when caller dials an extension, call will be branched, once that branch finishes if menu has a default action set, that action will be executedboolean()truefalsesupported
flags.[]string()falsesupported
flagsFlags set by external applicationsarray(string())falsesupported
huntDetermines if the callers can dial internal extensions directlyboolean()truefalsesupported
hunt_allowA regular expression that an extension the caller dialed must match to be allowed to continuestring(1..256)falsesupported
hunt_denyA regular expression that if matched does not allow the caller to dial directlystring(1..256)falsesupported
interdigit_timeoutThe amount of time (in milliseconds) to wait for the caller to press the next digit after pressing a digitinteger(1..10000)falsesupported
max_extension_lengthThe maximum number of digits that can be collectedinteger(1..6)4falsesupported
media.exit_mediaWhen a call is transferred from the menu after all retries exhausted this media can be played (prior to transfer if enabled)`boolean()string(3..2048)`false
media.greetingThe ID of a media object that should be used as the menu greetingstring(3..2048)falsesupported
media.invalid_mediaWhen the collected digits don’t result in a match or hunt this media can be played`boolean()string(3..2048)`false
media.transfer_mediaWhen a call is transferred from the menu, either after all retries exhausted or a successful hunt, this media can be played`boolean()string(3..2048)`false
mediaThe media (prompt) parametersobject(){}falsesupported
nameA friendly name for the menustring(1..128)truesupported
record_pinThe pin number used to record the menu promptstring(3..6)falsesupported
retriesThe number of times a menu should be played until a valid entry is collectedinteger(1..10)3falsesupported
suppress_mediaDetermines if the playing of ‘Invalid Entry’ is suppressed.boolean()falsefalsesupported
timeoutThe amount of time (in milliseconds) to wait for the caller to begin entering digitsinteger(1..60000)falsesupported