Skip to main content
Dual-Tone Multi-Frequency (DTMF) enables callers and voice agents to communicate using telephone keypad tones during an active voice call. Artemis provides built-in support for both inbound DTMF (caller-to-agent) and outbound DTMF (agent-to-external IVR), allowing developers to build complete IVR experiences without implementing custom telephony logic.

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:
Unlike speech recognition, DTMF input does not use Automatic Speech Recognition (ASR). Every valid keypress is considered deterministic and is assigned a confidence score of 1.0.

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

Use ivr_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
Input Parameters Example

Collecting Multi-Digit Input

Use ivr_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
Tool definition
Input Parameters noInputConfig Sub-fields noMatchConfig Sub-fields Example

Sending DTMF to External IVRs

Use send_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
Unlike the inbound tools, 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:
Digits are dispatched one at a time, in order, with a configurable pause between digits. Raw digits are never written to logs, traces, eval artifacts, or Studio evidence — only a digit count and a status are recorded. Tool Definition
Once declared, 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
The runtime validates the request before dispatching digits sequentially to the voice provider. Input Parameters
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.
Call-State Behavior 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.
Example The following workflow combines inbound and outbound DTMF.
This pattern is commonly used for appointment booking and external IVR automation.

Best Practices

  • Use ivr_menu for single-choice menus.
  • Use ivr_digit_input for collecting structured numeric data.
  • Use send_dtmf only 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.