ananaslord
05/18/2026, 2:37 PMAI Evy
05/18/2026, 2:37 PMAI Evy
05/18/2026, 2:38 PMAI Evy
05/18/2026, 2:38 PMwait for result is turned off and speak during execution is turned off, the agent will transition immediately after the function gets invoked, which is right upon entering the node
- If wait for result is turned on and speak during execution is turned off, the agent will transition once the function result is ready
To ensure the agent stops talking and only takes the transition after function execution, disable Speak During Execution in your Function Node settings.AI Evy
05/18/2026, 2:38 PMananaslord
05/18/2026, 2:40 PMAI Evy
05/18/2026, 2:40 PMAI Evy
05/18/2026, 2:41 PMprimary_intent variable, and you want the subagent to stop talking and transition once that variable is populated. [(1) ]()
For the Extract Dynamic Variable Node:
The Extract Dynamic Variable Node is designed specifically for extracting information from conversation and storing them as dynamic variables. It's not intended for having a conversation with the user.
To make the subagent stop talking and transition after the variable extraction:
1. Disable "Speak After Execution" in your function node settings - this prevents the agent from speaking about the extraction result [(2) ]()
2. Set up a transition condition based on the primary_intent variable - once the variable is populated, the transition condition will be met and the node will transition
When the transition happens:
For subagent nodes, transition can occur when the user is done speaking. Since you want to transition immediately after the variable is extracted, ensure your transition condition checks for the presence of the primary_intent value.
The key is combining the extraction with a transition condition that evaluates whether primary_intent has been populated, allowing the flow to move to the next node once that condition is met. [(1) ]()AI Evy
05/18/2026, 2:41 PMAI Evy
05/18/2026, 2:41 PMananaslord
05/18/2026, 2:42 PMAI Evy
05/18/2026, 2:42 PMAI Evy
05/18/2026, 2:43 PMprimary_intent variable is extracted and populated, your transition condition should immediately trigger the move to the next node.
To minimize unnecessary talking:
1. Keep your Extract DV Node instruction minimal - since it's not meant for dialogue, avoid adding conversational prompts in the node instruction
2. Set up a clear transition condition - create a transition that checks if primary_intent is populated (e.g., primary_intent != null or similar logic)
3. Use the transition immediately - the agent will transition once the variable extraction is complete and your condition is met
The Extract Dynamic Variable Node will extract the information during the conversation flow, and once the extraction completes and your transition condition evaluates to true, the flow will move to the next node.
If you're still experiencing the agent talking after extraction, the issue may be in the preceding subagent node's instruction rather than the Extract DV Node itself. Make sure your subagent node instruction doesn't encourage continued conversation after gathering the intent information. [(2) ]()AI Evy
05/18/2026, 2:43 PMAI Evy
05/18/2026, 2:43 PMananaslord
05/18/2026, 2:43 PMAI Evy
05/18/2026, 2:43 PMAI Evy
05/18/2026, 2:44 PMprimary_intent is populated
Key point about subagent nodes: Tool/function execution happens within the subagent node, so the node can stay active across multiple turns and tool/function calls before it transitions. The transition will only occur when your transition condition is met (when user is done speaking) .
If "Speak After Execution" is disabled for the Extract Dynamic Variable tool, the agent won't call the LLM to speak about the extraction result, which should prevent unnecessary talking after the variable is populated.AI Evy
05/18/2026, 2:44 PMAI Evy
05/18/2026, 2:44 PMananaslord
05/18/2026, 3:25 PMAI Evy
05/18/2026, 3:25 PMAI Evy
05/18/2026, 3:25 PMHelp the user check their order status. If the user provides an order number,
use the available order lookup tool to retrieve the latest status.
For your specific scenario where you want to extract primary_intent and then stop talking, your instruction should:
1. Define the task clearly - what information the agent should gather
2. Specify when to use the tool - when the agent should extract the variable
3. Be explicit about the behavior - tell the agent when to stop
Example for your Welcome Node:
Greet the caller and identify their primary intent for calling.
Once you understand why they're calling, extract the primary_intent using the available tool.
Do not continue the conversation after extraction is complete.
Key principles for writing subagent instructions:
- Write the instruction to define the task
- Specify what information the agent should gather
- Indicate when it should use the available tools/functions
- Keep it focused on the specific purpose of that node
The instruction should guide the LLM on when to use the Extract Dynamic Variable tool based on the conversation context.
**AI Evy
05/18/2026, 3:25 PMAI Evy
05/18/2026, 3:25 PMananaslord
05/19/2026, 9:56 AMAI Evy
05/19/2026, 9:56 AMAI Evy
05/19/2026, 9:57 AMArayanı karşıla ve ismini öğren. Ardından neden aradıklarını belirle ve primary_intent'i çıkar.
İsmi öğrendikten sonra, kişiye ismiyle hitap et.
Değişkenleri çıkardıktan sonra konuşmaya devam etme.
Extract Dynamic Variable aracında şu değişkenleri tanımlayın:
1. **Variable Name**: customer_name
- **Description**: "Arayanın ismi"
- **Variable Type**: Text
2. **Variable Name**: primary_intent
- **Description**: "Arayanın arama nedeni/amacı"
- **Variable Type**: Text veya Enum (önceden tanımlı seçenekler varsa)
Dinamik değişkenleri kullanarak hitap etme:
İsmi topladıktan sonra, agent'ınızın prompt'unda {{customer_name}} değişkenini kullanabilirsiniz: [(2) ]()
"Merhaba {{customer_name}}, size nasıl yardımcı olabilirim?"
Önemli ayarlar:
- Extract Dynamic Variable aracında "Speak After Execution" ayarını kapatın
- Transition condition'ı primary_intent ve customer_name değişkenlerinin dolu olduğunu kontrol edecek şekilde ayarlayın
Bu şekilde, Welcome node hem ismi toplayacak hem de primary_intent'i çıkaracak, ardından gerekli bilgileri topladıktan sonra bir sonraki node'a geçiş yapacaktır.AI Evy
05/19/2026, 9:57 AMAI Evy
05/19/2026, 9:57 AMananaslord
05/19/2026, 9:57 AMananaslord
05/19/2026, 9:58 AMAI Evy
05/19/2026, 9:58 AMAI Evy
05/19/2026, 9:58 AMGreet the caller and ask for their name. Once you have their name, identify their primary intent for calling.
Use the available Extract Dynamic Variable tool to capture both pieces of information.
Do not continue the conversation after extraction is complete.
Configure your Extract Dynamic Variable tool with these variables: [(2) ]()
1. **Variable Name**: customer_name
- **Description**: "The caller's name"
- **Variable Type**: Text
2. **Variable Name**: primary_intent
- **Description**: "The reason why the caller is calling"
- **Variable Type**: Text or Enum (if you have predefined options)
Using the collected name in later nodes:
Once you've collected the name, you can reference it in other nodes using `{{customer_name}}`: [(3) ]()
"Hello {{customer_name}}, how can I help you today?"
Important settings:
- Turn off "Speak After Execution" for the Extract Dynamic Variable tool [(1) ]()
- Set up a transition condition that checks if both customer_name and primary_intent are populated before transitioning to the next node
This setup will allow your Welcome Node to collect both the name and intent, then transition without unnecessary talking once the extraction is complete.AI Evy
05/19/2026, 9:58 AMAI Evy
05/19/2026, 9:58 AMananaslord
05/19/2026, 10:02 AMAI Evy
05/19/2026, 10:02 AMAI Evy
05/19/2026, 10:03 AMGreet the caller with: "Welcome to Hellenic Train, how may I help you today?"
Identify the customer's primary intent from their response. If unclear, ask ONE clarification question:
"I can help with train schedules, reservations, or general Hellenic Train questions. What brings you in today?"
If still unclear after one clarification, mark intent as "Out of Scope" and proceed.
Once intent is understood, collect the customer's first name if not already provided.
Ask naturally: "May I have your first name?"
When you have both primary_intent and first_name, use the extract_customer_context tool to capture them.
After extraction completes, stop speaking and prepare for transition.AI Evy
05/19/2026, 10:03 AMextract_customer_context tool [(1) ]()
- Set transition condition: {{primary_intent}} exists AND {{first_name}} exists [(2) ]()
- The transition will occur after the user speaks once both variables are populated
The original prompt was overly prescriptive. LLMs perform better with clear objectives rather than exhaustive rule lists. Your transition logic should handle the "when to move" decision, not the instruction itself. [(1) ]() [(2) ]()
**AI Evy
05/19/2026, 10:03 AMAI Evy
05/19/2026, 10:03 AMananaslord
05/19/2026, 10:04 AMAI Evy
05/19/2026, 10:04 AMAI Evy
05/19/2026, 10:04 AMSupported intents:
- Train Timetable Inquiry
- Train Reservation
- General Inquiry
- Out of Scope
Ask only one question at a time.
The clarification question may only be asked ONCE.
Why this matters:
Subagent node instructions should "define the task, what information the agent should gather, and when it should use the available tools/functions." Your current prompt is overly prescriptive with redundant rules.
Better approach:
Write a clear, positive instruction about what the agent should do, then use transition conditions to control when the node exits. The transition logic handles "when to move," not the instruction itself.
Your simplified instruction from my previous response already covers the core behavior. Adding extensive rule lists often confuses the LLM rather than helping it.AI Evy
05/19/2026, 10:04 AMAI Evy
05/19/2026, 10:04 AMananaslord
05/19/2026, 10:05 AMAI Evy
05/19/2026, 10:05 AMAI Evy
05/19/2026, 10:05 AMextract_customer_context tool in your subagent node settings
2. Set your transition condition to: {{primary_intent}} exists AND {{first_name}} exists [(2) ]()
3. Remember: Transition happens when the user is done speaking, so once both variables are extracted, the flow will move to the next node after the user's next turn [(1) ]()
This prompt strikes the right balance between guidance and conciseness, which is exactly what subagent nodes need.AI Evy
05/19/2026, 10:05 AMAI Evy
05/19/2026, 10:05 AMananaslord
05/19/2026, 10:22 AMAI Evy
05/19/2026, 10:22 AMAI Evy
05/19/2026, 10:23 AM{{user_number}} correctly
Recommended structure from documentation: [(1) ]()AI Evy
05/19/2026, 10:23 AMAI Evy
05/19/2026, 10:23 AM///## Identity
[Your identity section - already good]
///## Style Guardrails
[Your style section - already good]
///## Response Guidelines
[Your tone + pronunciation sections - already good]
///## Task Instructions
[Handled in individual nodes for Conversation Flow]
///## Objection Handling
[Your guardrails section - already good]
Your prompt already follows this structure naturally. The global prompt applies to the entire conversation and influences all response generation across nodes. [(3) ]() [(2) ]()
One clarification: Since you're using Conversation Flow, remember that this global prompt is available in every node, but each node can have its own specific instruction (like your Welcome subagent prompt we refined earlier) . [(3) ]()
Overall, this is a well-structured global prompt that should work effectively!AI Evy
05/19/2026, 10:23 AMananaslord
05/19/2026, 10:48 AMAI Evy
05/19/2026, 10:48 AMAI Evy
05/19/2026, 10:49 AMtools and tool_ids fields on conversation nodes are deprecated in favor of the new subagent node type. [(2) ]() The conversation node type itself is not deprecated - it continues to work for nodes that don't use tools. If you need tools, use subagent nodes instead.
Practical Example:
- **Conversation Node**: "Tell me about your train travel preferences" (just gathering info conversationally)
- **Subagent Node**: "Help the user check their order status. If the user provides an order number, use the available order lookup tool to retrieve the latest status." [(1) ]()
Multiple tools/functions can be added to a single subagent node, and the agent can continue talking while a tool/function executes.AI Evy
05/19/2026, 10:49 AMAI Evy
05/19/2026, 10:49 AMananaslord
05/19/2026, 10:51 AMAI Evy
05/19/2026, 10:51 AMAI Evy
05/19/2026, 10:51 AMprimary_intent and first_name are available.
Configuration:
1. Add the Extract Dynamic Variable tool to your Subagent Node
2. Configure these variables: [(2) ]()
- primary_intent (Text or Enum)
- first_name (Text)
3. Turn off "Speak After Execution" for the tool [(1) ]()
4. Set your transition condition to check when both variables exist [(3) ]()
Don't use Conversation Node because it's intended for dialogue without tool calling. [(4) ]() Since you need to extract variables, you need the tool-calling capability that only Subagent Nodes provide. [(1) ]()AI Evy
05/19/2026, 10:52 AMAI Evy
05/19/2026, 10:52 AMananaslord
05/19/2026, 10:52 AMAI Evy
05/19/2026, 10:53 AMAI Evy
05/19/2026, 10:53 AMUser provided their name and stated their reason for calling
- User explained why they're calling and gave their first name
Why this works:
The LLM evaluating the transition condition has access to the current node's instruction and the conversation history. It can determine if both pieces of information were provided without storing them as variables.
When you WOULD need Extract Dynamic Variable:
- If you need to reference the collected values later (like {{first_name}} in subsequent nodes)
- If you need equation-based transition conditions that check specific variable values
- If you need to pass the data to webhooks or external systems
For your use case: If you just want to ensure both pieces of information are collected before moving to the next node, a Conversation Node with a prompt-based transition conditioAI Evy
05/19/2026, 10:53 AMAI Evy
05/19/2026, 10:53 AMananaslord
05/19/2026, 10:54 AMAI Evy
05/19/2026, 10:54 AMAI Evy
05/19/2026, 10:54 AMGreet the caller with: "Welcome to Hellenic Train, how may I help you today?"
Identify the customer's primary intent from their response.
Supported intents:
- Train Timetable Inquiry
- Train Reservation
- General Inquiry
- Out of Scope
If the intent is unclear, ask ONE clarification question:
"I can help with train schedules, reservations, or general Hellenic Train questions. What brings you in today?"
If still unclear after one clarification, treat the intent as "Out of Scope" and proceed.
Once intent is identified, collect the customer's first name.
Ask naturally: "May I have your first name?"
Keep responses short and ask only one question at a time.AI Evy
05/19/2026, 10:54 AMUser stated their intent is about train timetables or schedules AND provided their first name
Transition 2 → Train Reservation Node
- Condition Type: Prompt
- Condition: User stated their intent is to make a train reservation AND provided their first name
Transition 3 → General Inquiry Node
- Condition Type: Prompt
- Condition: User stated their intent is a general Hellenic Train question AND provided their first name
Transition 4 → Out of Scope Handler Node
- Condition Type: Prompt
- Condition: User's intent is unclear or unrelated to train services after clarification attempt AND user provided their first name
Fallback Transition → Continue Welcome Node
- Condition Type: Default (no condition needed)
- This catches cases where the user hasn't provided both pieces of information yet
Why this structure works:
Prompt-based transition conditions have access to the node's instruction and conversation history, so they can evaluate whether both intent and name were collected without extracting variables. [(1) ]() The conditions are evaluated from top to bottom, and the agent transitions on the first condition that evaluates to true.
If you later need to reference the collected name or intent in subsequent nodes, you would need to switch to a Subagent Node with Extract Dynamic Variable tool instead. [(3) ]()AI Evy
05/19/2026, 10:54 AMAI Evy
05/19/2026, 10:54 AMananaslord
05/19/2026, 10:58 AMAI Evy
05/19/2026, 10:58 AMAI Evy
05/19/2026, 10:59 AMUser provided their first name and stated their reason for calling
That's it. The Logic Split Node will handle all the intent-based routing scenarios.
About the "Else" Condition:
You're correct - there isn't a traditional "fallback transition" in the sense I described. However, Logic Split Nodes do have an "else destination" that serves as the default path when none of the conditions are met.
From the documentation: "there will always be an else condition, which will be the default destination if none of the conditions are met, because this node is designed to be a split point and you want to make sure the conversation flow is not stuck here."
Your Logic Split Node Setup:
Configure your Logic Split Node with these conditions:
- Condition 1: Intent is Train Timetable → Route to Timetable Node
- Condition 2: Intent is Train Reservation → Route to Reservation Node
- Condition 3: Intent is General Inquiry → Route to General Inquiry Node
- Else Destination: Route to Out of Scope Handler Node
The Logic Split Node evaluates conditions immediately upon entry and transitions happen instantly without the agent speaking. This is much cleaner than having multiple transition conditions on the Welcome node itself.AI Evy
05/19/2026, 10:59 AMAI Evy
05/19/2026, 10:59 AMananaslord
05/19/2026, 11:01 AMAI Evy
05/19/2026, 11:01 AMAI Evy
05/19/2026, 11:01 AMUser provided their first name and stated their reason for calling) and the user says something completely unrelated or refuses to provide the information, the agent will stay in the Welcome node indefinitely (unless a global node catches it) .
The Solution:
Add Global Nodes to handle common scenarios where users might get stuck: [(2) ]()
1. Create a Global Node for "Not Ready to Continue"
- Condition: User indicates this is not a good time to continue or wants to call back later
- This handles cases like "I'll call back later"
2. Create a Global Node for "Speak to Human"
- Condition: User requests to speak with a human agent
- Routes to your transfer/escalation flow
3. Create a Global Node for "Unrelated Topic"
- Condition: User asks about topics unrelated to Hellenic Train services
- Politely redirects: "I can only help with train schedules, reservations, and general Hellenic Train questions."
Why Global Nodes Solve This:
Global nodes can be transitioned to from anywhere in the conversation flow, making them ideal for handling universal scenarios. They don't need to be connected to your main flow graph.
Your Welcome Node Stays Simple:
Keep your single transition condition as planned. The global nodes act as safety nets across your entire flow, preventing the agent from getting stuck when users behave unexpectedly. [(2) ]() [(1) ]()AI Evy
05/19/2026, 11:01 AMAI Evy
05/19/2026, 11:01 AMananaslord
05/19/2026, 11:02 AMAI Evy
05/19/2026, 11:03 AMAI Evy
05/19/2026, 11:03 AMAI Evy
05/19/2026, 11:03 AMAI Evy
05/19/2026, 11:03 AMAI Evy
05/19/2026, 5:15 PMananaslord
05/19/2026, 5:15 PMAI Evy
05/19/2026, 5:16 PMThis node routes the user to the correct flow based on collected information.
Check variables in this order:
1. If {{user_name}} is empty:
Ask: "May I have your name please?"
- Use the name naturally in conversation
- Allow corrections if needed
2. If {{user_intent}} is empty:
Ask ONE clarification question to identify their primary need
3. If both {{user_name}} and {{user_intent}} exist:
Route immediately without additional conversation
Rules:
- Never ask for the same information twice
- Use {{user_name}} naturally when addressing the customer
- Don't repeat the user's stated intent back to them
- If intent is unclear, ask only ONE clarification question
- If user mentions multiple topics, address the primary intent first
Supported intents:
- Periodic maintenance information
- Callback / FSA check request
- New service appointment booking
- Existing service appointment inquiry
- Existing service appointment cancellation
- Vehicle purchase interest
- Test drive request
- Open ticket / complaint status inquiry
- Unclear / mixed request
Keep transitions brief:
- "Sure, let me get a few details."
- "Of course, I'll help you with that."
- "Understood, routing you to the right team."AI Evy
05/19/2026, 5:16 PM{{user_name}}, {{user_intent}}) which allows you to reference values throughout your conversation flow. [(3) ]() The conditional logic is clear and follows the pattern of checking variables before proceeding, which aligns with how transition conditions evaluate in Conversation Flow. [(1) ]()
Recommended setup:
Since you're checking dynamic variables and routing based on them, consider using a Logic Split Node after collecting both pieces of information. Logic Split Nodes evaluate conditions immediately upon entry and branch without the agent speaking, making them ideal for pure routing decisions. [(4) ]()
Transition from this node:
Use an equation-based transition condition to move to your Logic Split Node: [(1) ]()
{{user_name}} exists AND {{user_intent}} exists
This ensures both variables are collected before routing.AI Evy
05/19/2026, 5:16 PMAI Evy
05/19/2026, 5:16 PMananaslord
05/19/2026, 7:27 PMAI Evy
05/19/2026, 7:27 PMAI Evy
05/19/2026, 7:28 PMGreet the caller: "Welcome to Hellenic Train, how may I help you today?"
Identify the customer's primary intent from their response.
Supported intents:
- Train Timetable Inquiry
- Train Reservation
- General Hellenic Train Question
- Out of Scope
If intent is unclear, ask ONE clarification question:
"I can help with train schedules, reservations, or general questions about Hellenic Train. What brings you in today?"
Once intent is identified, collect the customer's first name.
Ask naturally: "May I have your first name?"
Keep responses short and ask only one question at a time.AI Evy
05/19/2026, 7:28 PMUser provided their first name and stated their reason for calling
Destination: Logic Split Node [(3) ]()
Your Logic Split Node Setup:
The Logic Split Node will handle all intent-based routing immediately upon entry without the agent speaking:
- Condition 1: Intent is Train Timetable → Route to Timetable Node
- Condition 2: Intent is Train Reservation → Route to Reservation Node
- Condition 3: Intent is General Inquiry → Route to General Inquiry Node
- Else Destination: Route to Out of Scope Handler Node
Add Global Nodes as safety nets: [(4) ]()
1. Global Node: "Speak to Human" - Condition: User requests to speak with a human agent
2. Global Node: "Call Back Later" - Condition: User indicates this is not a good time or wants to call back later
3. Global Node: "Unrelated Topic" - Condition: User asks about topics unrelated to Hellenic Train services
This structure keeps your Welcome node simple with one transition, while the Logic Split Node handles the routing logic, and Global Nodes prevent the agent from getting stuck anywhere in the flow. [(4) ]() [(3) ]() [(2) ]()AI Evy
05/19/2026, 7:28 PMAI Evy
05/19/2026, 7:28 PMananaslord
05/19/2026, 8:43 PMAI Evy
05/19/2026, 8:43 PMAI Evy
05/19/2026, 8:44 PMYou are a helpful Hellenic Train customer service representative answering general questions about train services.
Use the information from the knowledge base to provide accurate answers.
Guidelines:
- Be concise: Keep responses under 2 sentences unless explaining complex topics
- Be conversational: Use natural language and acknowledge what the caller says
- Only answer using information from the knowledge base
- If the knowledge base doesn't contain relevant information, say: "I don't have that specific information available. Would you like me to connect you with someone who can help?"
- Address the customer by their first name when appropriate: "{{first_name}}"
- If the question requires booking or schedule lookup, guide them: "For specific train times and bookings, I can transfer you to our reservations team."
After answering their question, ask: "Is there anything else I can help you with about Hellenic Train services?"AI Evy
05/19/2026, 8:44 PMUser asked another question about Hellenic Train services
- Transition 2: User wants to book or check schedules → Route to appropriate node
- Condition: User wants to make a reservation or check specific train schedules
- Transition 3: User is satisfied and done → Route to End Call node
- Condition: User indicates they have no more questions or says goodbye
The Knowledge Base content will be automatically retrieved and appended to the LLM prompt under the header "Related Knowledge Base Contexts" without you needing to modify your prompt. [(1) ]()AI Evy
05/19/2026, 8:44 PMAI Evy
05/19/2026, 8:44 PM