Skip to main content

Description

DTMF tones are the beeps a phone makes when you press a key. Two tools let the assistant use them:
  • DTMF | Send tones — the assistant presses keys on the call. Use it to work through another company’s phone menu (“press 1 for claims”), enter an extension, or answer a “press any key to continue” prompt.
  • DTMF | Read tones — the assistant listens for keys the other party presses and saves them to a variable. Use it when a caller should key in a reference number, a date of birth, or a card-style code rather than say it out loud.
Both are tool steps. Each returns a result you route on, so a script can recover when the far end does not respond.

DTMF | Send tones

Manual Inputs

Digits

The keys to press. You can use 09, *, # and AD (lower case is accepted and treated as upper case). You can also add pauses, which are waits rather than key presses: Spaces are ignored. Up to 64 keys can be pressed in one step; pauses do not count towards that. Any other character is rejected and no tones are sent at all, so the step fails cleanly rather than half-dialling. The field accepts {{...}} variable references, so the sequence can be built earlier in the call:

Inter-tone gap (ms)

How long to wait between one key and the next. The default of 250 is slow enough for most real phone menus. Only lower it (towards 70) for menus you know accept fast entry.

Pre-send delay (ms)

How long to wait before pressing the first key, so a menu prompt can finish speaking before the digits arrive. Around 500 is typical when navigating a menu. The default is 0.

Tone duration (ms)

How long each key is held. The default of 100 suits most systems. Raise it if the far end keeps missing short presses.

Manual Outputs

Conditions

Success (true) — every tone was played on the call. Failure (false) — the digit string contained a character that is not allowed (nothing was sent), or the phone platform reported an error. Route this to a step that gives up on the menu and does something else.

Variables this tool writes

Variables this tool writes: none. DTMF | Send tones has no variable namespace of its own and writes nothing to any {{...}} variable. Its only signal is the boolean result you route on, so branch on the step’s Success and Otherwise conditions rather than reading a variable afterwards. If you want a record of what was pressed, put the sequence in a custom variable of your own before the step and send that variable — for example set {{custom.ivr_digits}} (string, e.g. 2,,1) in a Code Step, then reference it in Digits.

DTMF | Read tones

Manual Inputs

Destination variable

The {{namespace.field}} variable the digits are written into — typically a custom variable such as {{custom.reference_number}}. Type / in the field to insert a variable reference. The variable must already be declared in your account, otherwise the write is dropped. If the caller presses nothing at all, the variable is set to an empty string. It is never left holding an old value from earlier in the call.

Max digits

The tool stops and returns as soon as this many digits have arrived. Use 1 for a menu choice, 6 for a short code, 8 for a date of birth. The default is 1.

First-digit timeout (seconds)

How long to wait for the very first key press. If nothing arrives in this time the tool returns false. The default is 10.

Terminator digit

An optional single key (09, *, #, AD) that ends the capture early — # is the usual choice. The terminator itself is not included in the captured value. Pick a key that cannot appear in the value you are collecting.

Inter-digit timeout (seconds)

Once at least one digit has arrived, the tool ends the capture when this long passes with no further press. Whatever was captured is kept and the tool returns true. The default is 5.

Manual Outputs

Conditions

Success (true) — at least one digit was captured before the timeouts ran out. Failure (false) — nothing at all was pressed within the first-digit timeout. Route this to a step that asks again, or that collects the detail by voice instead.

Variables this tool writes

DTMF | Read tones has no variable namespace of its own. It writes the captured digits into the Destination variable you nominate, and nothing else. The value is the digit string exactly as pressed, with the terminator digit removed. Leading zeros are kept, so 0412 stays 0412. Because it is written even on failure (as an empty string), you can check it safely in a later step without worrying about a stale value — but still route the Otherwise condition, because an empty string is not a useful answer. For the full list of namespaces and fields you can write into, see Variables.

Example Usage

Work through another company’s phone menu:
Collect a reference number from the keypad:

Common Issues

  • Send returns false immediately — the Digits value contains a character that is not a key or a pause. Check for letters beyond AD, brackets, or a variable that resolved to text.
  • The far end misses the digits — raise Tone duration (ms) and Inter-tone gap (ms), and add a Pre-send delay (ms) so the menu prompt has finished.
  • Digits land in the wrong menu level — add pause characters (,, w, W) inside the sequence to wait between menu levels.
  • Read returns true with fewer digits than expected — the gap between presses was longer than the Inter-digit timeout, or the caller pressed the terminator early.
  • The destination variable stays empty — confirm the variable exists in your account and that you selected it with / rather than typing it by hand.

Best Practices

  1. Tell the caller what to do — a short voice step before DTMF | Read tones (“key it in, then press hash”) lifts the success rate a lot.
  2. Always set a terminator when collecting a value of unknown length.
  3. Be generous with the first-digit timeout — people take a moment to move the phone from their ear.
  4. Route the failure path to a voice fallback so a caller on a handset that cannot send tones is not stuck.
  5. Keep menu sequences in a variable when they differ by client or product, so one step serves every case.

Next Steps