Enable DTMF support for your voice-enabled copilot
Instead of relying on voice responses, dual-tone multi-frequency (DTMF) allows you to ask your copilot users to use their phone keypad to select options or provide information.
You can set up a global command triggered at any point in the conversation if the copilot user enters a specified single-digit key. Within individual topics, you can add DTMF input recognition for the responses provided in a Question node.
You can configure what key should be pressed for each option that the user can input and how long the copilot should wait before parsing the user's input.
If the key input by the copilot's user isn't mapped to the node's options, the copilot repeats the question or message and encourages the user to try again.
If the key input by the copilot's user isn't mapped to the DTMF global triggers, the copilot triggers the System topic, Unknown dialpad press trigger (voice). You can customize it for your business logic.
Enable DTMF support in a topic's node
With the topic you want to use as the global DTMF response open for editing, select the Trigger node.
Hover over or long select on the side of the Trigger node (where the current type of trigger is displayed) to see the Change trigger icon.
Select the icon and then enter "DTMF" to choose DTMF global command received.
Select Edit and in DTMF received properties, specify the type of recognized DTMF input, along with any conditions for the trigger, and its priority.
With a Question node selected, under the Identify section, select the type of entity that the copilot should be identifying. Different entity types have distinct characteristics for supporting DTMF tones:
Entity (under Identify) DTMF support Details Multiple choice options ✔️ Manually assign a DTMF key to each option Options from a list variable ✔️ Automatically assign DTMF keys for each option User's entire response 🔢 Can accept multi-digit DTMF input Age 🔢 Can accept multi-digit DTMF input Boolean ✔️ Automatically assign DTMF keys for each option City ✖️ DTMF not supported Color ✖️ DTMF not supported Continent ✖️ DTMF not supported Country or region ✖️ DTMF not supported Date 🔢 Can accept multi-digit DTMF input Date and time ✖️ DTMF not supported Data and time without timezone ✖️ DTMF not supported Duration ✖️ DTMF not supported Email ✖️ DTMF not supported Event ✖️ DTMF not supported Language ✖️ DTMF not supported Money 🔢 Can accept multi-digit DTMF input Number 🔢 Can accept multi-digit DTMF input Ordinal 🔢 Can accept multi-digit DTMF input Organization ✖️ DTMF not supported Percentage 🔢 Can accept multi-digit DTMF input Person name ✖️ DTMF not supported Phone number 🔢 Can accept multi-digit DTMF input Point of interest ✖️ DTMF not supported Speed 🔢 Can accept multi-digit DTMF input State ✖️ DTMF not supported Street address ✖️ DTMF not supported Temperature 🔢 Can accept multi-digit DTMF input URL ✖️ DTMF not supported Weight 🔢 Can accept multi-digit DTMF input Zip code 🔢 Can accept multi-digit DTMF input
Assign DTMF keys
For some entity types, you can specify if the options provided by the copilot to the user are mapped to a DTMF key:
For the Multiple choice options entity, manually assign DTMF keys to each option by selecting the Assign DTMF keys to options checkbox. When this checkbox is selected, you see an icon representing a phone's keypad next to the Options for user heading.
For each option you add, select the - icon and specify the DTMF signal that the option should be mapped to.
For the Options from a list variable and Boolean entity types, the DTMF keys can be automatically assigned to each option.
The copilot assigns keys in the order that the options are in, from 0 to 9.
You can have the copilot automatically read out the mapped options:
Select the More icon (…) of the Question node you want to configure, and then select Properties. The Question properties panel appears.
Select Entity recognition, and then select whether the copilot should read out the options to the copilot user.
Multi-digit DTMF input
For entities that support multi-digit DTMF input, you can specify if there should be a minimum or maximum number of digits in the copilot user's valid response. These multi-digit DTMF input entities include most entity types that extract a number from the copilot user's input. You can specify a range for the number of digits that are considered valid (such as "2-5"), or a fixed length (such as "5").
If the entered response from the copilot user has fewer or more digits than specified, then the copilot repeats the question.
If you don't specify the number of digits, then the copilot accepts any length of digits and continues the topic's flow.
You can also specify if the copilot should wait for a specific "termination" key to be pressed to indicate the copilot user finished entering their response. You can select no key, the asterisk key (*), or the hash key (#). The termination character is optional, and isn't included when counting the length of the input.
Copilot-level DTMF recognition
You can configure what key should be pressed for each option that the user can input and how long the copilot should wait before parsing the user's input.
Important
The DTMF received trigger can only accept single DTMF keys. The trigger won't be called if the copilot user enters the key when responding to:
- A Question node that accepts multi-digit DTMF
- A Question node that accepts single-digit DTMF where one of the allowed options is mapped to the same key
With the topic you want to use as the global DTMF response open for editing, select the Trigger node.
Hover or long-select on the side of the Trigger node (where it shows the current type of trigger) to see the Change trigger icon.
Select the icon and then choose DTMF global command received.
In the DTMF received properties panel that opens, specify the DTMF input that should be recognized along with any conditions for the trigger and its priority.
DTMF caching
DTMF caching allows a copilot user to input keys without waiting for each question or prompt from the copilot. For example, caching is useful for copilot users who are familiar with the copilot's usual conversation path, and want to go straight to a specified menu.
With DTMF caching, each key press is cached in series, and automatically input for each consecutive prompt.
For a single-digit DTMF node, all keys input after the first one are cached for the next turn.
For multi-digit DTMF nodes, the copilot follows a set of rules that determine how and what to cache based on these settings:
Scenario | Digit length | Condition | User input | Outcome |
---|---|---|---|---|
Copilot author didn't set a termination character so the timeout is ignored. When the user hits the max length, the key after max length (the last digit) is cached for the next turn. | 3 | Term time is 0 or Term key is none | 1, 2, 3, 1, ... | The first three digits are returned immediately, while the fourth digit is cached for the next turn. |
Copilot author set the termination character. The key input after timeout is cached for the next turn. | 3 | Term key is # | 1, 2, 3, 1 | The first three digits wait for the termination timeout before being returned. The fourth digit is cached for the next turn. |
When the user hits the max length, the termination timeout runs. | 3 | Term key is # | 1, 2, 3, then during the timeout window, 1 | The first four digits are returned; however as this question only accepts three digits, the entire input sequence is considered to be invalid, and the copilot reprompts the question. |
User doesn't hit the max length (valid length). The key input after the interdigit timer is cached for the next turn. | 2-5 | Doesn't matter if a term key is defined | 1, 2, 3, then after the timeout, 1 | The first two digits wait for the interdigit timer before being returned, and the third and fourth digits are cached for the next turn. |
DTMF caching is handled in the following ways:
- If the next turn doesn't allow barge-in, the cached key is dropped.
- If the next turn allows barge-in, the key is handled according to its flow:
- If the flow consists of multiple message nodes, but is followed by a multi-DTMF question node, keys are cached for this multi-DTMF question only. The global DTMF topic aren't triggered.
- If the flow consists of multiple message nodes, but is followed by a single DTMF question node, the key is cached for a single DTMF key. Also, the DTMF global topic is cached. However, if they overlap, the single DTMF question node wins.
- If the flow consists of multiple message nodes without any question, the key is cached for the DTMF global topic.
Tip
To avoid accidental caching, do the following:
- Place the node with the barge-in disabled message right after the question node.
- Use a multi-DTMF question node with a longer term timer (notice this increases the latency to the end user if the user doesn’t input a termination key).