Axivox User guide
Back to the site

DTMF entry

Reads the keys dialed by the caller and stores the result in a variable: a customer code, a file number, a reference to check afterward.

In brief

Outputsone, taken whether the caller dialed anything or not
FieldsVariable (result), Message (optional), Number of digits, Timeout (s)
Number of digitsfrom 1 to 20, 1 by default
Timeout3, 5, 10, 15, 20 or 30 seconds, 5 by default
Effect on the callthe module answers the call if it wasn't already answered

The help text shown in the window is: "Reads the caller's DTMF keys and stores the entered value in a variable (usable via {{name}})."

How it works

DTMF is the technical name for the tones a phone keypad emits. The module listens for these tones, assembles the digits dialed and stores them in a variable that you name.

It first plays the announcement you chose. The caller can dial during the announcement: it stops at the first digit. Entry ends when the expected number of digits is reached, or when the delay runs out.

Then, in every case, the call continues through the module's single output. No entry is not an error: it produces an empty variable, which is up to you to test further on, with a Condition (If) or a Switch / Case.

What to fill in

FieldWhat is expectedIf you leave it empty
Variable (result)the name to store the entry under, in unaccented letters, digits and underscoresthe entry is read but stored nowhere, and the module serves no purpose
Message (optional)the announcement inviting the caller to dial, chosen from your sounds; an entry at the top of the list plays noneone second of silence, then the wait, with no word for the caller
Number of digitsfrom 1 to 201
Timeout (s)3, 5, 10, 15, 20 or 30 seconds5

Steps

  1. Place the DTMF entry module and connect the previous node to its input.
  2. Open it and name the Variable (result), for example file.
  3. Choose the Message (optional) from your announcements. It should tell the caller what to dial and how many digits.
  4. Set the Number of digits to the actual length of what you expect.
  5. Set the Timeout (s). Five seconds is enough for a short code, more for a long reference to look up on a document.
  6. Click Save, then connect the single output to the rest of the plan.
  7. Place a Debugging module right after, with the message file={{file}}, to read what was actually dialed.
  8. Handle an empty entry: a Condition (If) with the "is empty" operator on {{file}} lets you replay the announcement or switch to a human.
  9. Click Save, then Apply changes in the top banner.
  10. Call your number, dial a code, then open the plan's Debug log and compare the value written to what you typed.

If it doesn't work

The variable is empty even though the caller dialed something. First check that the Variable (result) field does carry a name, and that this name is written identically between braces further on. Then check the delay: too short, it expires before the caller has finished dialing.

A code made only of zeros is never recorded. This is a known limitation of the module: an entry made only of zeros cannot be distinguished from no entry at all, and the variable stays empty. A zero at the start of a longer code, on the other hand, is kept correctly. Avoid codes made entirely of zeros.

The caller hears nothing and doesn't know what to do. No Message (optional) is chosen: the module waits after one second of silence. Choose an announcement, and state the expected number of digits in it.

Entry drags on even though I set six digits. The caller dialed fewer. The module then waits out the full delay before continuing. Reduce the Timeout (s), or announce the expected length more clearly.

The call cuts off after the entry. The single output is not connected to anything. A module whose chosen output leads nowhere ends the call, even when the entry went fine.

How the call flow is built, explained in pictures

See the Dial plans page