> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowyte.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DTMF / Keypad

> Collect keypad digits from a caller during a voice call.

On a voice call, callers can answer with their **keypad** as well as their voice. The agent
recognizes the touch-tones (DTMF) a caller presses and treats those digits as input — the same way
it treats spoken words. This is the right tool when a value is awkward to say out loud or must be
exact: an account or order number, a numeric menu choice, a PIN, or a yes/no confirmation
("press 1 to confirm").

## When to reach for the keypad

* **Exact numbers** — account, order, member, or case IDs where a misheard digit is costly.
* **Quick choices** — "press 1 for billing, 2 for support" style menus.
* **Confirmations** — "press 1 to confirm, 2 to start over."
* **Sensitive entry** — values a caller would rather key in than speak aloud.

## How it works

Keypad input is a property of the **voice** channel — there is no separate setup to turn it on.
During a call the agent listens for both speech and digits, so a caller can press a number when
the agent asks for one. Those digits flow into the conversation just like spoken answers: when a
skill needs a value (for example, an order number for a lookup, or a destination choice for a
transfer), the caller can speak it *or* key it in, and the agent uses whichever it receives.

Because digits become ordinary collected values, you don't build a rigid phone-tree. You describe
what the agent should collect — in the agent's prompt and in each skill's parameters — and the
agent decides when keypad entry makes sense.

<Tip>
  Phrase your prompts to invite it explicitly when precision matters: *"Read me your order number,
  or type it on your keypad."* Callers default to the keypad for long digit strings, which improves
  accuracy.
</Tip>

## Related configuration

| What it controls                                                 | Where                                            |
| ---------------------------------------------------------------- | ------------------------------------------------ |
| Which values a skill collects from the caller (spoken or keypad) | `POST /agents/{agentId}/skills` (`skills:write`) |
| Idle / no-response handling while waiting for input              | `CallControl` on the agent (`agents:write`)      |
| Routing a keyed-in choice to a person                            | Transfer rules — see [Voice](/channels/voice)    |
| What actually happened on a call                                 | `GET /agents/{agentId}/calls` (`calls:read`)     |

<Note>
  Keypad entry is only available on the [Voice (PSTN)](/channels/voice) channel — text
  [Chat](/channels/chat) has no tones to press. Build the same data-collection step into your skill
  parameters and it works across both: spoken in chat, spoken-or-keyed on a call.
</Note>
