DTMF tool executing but not navigating
# support
a
Call ID: 019a2f5c-96fd-733d-951a-380b38c109ed Assistant ID: 946f4f3a-7490-41c4-bc83-52816850e8a4 Over a month I am facing this issue that dtmf tool is getting executed but it does nothing! I referred all related threads on discord and also set up the system prompt as per the official documentation on IVR guidance of Vapi, but unfortunately it wasn't helpful. I've setup the assistance within Vapi dashboard without any external coding. Can somebody help me with what exactly I need to do to fix this?
v
To improve DTMF navigation, try adding pauses between digits in your DTMF sequence using the
w
character (for a 0.5s pause) as recommended in the IVR Navigation guide. For example, instead of sending
1234#
, use:
Copy code
1w2w3w4#
Update your DTMF tool configuration in the Vapi dashboard to include these pauses—this often resolves IVR recognition issues. For more details, see the [IVR Navigation documentation](https://docs.vapi.ai/ivr-navigation). Source: - [IVR Navigation](https://docs.vapi.ai/ivr-navigation)
j
I can help you fix that. This usually happens when the DTMF tool is triggered but the assistant isn’t actually “listening” for digits—often because the input mode or tool permission isn’t properly linked to the system prompt or the IVR flow is missing a wait_for_dtmf or input_digit context. Did you set your tool type to dtmf and specify a valid tool_name reference in your system prompt or node?
c
Hey! To help track down this issue, could you share: - The call ID - When exactly this happened (the timestamp) - What response you expected to get - What response you actually got instead This would really help us figure out what went wrong!
Hi Amit, I reviewed the call logs, and the issue is clear — the DTMF tool is being called with empty arguments (
{}
), so no digit is actually sent to the IVR. That’s why the tool returns “Success,” but the IVR responds with “Nothing has been selected.” In your tool definition, there are no parameters defined (empty
properties: {}
), which means the AI has no way to specify a digit like “1” or “#”. The model is behaving correctly based on that schema, but the backend isn’t sending any tone. How to fix it: You’ll need to either: 1. Add a digit parameter to the tool definition — for example:
Copy code
"parameters": {
     "type": "object",
     "properties": {
       "digit": {
         "type": "string",
         "description": "DTMF digit to send (0-9, *, or #)",
         "enum": ["0","1","2","3","4","5","6","7","8","9","*","#"]
       }
     },
     "required": ["digit"]
   }
2. Or implement logic on the backend to automatically detect IVR prompts (like “Press 1 for sales”) and send the corresponding digit automatically. Once that’s in place, the DTMF tool should start navigating the IVR as expected.
2 Views