Skip to content

User Input

The User Input component captures the DTMF digits (Dual-Tone Multi-Frequency: the tones a phone sends when the caller presses keys) that a caller keys in and saves them for the rest of the flow to use. It works hand in hand with the Condition component: collect what the caller enters here, then branch on that value further down the flow. You decide when collection stops, after a digit or response timeout, or when the caller presses an end key, and you can play a prompt or a spoken message to tell them what to enter.

The User Input component on the call-flow canvas

You can front the input with any of three prompt types.

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)A hold-music track already saved on the system.
Text to Speech (TTS)Text you type, spoken back in the language and voice style you pick.

An end key lets the caller signal that they have finished entering digits. You can use #, *, a numeric key, or no key at all. Set it under Call Flow Designer > Options.

Choosing the end key in Call Flow Designer options

  1. Add the User Input component to your call flow, then click it to open its settings.

    Opening the User Input component to begin configuration

  2. Optional: add a prompt or a spoken message to tell callers what to enter. Follow the section below that matches the prompt type you want.

Selecting one or more custom prompts for the input

  1. Click Custom Prompt.

  2. Choose the prompt or prompts to play.

    • To reuse an existing prompt, pick it from the Prompt list.

    • To add a new one, click Record New to record from an extension, or Upload to add an audio file.

  3. Optional: to repeat the prompt(s) continuously, select Enable Loop Playback.

Selecting a saved hold-music track for the input

  1. Select Music on Hold.
  2. Pick a saved track from the Music on Hold list.

Entering text and choosing a voice for the input prompt

  1. Select Text to Speech.

  2. Write the message and choose its voice style. Both static and dynamic text are supported.

    • Static text: type the message straight into the Text field.

    • Dynamic text: type the message and insert placeholders backed by variables, so the wording is assembled at call time. You can also set how long the system may take to generate the speech and where to route the caller if that limit is hit.

      Example:

      A dynamic text-to-speech message assembled from variables

    The generated speech is stored on the system and synced to PBX Settings > Voice Prompt > Custom Prompt.

  3. Optional: to control what happens when the speech takes too long to generate, select TTS Response Timeout, then attach the next components to the TTS Playback Success and TTS Response Timeout branches.

Tell the component how long to keep listening for digits.

Setting the digit and response timeouts for user input

  • Digit Timeout(s): how long to wait for the caller to key in the next digit. Choose a value from the list, or type one between 1 and 9999.
  • Component Response Timeout(s): how long to wait for the caller to do anything at all. Choose a value from the list, or type one between 1 and 9999.

Click Confirm in the bottom-right corner. The prompt you chose now shows on the component.

The configured prompt shown on the User Input component

Every User Input component stores the caller’s entry in variables. Expression-aware components such as Condition can read those values to decide where the call goes next.

VariableTypeDescriptionExample
$UserInput{index}.resultStringHow the component finished. UserInputResult.Timeout means the caller entered no digits before the timeout and was sent to the timeout destination; UserInputResult.ValidOption means the caller pressed a valid key and was sent to the matching destination.$UserInput1.result(STRING)=UserInputResult.Timeout
$UserInput{index}.ttsResultStringThe text-to-speech outcome. UserInputTTSResult.Success means the text was converted and played to the caller; UserInputTTSResult.Timeout means it was not generated in time, so the caller moved straight on with no prompt.$UserInput1.ttsResult(STRING)=UserInputTTSResult.Success
$UserInput{index}.userInputStringThe DTMF digits the caller pressed, not counting the end key (# or *)."2"

A User Input component connects to one downstream component, or two when TTS Response Timeout is on (one for success, one for the timeout). You can connect any of the components below.

ComponentWhat it does
PromptPlays an audio prompt or text-to-speech message to the caller.
Business HoursRoutes calls to different destinations based on the time of day.
MenuOffers callers a set of options and routes on the DTMF digit they press.
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.