DTMF Architecture
DTMF is supported for pipeline voice agents through the Kore Voice Gateway. Currently, it is not available for realtime voice agents. The platform exposes DTMF functionality through three built-in system tools:
These tools are implemented by the platform runtime and require no HTTP endpoint or custom tool implementation.
How DTMF Works
When a caller presses a key during a voice call, the tone is detected by the voice gateway and delivered directly to the Artemis runtime. The process follows these steps:DTMF Capabilities
Enabling DTMF Capabilities
As discussed above, the DTMF feature is built-in and can be implemented by the system tools. To use these tools within your agent, add the tools definition to the Tools section of the ABL file.DTMF Tools
Presenting an IVR Menu
Useivr_menu when callers need to select from a numbered menu.
The tool plays a prompt, waits for a single keypad press, and maps the selected digit to a workflow step or intent.
Tool Definition
Example
Collecting Multi-Digit Input
Useivr_digit_input when callers must enter a sequence of digits.
The tool continues collecting digits until one of the following occurs:
- Maximum digits reached
- Ending key pressed
- Inter-digit timeout expires
noInputConfig Sub-fields
noMatchConfig Sub-fields
Example
Sending DTMF to External IVRs
Usesend_dtmf when Artemis needs to navigate another IVR after a call has been established.
Typical examples include:
- Selecting a department
- Navigating hospital booking systems
- Banking IVRs
- Telecom IVRs
- Legacy call routing systems
send_dtmf transmits keypad tones rather than collecting them.
How it works
During an active voice call, the agent can decide to send DTMF digits, for example after recognizing it has reached an IVR menu:
send_dtmf behaves like any other tool available to the LLM: during an active call, the model decides when to call it and what digits to pass, based on the conversation so far and your agent’s GOAL, PERSONA, and INSTRUCTIONS. For example, an INSTRUCTIONS line such as “When the IVR menu asks you to select a department, call send_dtmf with the digit for that option” steers the model without hardcoding the digits at author time.
Example
Pauses inside a call flow (for example, waiting for an IVR menu to finish playing before sending digits) are handled as separate wait steps, not by embedding non-DTMF characters in `digits.
Status Codes
A successful
VOICE_DTMF_DISPATCHED result means the platform sent the tones — it does not confirm that the far-end IVR accepted or acted on them. There is currently no delivery acknowledgment or automatic retry.
Privacy and Evidence
DTMF digits can carry sensitive information such as PINs or account numbers. Runtime traces, eval run artifacts, and Studio inspection show only a redacted digit count and status — never the raw digits sent during a call.Known Limitations
- Kore.ai Voice Gateway (KoreVG) is the only supported provider in this release.
- No provider delivery acknowledgment or automatic retry is available for this method.
- No pause syntax inside
digits; model pauses as separate wait steps.
Best Practices
- Use
ivr_menufor single-choice menus. - Use
ivr_digit_inputfor collecting structured numeric data. - Use
send_dtmfonly after the external IVR is ready to receive keypad input. - Enable barge-in where faster caller interaction is desired.
- Validate all tool results before continuing the workflow.
- Always provide a fallback or escalation path for invalid input or DTMF failures.
- Include DTMF tools only in voice-enabled agents.