Create nodes accessible from anywhere with natural language or DTMF triggers
Global nodes are special nodes that can be triggered from any point in your conversation flow without explicit edges. They act as universal shortcuts, accessible via natural language prompts or DTMF keypresses, providing consistent access to common functionality.
Node: "Transfer to Human Agent" Type: Transfer Agent isGlobal: true globalCondition: "The user wants to speak with a human agent or representative" requiresDoubleConfirm: false
Emergency Escalation:
Copy
Ask AI
Node: "Emergency Support" Type: Conversation isGlobal: true globalCondition: "The user has an urgent or emergency situation" requiresDoubleConfirm: false message: "I understand this is urgent. Connecting you to emergency support now."
Return to Main Menu:
Copy
Ask AI
Node: "Main Menu" Type: Conversation isGlobal: true globalCondition: "The user wants to return to the main menu or start over" requiresDoubleConfirm: false message: "Returning to main menu..."
End Call:
Copy
Ask AI
Node: "End Call - User Requested" Type: End Call isGlobal: true globalCondition: "The user wants to end the call or hang up" requiresDoubleConfirm: true # Confirm before ending finalMessage: "Thank you for calling. Goodbye!"
Help/FAQ:
Copy
Ask AI
Node: "General Help" Type: Conversation isGlobal: true globalCondition: "The user asks for help or doesn't understand what to do" message: "I can help with billing, technical support, or account questions. What do you need?"
Cancel Operation:
Copy
Ask AI
Node: "Cancel Process" Type: Router isGlobal: true globalCondition: "The user wants to cancel the current process or go back" requiresDoubleConfirm: true skipResponse: true # Silent routing
Global Condition: "User wants to speak with a human agent"✓ Should Trigger: - "I want to talk to a person" - "Can I speak with someone?" - "Transfer me to an agent" - "I need to speak with a human" - "Get me to a representative"✗ Should NOT Trigger: - "What are your agent hours?" (information, not request) - "My agent told me..." (talking about an agent, not requesting) - "Do you have human agents?" (question, not request)
Global DTMF triggers are configured separately from the globalCondition field:
Copy
Ask AI
Node: "Transfer to Operator" Type: Transfer Agent isGlobal: true globalCondition: "User wants to speak with an operator" globalDtmfTrigger: "0" # Press 0 from anywhere
Node: "Transfer to Agent" Type: Transfer Agent isGlobal: true # Natural language trigger globalCondition: "User wants to speak with a human agent or operator" # DTMF trigger globalDtmfTrigger: "0" # Can be triggered by: # 1. Saying "I want to talk to someone" # 2. Pressing 0 on keypad
Conversation Node: "Welcome" Message: "Welcome to Acme Support. How can I help you today? Press 0 at any time to reach an operator."Conversation Node: "Main Menu" Message: "Press 1 for billing, 2 for support. You can return to this menu anytime by pressing 9."
globalCondition: "User wants help, and the current time {{current_time}} is during business hours"Available System Variables: - {{session_id}} - {{user_input}} - {{current_time}} - {{current_date}} - {{call_duration}} - {{node_count}} (See Variables documentation for complete list)
Custom Variables ✅:
Copy
Ask AI
globalCondition: "User wants priority support and {{custom_vip_status}} is true"Custom variables are workflow-level variables you define via API or settings
❌ Error: "Global node 'Transfer VIP' uses extracted variable 'customer_tier'" → Solution: Use custom variable instead, or use equation in transition✅ Valid: Global node uses only system and custom variables
Node: "Delete Account" Type: Tool isGlobal: true globalCondition: "User wants to delete or close their account" requiresDoubleConfirm: true # Ask for confirmation toolName: "DeleteAccountAPI"
The confirmation prompt is auto-generated but you can influence it:
Copy
Ask AI
Node Name: "Cancel Subscription"→ Agent asks: "Are you sure you want to cancel your subscription?"Node Name: "End Call"→ Agent asks: "Are you sure you want to end this call?"Node Name: "Delete All Data"→ Agent asks: "Are you sure you want to delete all your data?"
Global Router: "Context-Aware Transfer" isGlobal: true globalCondition: "User wants to speak with someone" skipResponse: true # Don't speak, just route Transitions: - Equation: issue_complexity == "high" → Senior_Agent - Equation: customer_tier == "vip" → VIP_Agent - Always → Standard_Agent
Background Data Collection:
Copy
Ask AI
Global Tool Node: "Log Escalation" isGlobal: true globalCondition: "User is frustrated or angry" skipResponse: true # Log silently, don't interrupt flow toolName: "LogEscalationEvent" Transitions: - Always → Continue_Conversation # Return to where user was
Implicit Actions:
Copy
Ask AI
Global Node: "Record Callback Request" Type: Tool isGlobal: true globalCondition: "User requests a callback" skipResponse: true # Record request silently toolName: "CreateCallbackTicket" Transitions: - Always → Callback_Confirmation # Then confirm to user
Node: "Transfer to Human Agent" Type: Transfer Agent isGlobal: true globalCondition: "User wants to speak with a human agent, representative, or person" agentId: "general-support-pool" transferMessage: "Transferring you to an agent now. Please hold." # Accessible from ANY node in the flow via: # - "I want to talk to someone" # - "Get me a human" # - "Transfer me to an agent"
Node: "Main Menu" Type: Conversation isGlobal: true globalCondition: "User wants to return to the main menu or start over" globalDtmfTrigger: "9" message: "Returning to main menu. Press 1 for Sales, 2 for Support, 3 for Billing." Transitions: - DTMF: key=1 → Sales - DTMF: key=2 → Support - DTMF: key=3 → Billing - Always → Repeat_Menu
Node: "Emergency Escalation" Type: Transfer Agent isGlobal: true globalCondition: "User has an emergency, urgent situation, or critical issue" requiresDoubleConfirm: false # No delay for emergencies agentId: "emergency-support-team" transferMessage: "I understand this is urgent. Connecting you to priority support immediately."
Node: "End Call - User Initiated" Type: End Call isGlobal: true globalCondition: "User wants to end the call, hang up, or is done" requiresDoubleConfirm: true finalMessage: "Thank you for contacting us. Have a great day!" reason: "user_requested"
Node: "Contextual Help" Type: Conversation isGlobal: true globalCondition: "User asks for help, is confused, or doesn't know what to do" message: "I can help you with: - Billing and payments - Technical support - Account management - General questions What do you need help with?" Transitions: - Natural Language: "billing" → Billing_Help - Natural Language: "technical" → Tech_Help - Natural Language: "account" → Account_Help - Always → General_Help
✅ Use global nodes for truly universal functionality
✅ Write clear, unambiguous global conditions
✅ Test global triggers from multiple conversation states
✅ Use double confirm for destructive actions
✅ Provide both DTMF and natural language triggers for accessibility
✅ Keep global nodes focused on a single purpose
✅ Use only system and custom variables in global conditions
✅ Announce global shortcuts to users (especially DTMF)
❌ Make every node global (defeats the purpose)
❌ Create overlapping global conditions (ambiguous triggers)
❌ Use extracted variables in global conditions
❌ Make global conditions too broad (triggers inappropriately)
❌ Forget to test from different conversation contexts
❌ Use global nodes for sequential workflow steps
❌ Create global nodes that require specific prior context
✓ Checks: - Global condition is not empty - Global condition doesn't use extracted variables - Node type supports global status (not Start) - DTMF trigger is valid key (0-9, *, #) - Double confirm is appropriate for node type - No circular global triggering✗ Common Errors: - 'Global trigger condition is required' - "Global node uses extracted variable '{{account_id}}'" - 'Start nodes cannot be global' - 'Global condition overlaps with another global node'
Test From Different States: ✓ Beginning of conversation ✓ Middle of flow ✓ After tool execution ✓ After variable extraction ✓ From different conversation branchesTest Different Triggers: ✓ Direct phrase ("I want an agent") ✓ Indirect phrase ("Can you transfer me?") ✓ Contextual ("I need help with this") ✓ DTMF keypress (if configured)Test Edge Cases: ✓ Multiple rapid triggers ✓ Triggering during another global node ✓ Triggering from end call node ✓ Triggering when required variables don't exist
- Transfer to Agent- Return to Main Menu- End Call- Transfer to Agent- Transfer to Sales- Transfer to Support- Transfer to Billing- Return to Menu- Get Help- End Call- Cancel Process(8 global nodes = significant latency)
2. Use Specific Conditions:
Copy
Ask AI
globalCondition: "User needs help"globalCondition: "User explicitly requests to speak with a human agent"
3. Combine with DTMF:
Copy
Ask AI
globalCondition: "User wants agent"globalDtmfTrigger: "0"Most users will learn to press 0 (instant, no LLM evaluation)
❌ Too specific (rarely matches):globalCondition: "User says exactly 'I need to speak with a human agent right now'"✅ Appropriately broad:globalCondition: "User wants to speak with a human agent or representative"
Check for Variable Issues:
Copy
Ask AI
❌ Uses extracted variable (validation error):globalCondition: "User wants agent and {{account_verified}} is true"✅ Uses only system/custom variables:globalCondition: "User wants agent and {{custom_business_hours}} is true"
❌ Too broad:globalCondition: "User mentions billing" # Triggers even for "What are billing hours?"✅ More specific:globalCondition: "User has a billing issue or problem they need help with"
❌ Problem:Global Node A: "User wants help"Global Node B: "User needs assistance"✅ Solution:Global Node A: "User wants to speak with a human agent"Global Node B: "User wants to return to main menu"
Global Node: "Transfer to Agent" Type: Transfer Agent globalCondition: "User wants to speak with a human representative" globalDtmfTrigger: "0" agentId: "customer-service-pool"Global Node: "Main Menu" Type: Conversation globalCondition: "User wants to return to the main menu" globalDtmfTrigger: "9" message: "Main menu..."
Global Node: "Emergency Support" Type: Transfer Agent globalCondition: "User has a critical system outage or emergency" requiresDoubleConfirm: false agentId: "emergency-support"Global Node: "Create Ticket" Type: Tool globalCondition: "User wants to create a support ticket" toolName: "CreateSupportTicket"
Global Node: "Interested in Product" Type: Conversation globalCondition: "User shows interest in making a purchase" message: "Great! Let me connect you with a sales specialist." Transitions: - Always → Sales_QualificationGlobal Node: "Pricing Information" Type: Conversation globalCondition: "User asks about pricing or costs" message: "Our pricing varies by package..."
Global Node: "Cancel Appointment" Type: Tool globalCondition: "User wants to cancel their appointment" requiresDoubleConfirm: true toolName: "CancelAppointmentAPI"Global Node: "Reschedule" Type: Conversation globalCondition: "User wants to reschedule their appointment" message: "I can help you reschedule..."