Visual Flow Builder
Design call routing visually with a drag-and-drop canvas. Flows control what happens before, between, and after AI agents — DTMF menus, AI intent routing, data collection, API calls, and more.
Example: DTMF routing to agents
A caller dials in, hears a menu, presses a key, and gets routed to the right AI agent:
Example: AI intent detection
No DTMF needed — the AI listens to what the caller says, classifies their intent, and routes accordingly:
Example: Lead qualification with CRM lookup
Collect the caller's details, query your CRM, route based on account status, then send a follow-up SMS:
When to use a Flow vs just an Agent
✅ Use a Flow when you need
- • DTMF key menus
- • Collect data before the agent starts
- • Route to different agents or teams
- • CRM or database lookup first
- • Time-of-day or language routing
- • Complex branching logic
✅ Use just an Agent when
- • Open-ended conversation from the start
- • Single-purpose bot (FAQ, booking)
- • No routing logic needed
- • Quick prototype or testing
Node reference
Call Entry
Where every flow begins
Speak
Play a static message
Agent
Full AI conversation
DTMF Menu
Press 1 for Sales…
Collect Data
Ask for name, email…
Condition
Branch on any variable
API Call
Call an external endpoint
Transfer
Route to a human
Send Message
SMS or WhatsApp
End Call
Goodbye + disconnect
Call Control
- Call Entry (Start): Every flow begins here. Sets the call language and duration limit. Only one per flow.
- End Call: Speaks a farewell message and terminates the call. Multiple End nodes are allowed.
- Transfer: Routes the caller to a human agent phone number or queue (cold or warm).
- Human Handoff: Adds the call to the human agent queue with full transcript. Shows in Live Space escalation queue.
- Schedule Callback: Books an outbound callback for the caller at a later time.
Conversation
- Speak: The system speaks a static message. Supports
{{variable}}substitution. - Agent: Hands control to an AI agent for a full multi-turn conversation. Exits via done / escalate / timeout or any custom trigger.
- AI Speak: Generates a single dynamic response using the AI, then advances. Good for personalized greetings.
- AI Classify: Runs the AI silently to classify intent, stores result in a variable. No speech output. Use before Condition for intent routing.
- Listen: Waits for the caller to speak and stores the transcript in a variable.
- DTMF Menu: Presents a key-press menu and routes based on the digit pressed.
- Collect Data: Asks for multiple pieces of information one at a time (name, email, account number).
Logic & Data
- Condition: Branches the flow based on variable values, keywords, AI intent, or regex. Supports AND logic for complex rules.
- Set Variable: Stores a hardcoded or computed value in a flow variable.
- Knowledge Search: Searches the knowledge base with a query and stores the result in a variable.
- API Call: Makes an HTTP request mid-flow and stores the JSON response in a variable.
- Wait / Hold: Plays hold music or a message for a set duration.
Condition rule types
Contains keyword(s)
"interested, yes, sign me up"
Intent match (AI)
"caller wants to cancel"
Variable = value
{{tier}} = "premium"
Variable contains
{{city}} contains "Mumbai"
Variable is set
{{email}} is not empty
Variable > number
{{score}} > 7
Regex pattern
"^\+91[0-9]{10}$"
Default (fallback)
Always add as the last branch
Agent node — exits and triggers
Every Agent node has three built-in exits plus any custom triggers you define:
done
Caller said bye
escalate
Caller asked for human
timeout
Max turns reached
custom trigger
Any keyword or AI-detected exit
Testing your flow
- Go to Playground → Flow tab and select your flow.
- Text mode: Type what a caller would say. The same pipeline runs as on a live call.
- Voice mode: Speak into your microphone for full speech recognition → flow → voice output.
- Watch which node is active in real time, see variables as they're set, hear TTS responses.
One Start node per flow
Flow variables
Variables are named values that flow between nodes. Use {{name}} syntax anywhere in text fields.
Always available:
{{caller_phone}}{{session_id}}{{agent_id}}{{flow_id}}Other variables are created by: Listen, Collect Data, Set Variable, API Call, AI Classify nodes.
