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
| Outputs | one, taken whether the caller dialed anything or not |
| Fields | Variable (result), Message (optional), Number of digits, Timeout (s) |
| Number of digits | from 1 to 20, 1 by default |
| Timeout | 3, 5, 10, 15, 20 or 30 seconds, 5 by default |
| Effect on the call | the 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
| Field | What is expected | If you leave it empty |
|---|---|---|
| Variable (result) | the name to store the entry under, in unaccented letters, digits and underscores | the 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 none | one second of silence, then the wait, with no word for the caller |
| Number of digits | from 1 to 20 | 1 |
| Timeout (s) | 3, 5, 10, 15, 20 or 30 seconds | 5 |
Steps
- Place the DTMF entry module and connect the previous node to its input.
- Open it and name the Variable (result), for example
file. - Choose the Message (optional) from your announcements. It should tell the caller what to dial and how many digits.
- Set the Number of digits to the actual length of what you expect.
- Set the Timeout (s). Five seconds is enough for a short code, more for a long reference to look up on a document.
- Click Save, then connect the single output to the rest of the plan.
- Place a Debugging module right after, with the message
file={{file}}, to read what was actually dialed. - Handle an empty entry: a Condition (If) with the "is empty" operator on
{{file}}lets you replay the announcement or switch to a human. - Click Save, then Apply changes in the top banner.
- 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