https://retellai.com/?utm_source=discord&utm_medium=seo logo
▎ "I have an End Node with static_text instruction...
# ❓・ai-evy-support
p
@AI Evy ▎ "I have an End Node with static_text instruction and block_interruptions: true. If the caller speaks during the message ▎ playback, their queued utterance still gets processed as a user turn after the speech finishes, and global nodes can ▎ trigger before the call terminates. How do I guarantee an End Node speaks its message and hangs up without evaluating ▎ queued user input? Is there a supported way to make global nodes unreachable from a terminal path?"
a
Thanks for tagging me @punk8357. I'll look through relevant sources and get back to you shortly.
### Answer Based on the available documentation, End Nodes terminate the call the moment the agent enters them [(1) ]() . The "Speak During Execution" setting allows the agent to generate a farewell utterance while the call is ending . However, the specific behavior you're describing—where queued user input gets processed after the End Node's speech finishes and before call termination—isn't directly addressed in the official documentation. Community discussions suggest this is a known challenge. One user reported that in Flex Mode, a "race condition" can cause timing issues with End Call nodes, where the tool terminates the call before TTS finishes [(2) ]() . Their workaround was moving the farewell logic from the node's "Speak during execution" to the Global Prompt with strict "Output-First" protocol: explicitly instructing the agent to output the farewell sentence first, then trigger the end_call tool immediately after, with no wait for user input . Regarding global nodes being unreachable from specific paths: the official documentation doesn't describe a mechanism to selectively disable global nodes for terminal paths [(1) ]() . Global nodes are designed to be accessible from any point in the flow when their conditions are met. For your specific use case, you might need to: 1. Move farewell logic to the Global Prompt with sequencing instructions (as suggested in the community workaround) [(2) ]() 2. Ensure your global node conditions explicitly exclude scenarios where you're in a terminal state I don't have documentation confirming a built-in way to prevent queued utterances from being processed after an End
Node's speech completes. This appears to be a timing/architecture consideration that may require reaching out to Retell support for guidance on best practices.
​ To learn more, see the sources I considered: [[1] End Node](https://docs.retellai.com/build/conversation-flow/end-node) [[2] Speak During Execution not working for End Call node](https://discord.com/channels/1186424376300679209/1451006517909258352) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
p
@AI Evy any ways you can think of to force hangup the call on a timer?
a
Thanks for the follow-up, @punk8357. I'll get back to you soon.
### Answer Based on the available documentation, here are potential approaches using Retell's conversation flow features: Code Node with setTimeout simulation You could use a Code Node to implement timer logic before transitioning to an End Node [(1) ]() . Code nodes execute JavaScript when the agent enters them and can access dynamic variables and call metadata . While JavaScript's
setTimeout
won't work directly in the sandbox, you could calculate a target timestamp and store it as a dynamic variable, then use that in transition conditions . Function Node approach A Function Node executes a single tool/function deterministically on node entry [(2) ]() . You could create a custom function that implements a delay server-side, then transitions to an End Node after the function completes . Function nodes support "Wait for Result" which would block until your timed function returns . Transfer Call as termination While not a timer per se, the Transfer Call tool can end calls [(3) ]() . If you transfer to an invalid destination or use specific transfer configurations, this could serve as an alternative termination method . However, none of the official documentation explicitly describes a built-in timer-based call termination feature. For a guaranteed timed hangup that bypasses queued user input, you may need to implement this through custom function calling with server-side timing logic [(4) ]() .
​ To learn more, see the sources I considered: [[1] Code node: run JavaScript in a conversation flow](https://docs.retellai.com/build/conversation-flow/code-node) [[2] Conversation flow nodes, edges, and transition conditions](https://docs.retellai.com/build/conversation-flow/node) [[3] Transfer call tool for single & multi-prompt agents](https://docs.retellai.com/build/single-multi-prompt/transfer-call) [[4] Integrate Function Calling](https://docs.retellai.com/integrate-llm/integrate-function-calling) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.