Keypad (DTMF)
Keypad (DTMF)
Keypad input lets your application receive keypad presses from a caller or send them to a remote party on a Session. These key presses use dual-tone multi-frequency (DTMF) signals.
When to use
Use keypad input to collect menu choices or digits from callers, or to send DTMF tones to another IVR system.
For inbound input, handle dtmf.received events when each key
press matters. Use Play prompt and collect DTMF
digits when you need a complete response, and
cancel the collection if it should end early. The
completed response is delivered as a digits.collected
event.
For outbound input, use Send DTMF sequence to send keys and timed waits to the remote party, such as when navigating an automated phone menu.
Lifecycle events
The platform emits DTMF (keypad tone) events when callers press keys on their phone keypad. dtmf.received reports individual key presses, and digits.collected reports aggregated results from the DTMF collection command.
Every payload schema below also includes the required aud string, which
identifies the application that should receive the signed event.
dtmf.received
Fired when the caller presses a DTMF key during the call. This event fires independently of any command — individual key presses are reported as they occur during playback, recording, or any other call state.
Payload schema
For example, a dtmf.received event has this payload:
Valid digit values are 0–9, A–D, *, and #. A letter-digit example:
digits.collected
Fired once when a DTMF collection command finishes its single prompt-and-collect cycle. It aggregates the key presses into a single result with a status describing the outcome. The command never retries on its own — your app inspects status and decides whether to re-prompt. See Play prompt and collect DTMF digits.
Event filtering. dtmf.received and
digits.collected are independent webhook events, and by
default both are delivered. Individual dtmf.received events
also fire during digit collection. Use digits.collected
for the final aggregated result and dtmf.received events if
you need per-key feedback as each digit arrives.
Payload schema
Collection statuses
Example — success:
Example — no input:
Example — failure with partial digits:
Example — cancelled:
Triggered by
These events are produced by the following triggers:
dtmf.received— automatic: fires on every DTMF key press during active calls.digits.collected— DTMF collection command.