Amulya Parmar
12/27/2025, 4:01 AMVapi Support Bot
12/27/2025, 4:02 AMvapi.send, you can send a tool call with the DTMF function and a sequence of keys (including pauses for reliability). Here’s an example:
js
vapi.send({
type: "tool_call",
tool: "dtmf",
arguments: { keys: "1w2w3#" } // 'w' adds a 0.5s pause between digits
});
This will send the DTMF tones 1, 2, 3 with short pauses, as recommended for IVR navigation (according to the documentation I have found at https://docs.vapi.ai/ivr-navigation).
Source:
- [IVR Navigation](https://docs.vapi.ai/ivr-navigation)Amulya Parmar
12/27/2025, 6:01 AMAmulya Parmar
12/27/2025, 6:18 AMChiranjeet Mishra
12/29/2025, 6:43 PMw):
js
vapi.send({
type: "tool_call",
tool: "dtmf",
arguments: { keys: "1w2w3#" }
});
- SMS:
js
vapi.send({
type: "tool_call",
tool: "sms",
arguments: {
to: "+15551234567",
body: "Your message here"
}
});
If you need to call the Live Call Control controlUrl directly (like your curl), post to {controlUrl}/control with the same structure Vapi expects for tool calls; for DTMF use a tool_call body containing the dtmf tool and arguments (keys). See IVR Navigation for recommended pauses: https://docs.vapi.ai/ivr-navigation and DTMF tool docs: https://docs.vapi.ai/tools/default-tools