No Tool Call Webhook Event
# support
n
Hi, I have connected Vapi to my server webhook and I am not recieving
tool-calls
events when AI calls
dialKeypad
function. I know its an Vapi's internal function, but I still would like to know when it is called on a live call. The example call id that happened in
019c227f-df7a-7aaa-a2f1-10aaf5cb8996
, that used the following squad in the call
727dd27d-5f2e-477c-85ec-f1f2a3041f0a
v
Based on the documentation I have found, Vapi only sends
tool-calls
webhook events to your server for custom tools, not for internal functions like
dialKeypad
. This means you will not receive a webhook event when the AI triggers
dialKeypad
during a live call. If you need to track when
dialKeypad
is used, consider adding a custom tool for keypad actions and handling it via your webhook:
Copy code
json
{
  "functions": [
    {
      "name": "customDialKeypad",
      "description": "Dial keypad digits and notify server.",
      "parameters": { "type": "object", "properties": { "digits": { "type": "string" } }, "required": ["digits"] }
    }
  ]
}
This way, you will receive a
tool-calls
event for keypad actions you want to monitor. Reference: Vapi server events documentation ([source](https://docs.vapi.ai/server-url/events)) Source: - [Server events](https://docs.vapi.ai/server-url/events)
j
Hey this is actually expected on Vapi’s side. dialKeypad is a built-in internal function, so it doesn’t fire tool-calls webhook events, even on live calls. That’s why nothing shows up on your server for that call or squad, despite the action happening. If you need awareness, the usual workaround is logging intent via a custom tool before triggering it, or inferring it from call events or transcript timing. Do you mainly need this for tracking/analytics, or do you need your backend to react when keypad dialing happens? @N3squik
n
Hi @James Christopher , thank you for the response. I need it so my backend can react to it (i.e. show to the user what keypad was pressed). It would be really useful if a tool-calls events would be send even for internal tools (keeping it consistent). As a workaround, what other events can I leach on to tell what dialKeypad was called? Transcript does not have that kind of information and I do not want to clutter my prompt with another tool call just for this. Thank you again for looking into this!
c
There are a few options you can use. 1. Instead of the default tool, create a custom DTMF tool; it'll be included in the tool call webhook - https://docs.vapi.ai/tools/default-tools#dial-keypad-dtmf 2. You can listen to the conversation-update webhook, it contain whole conversation, and will include the default tool call too, although you have to parse the whole conversation to find the relevant data, and might not include specific information. So I would reccoment option 1.
n
Regarding (1), I looked at the documentation and I dont understand how to create a custom DTMF tool, I am already using DTMF Vapi's tool with custom name and description. If you are talking about creating another tool that would not result in dial keypad (since its Vapi's internal logic), then its not going to be useful for me.
I went with (2), seems to work. Thanks for the advise
c
Ok, great that the alternate approach is working. Closing this thread for now, and will give feedback to team for 1 is not working.