1. Add short pauses between digits. Sending digits too quickly (e.g., 123456#) can cause missed or misread inputs. Start with 0.5s pauses (w) and increase only if digits are still missed.
2. Wait for menus to finish before responding. If your assistant responds too quickly, it may send tones before the IVR is ready to receive them. Prompt your assistant to:
- Wait for all options to be spoken before sending DTMF
- Reply with a single space " " to stay silent while waiting
- Avoid overlapping speech with IVR audio
[When navigating an IVR tree]
- WAIT for all options to be spoken before proceeding
- Once you have heard all options, use the dtmf tool with an input digit that matches the option you want to select
- Avoid saying anything if using the dtmf tool at the same time
[When waiting]
- Reply with an empty string like " " to ensure nothing is spoken
3. Retry with progressively slower inputs. If digits fail, retry with increased spacing; if tones still fail, fall back to speaking the option aloud:
1st try -> 123# (fast)
2nd try -> 1w2w3# (medium; 0.5s gaps)
3rd try -> 1W2W3# (slow; 1s gaps)
4. Send multiple keypad entries in a single call. For prompts requiring several digits (e.g., by-name directories), send all keys in a single dtmf call with pause characters between them:
{
"function": {
"name": "dtmf",
"arguments": "{\"keys\": \"w2w1w2\"}"
}
}
Multiple separate dtmf calls can arrive too slowly or be partially ignored; a single combined sequence is more consistent.