https://retellai.com/?utm_source=discord&utm_medium=seo logo
Subject: book_appointment_cal being invoked despit...
# ❓・ai-evy-support
b
@AI Evy Subject: book_appointment_cal being invoked despite not being in Node Functions Hi Retell Support Team, I'm building a dental voice agent using Conversation Flow and running into an issue with tool invocation. I have a custom tool called
book_appointment
added to my
node_book
Subagent Node. The built-in
book_appointment_cal
is NOT listed in the node's functions. However, during testing, the agent is still invoking
book_appointment_cal
instead of my custom
book_appointment
tool. I've confirmed: -
book_appointment_cal
does not appear in node_book's Node Functions -
book_appointment_cal
does not appear anywhere in my agent JSON export - My prompt explicitly says to call
book_appointment
- My custom
book_appointment
tool IS listed in Node Functions It seems like
book_appointment_cal
is being triggered as a global built-in tool that overrides node-level settings. Could you help me: 1. Confirm if
book_appointment_cal
is enabled globally by default 2. Explain how to disable it so my custom tool is used instead Thank you!
a
Thanks for tagging me @BotBrush 🌴. I'll look through relevant sources and get back to you shortly.
### Answer Based on the available sources, I don't have specific information about
book_appointment_cal
being enabled globally by default or how to disable it in favor of your custom tool. However, I can confirm the proper configuration for Subagent Nodes in Conversation Flow: Subagent Node Tool Configuration: In a Subagent Node, you attach tools/functions that the agent can use during conversation [(1) ]() . The node settings include a Tools field where you attach the tools/functions this subagent can use during the conversation . Best Practices from the documentation: - Be explicit in your node instruction and tell the agent when each tool/function should be used - Use function nodes for guaranteed execution—if a tool/function must always run at a certain point in the flow, use a function node instead - Avoid adding too many tools/functions to one subagent node Potential Issue: There was a recent report in the Discord community about function nodes not working properly in Conversation Flow, specifically on telephony/voice (though they worked fine in text chat) [(2) ]() . The Retell team acknowledged spotting an issue and was working on a fix . Recommended Actions: 1. Double-check that your custom
book_appointment
tool is properly attached in the Subagent Node's Tools settings 2. Verify your node instruction explicitly tells the agent to use
book_appointment
3. Consider using a Function Node instead of relying on the Subagent Node to call the tool, as Function Nodes guarantee execution [(1) ]() For specific troubleshooting of the
book_appointment_cal
override behavior, I recommend reaching out to Retell support direc
tly, as this appears to be a configuration issue not covered in the available documentation.
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Discord message from @momsramen on 2025-07-22](https://discord.com/channels/1186424376300679209/1186462578310910112/1397031478965043312) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
b
@AI Evy Subject: Subagent Node calling book_appointment_cal instead of custom tool Hi Retell Support Team, I'm building a dental voice agent using Conversation Flow and facing a critical issue with tool invocation in Subagent Nodes. ISSUE: I have a custom tool called
book_appointment
added to my
node_book
Subagent Node. However, during voice calls, the agent consistently invokes the built-in
book_appointment_cal
instead of my custom tool. I have confirmed: -
book_appointment_cal
is NOT listed in node_book's Node Functions -
book_appointment_cal
does NOT appear anywhere in my agent JSON export - My prompt explicitly says: "CRITICAL: You MUST use book_appointment tool. NEVER use book_appointment_cal" - My custom
book_appointment
tool IS listed in Node Functions - This only happens on voice/telephony calls — not in text/simulation This matches the bug reported in your Discord community (message from @momsramen on 2025-07-22) where Subagent Nodes invoke built-in tools even when not listed, specifically on telephony. QUESTIONS: 1. Is there a fix or workaround available for this? 2. Is there a way to completely disable built-in tools like
book_appointment_cal
at the agent level? 3. Will Function Nodes work reliably on telephony as an alternative? Agent ID: agent_7dc753d9673b167b9d5b365de8 This is blocking me from going to production. Any help is appreciated. Thank you!
a
Thanks for the follow-up, @BotBrush 🌴. I'll get back to you soon.
### Answer Based on the available documentation, I don't have specific information about global tool override behavior or how to disable
book_appointment_cal
at the agent level. However, I can provide guidance on the recommended approach based on Conversation Flow best practices: Function Node vs. Subagent Node [(1) ]() [(2) ]() The key difference is: - **Function Nodes**: Deterministic — executes on node entry [(1) ]() - **Subagent Nodes**: LLM-driven — called when the LLM decides it's appropriate Use function nodes when you want guaranteed execution every time the flow reaches that step. Use subagent nodes when the agent should decide whether and when to call a tool/function based on what the user says. Recommended Workaround Given your issue occurs specifically on telephony and you need guaranteed execution of your custom
book_appointment
tool, consider switching to a Function Node instead of a Subagent Node [(1) ]() [(2) ]() : 1. Function Nodes execute deterministically on node entry [(2) ]() 2. They support one tool per node [(1) ]() 3. They're designed for "always-execute actions" Function Node Configuration [(2) ]() When the function node has
wait for result
turned on, the agent will wait for the function to finish executing before attempting to transition to any other node, guaranteeing that when you reach the next node, the
result is already ready to be used . Historical Issue Note The Discord message you referenced from July 2025 mentions that the Retell team was investigating an issue where Conversation Flow agents stayed silent after function nodes, and a fix was deployed [(3) ]() [(4) ]() . However, this was a different issue related to message ordering. For specific troubleshooting of the
book_appointment_cal
override behavior with your agent ID, I recommend contacting Retell support directly through their support channels, as this appears to be a configuration issue not fully covered in the available documentation.
​ To learn more, see the sources I considered: [[1] Subagent Node](https://docs.retellai.com/build/conversation-flow/subagent-node) [[2] Function Node Overview](https://docs.retellai.com/build/conversation-flow/function-node) [[3] Conversation Flow agent potentially stay silent after function node](https://community.retellai.com/t/conversation-flow-agent-potentially-stay-silent-after-function-node/135) [[4] Discord message from @momsramen on 2025-07-22](https://discord.com/channels/1186424376300679209/1186462578310910112/1397031478965043312) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
b
@AI Evy hi
a
Thanks for the follow-up, @BotBrush 🌴. I'll get back to you soon.
### Answer Hello! How can I help you with Retell AI today?
message has been deleted
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
b
@AI Evy during live call, is it possible to use caller's phone number in retell? User1:08Yep. Agent1:10And the best number to reach you?User1:13The same phone number from which I'm calling you. Agent1:16Thanks, but I can’t see your number on my end. Could you please tell me the best number to reach you?User1:22The same number. Agent1:25I’m sorry, but I really do need you to say the phone number out loud so I can enter it. What’s the best number to reach you?look at this call. i want agent to capture and say the user's number. how to do that?FYI this is the piece of prompt in the node5. Collect phone: "And the best number to reach you?" - Format as +1XXXXXXXXXX - If user says "same number", "this number", "the one I'm calling from", or any variation → immediately use {{user_number}} as their phone number. Confirm it back: "Got it — I'll use {{user_number}}. Is that right?" Never ask the user to say the number out loud if they've already indicated it's the same number they're calling from.
a
Thanks for the follow-up, @BotBrush 🌴. I'll get back to you soon.
### Answer Yes, you can access the caller's phone number during a live call using dynamic variables in Retell AI. How to Capture the Caller's Phone Number The caller's phone number is automatically available as a dynamic variable that you can reference in your conversation flow [(1) ]() . You need to set this up properly: 1. Set the dynamic variable at the conversation flow level - Add a default dynamic variable (e.g.,
user_number
) that will contain the caller's phone number 2. Pass the caller's number when initiating the call - When you create or register the call, include the caller's phone number in the
default_dynamic_variables
object 3. Reference it in your prompts - Use
{{user_number}}
(or whatever you named your variable) in your node instructions Example Configuration In your conversation flow configuration, you would include:
Copy code
json
{
  "default_dynamic_variables": {
    "user_number": "+12137771234"
  }
}
Why Your Current Setup Isn't Working Based on your prompt snippet, you're correctly trying to use
{{user_number}}
, but the variable likely isn't being populated with the actual caller's phone number. The dynamic variable needs to be set when the call is initiated, not just referenced in the prompt. Recommended Solution Use a Code Node early in your conversation flow to capture and format the caller's number [(2) ]() :
Copy code
javascript
// Assuming the caller's number is available in metadata
const callerNumber = metadata.from_number || metadata.caller_phone;
return { user_number: callerNumber };
Then your prompt logic will work as intended - when the user says "same number," the agent can confirm using
{{user_number}}
[(1) ]() . Alternative: Extract Dynamic Variable Node You could also use an Extract Dynamic Variable Node to capture the phone number if the user speaks it aloud, storing it as a Text variable [(3) ]() .
​ To learn more, see the sources I considered: [[1] Get Conversation Flow](https://docs.retellai.com/api-references/get-conversation-flow) [[2] Code Node](https://docs.retellai.com/build/conversation-flow/code-node) [[3] Extract Dynamic Variable Node](https://docs.retellai.com/build/conversation-flow/extract-dv-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.