Voice Nodes Reference
Voice nodes enable phone-based automation, from handling inbound calls to making AI-powered outbound calls and voice responses.
Overview
Voice workflows typically follow this pattern:
[Voice Trigger] → [Voice Agent] → [Actions] → [Voice Response/Transfer]
Node Categories
| Category | Nodes |
|---|---|
| Triggers | Voice Inbound, Voice Message |
| AI Agent | Voice Agent |
| Actions | Voice Outbound, Transfer Call |
| Output | Voice Response, Text to Speech |
Supported Providers
- Telephony: Exotel, Twilio, Tata Tele
- TTS (Text-to-Speech): ElevenLabs, Cartesia, Azure, Google, AWS Polly
- STT (Speech-to-Text): Deepgram, Azure, Google, AWS Transcribe
Voice Inbound Trigger
Triggers workflows when incoming phone calls are received.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Name | Text | No | Name for this trigger |
| Voice Provider | Select | Yes | Phone provider integration (Twilio, Exotel) |
| Phone Numbers | Multi-select | Yes | Phone numbers that trigger this workflow |
| Enable Recording | Toggle | No | Enable call recording |
| Call Timeout | Number | No | Max call duration (30-3600 seconds) |
| Business Hours Only | Toggle | No | Only trigger during business hours |
Business Hours Configuration
When Business Hours Only is enabled:
Timezone: UTC
Monday: 09:00 - 17:00 (enabled)
Tuesday: 09:00 - 17:00 (enabled)
Wednesday: 09:00 - 17:00 (enabled)
Thursday: 09:00 - 17:00 (enabled)
Friday: 09:00 - 17:00 (enabled)
Saturday: 10:00 - 14:00 (disabled)
Sunday: (disabled)
Output Variables
{{voiceinboundtrigger_1.caller_number}} - Caller's phone number
{{voiceinboundtrigger_1.called_number}} - Number that was called
{{voiceinboundtrigger_1.call_id}} - Unique call identifier
{{voiceinboundtrigger_1.call_start_time}} - When call started
{{voiceinboundtrigger_1.provider}} - Voice provider name
Voice Message Trigger
Triggers workflows on voice input from various sources (phone, WebRTC, WhatsApp, voice notes).
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Source | Select | No | Filter by source: any, phone, webrtc, whatsapp, voice_note |
| Test Mode | Toggle | No | Allow text input for testing |
| Transcriber Source | Select | No | direct, voice_agent, or none |
| Transcriber Integration | Select | Conditional | STT provider (when source is direct) |
| Language | Text | No | Language code (default: en) |
| Include Timestamps | Toggle | No | Include word-level timestamps |
| Filter Profanity | Toggle | No | Filter profanity from transcription |
Output Variables
{{voicemessagetrigger_1.message}} - Transcribed text
{{voicemessagetrigger_1.audio_url}} - Original audio URL
{{voicemessagetrigger_1.source}} - Input source
{{voicemessagetrigger_1.confidence}} - Transcription confidence
{{voicemessagetrigger_1.duration}} - Audio duration
{{voicemessagetrigger_1.language}} - Detected language
Voice Agent Node
Voice-enabled AI agent for handling phone conversations. Similar to Core Agent but optimized for voice interactions.
Configuration
Basic Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Name | Text | No | Display name for the agent |
| LLM Provider | Select | Yes | AI provider (OpenAI, Anthropic, etc.) |
| Temperature | Slider | No | Creativity (0-1, default 0.7) |
| Max Tokens | Number | No | Response length (50-500, default 250) |
| System Prompt | Textarea | Yes | Agent instructions |
Voice Settings (TTS)
| Field | Type | Required | Description |
|---|---|---|---|
| Synthesizer Integration | Select | Yes | TTS provider |
| Voice ID | Select | Yes | Voice to use |
| Speed | Slider | No | Speech speed (0.5-2.0) |
| Language | Text | No | Voice language |
| Accent | Text | No | Voice accent |
Provider-Specific Settings:
ElevenLabs:
- Stability (0-1)
- Similarity Boost (0-1)
- Style (0-1)
Cartesia:
- Model variant
Transcriber Settings (STT)
| Field | Type | Required | Description |
|---|---|---|---|
| Transcriber Integration | Select | Yes | STT provider |
| Language | Text | No | Transcription language |
| Model | Select | No | STT model (Deepgram) |
| Profanity Filter | Toggle | No | Filter profanity |
| Smart Formatting | Toggle | No | Format numbers, dates |
| Speaker Diarization | Toggle | No | Identify speakers |
Timing Settings:
- Silence Timeout: 100-5000ms (when to finalize transcript)
- Max Segment Duration: 20-70s
- Utterance Timeout: 500-3000ms
Channel Configuration
| Field | Type | Description |
|---|---|---|
| Channel | Select | phone, webrtc, or auto |
| Voice Provider | Select | Telephony provider for phone calls |
Output Variables
{{voiceagent_1.output}} - Final agent response
{{voiceagent_1.transcript}} - Full conversation transcript
{{voiceagent_1.call_duration}} - Call duration
{{voiceagent_1.success}} - true/false
{{voiceagent_1.tool_calls}} - Tools used during call
Voice Outbound Call Node
Make outbound phone calls - either manual (connect two humans) or AI-powered.
Configuration
Call Type
| Type | Description |
|---|---|
| Manual | Connect two humans (e.g., agent to customer) |
| AI | AI Voice Agent handles the call |
Core Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Call Type | Select | Yes | manual or ai |
| Voice Provider | Select | Yes | Telephony integration |
| Caller ID | Text | Yes | Display number for customer |
| Call Input Mode | Select | No | single or batch |
Single Call Input
Phone: {{contact.phone}}
Variables: [
{key: "name", value: "{{contact.first_name}}"},
{key: "company", value: "{{contact.company.name}}"}
]
Batch Call Input
Data Source: {{databasequery_1.contacts}}
Phone Field: phone
Variable Mappings: [
{key: "name", value: "first_name"},
{key: "deal_value", value: "deal.value"}
]
Manual Call Configuration
| Field | Type | Description |
|---|---|---|
| From Number | Text | Agent's phone number |
| Connect Order | Select | from_first (call agent first) or to_first (call customer first) |
| Call Purpose | Text | Notes for CRM logging |
AI Call Configuration
| Field | Type | Description |
|---|---|---|
| Voice Agent Node | Select | Voice Agent to handle call |
| Conversation Variables | Key-Value | Variables to pass to agent |
Output Variables
{{voiceoutbound_1.call_id}} - Unique call ID
{{voiceoutbound_1.status}} - Call status
{{voiceoutbound_1.duration}} - Call duration
{{voiceoutbound_1.recording_url}} - Recording URL (if enabled)
{{voiceoutbound_1.success}} - true/false
# For batch calls
{{voiceoutbound_1.total_calls}} - Total calls attempted
{{voiceoutbound_1.successful}} - Successful calls
{{voiceoutbound_1.failed}} - Failed calls
{{voiceoutbound_1.results}} - Array of call results
Transfer Call Node
Transfer the current call to another phone number or department. Works as a tool for Voice Agent.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Destinations | Array | Yes | List of transfer destinations |
| Transfer Message | Text | No | Message before transfer |
| Fallback Message | Text | No | Message if transfer fails |
Destination Configuration
[
{
"name": "Sales Team",
"number": "+919876543210",
"description": "For pricing and purchase inquiries"
},
{
"name": "Support",
"number": "+919876543211",
"description": "For technical issues and troubleshooting"
},
{
"name": "Billing",
"number": "+919876543212",
"description": "For payment and invoice questions"
}
]
How It Works
- Voice Agent recognizes transfer intent from conversation
- AI calls this tool with the destination name
- Node speaks transfer message and initiates transfer
- If transfer fails, fallback message is played
Supported Providers
- Exotel: Passthru → Connect flow
- Tata Tele: API-based transfer
- Twilio: SIP REFER or REST API
Output Variables
{{transfercall_1.transferred}} - true/false
{{transfercall_1.destination}} - Destination transferred to
{{transfercall_1.transfer_time}} - When transfer occurred
Voice Response Node
Convert text to speech and send as audio response (primarily for active calls).
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Text | Text | Yes | Text to speak (supports variables) |
| Synthesizer Source | Select | Yes | direct, voice_agent, or none |
| Synthesizer Integration | Select | Conditional | TTS provider |
| Output Format | Select | No | mp3, wav, ogg, m4a |
| Output Destination | Select | No | file, stream, phone, webrtc |
Voice Settings
| Setting | Range | Default | Description |
|---|---|---|---|
| Voice ID | - | - | Voice to use |
| Speed | 0.5-2.0 | 1.0 | Speech speed |
| Pitch | -20 to 20 | 0 | Voice pitch |
| Volume | 0.0-1.0 | 0.8 | Audio volume |
Output Variables
{{voiceresponse_1.audio_url}} - URL to audio file
{{voiceresponse_1.audio_data}} - Audio binary (base64)
{{voiceresponse_1.duration}} - Audio duration
{{voiceresponse_1.success}} - true/false
Text to Speech Node
Convert text to speech audio file (for generating audio assets, not live calls).
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Synthesizer Integration | Select | No | TTS provider |
| Voice ID | Text | No | Voice to use |
| Language | Text | No | Language code (e.g., en-US) |
| Voice Gender | Select | No | male, female, neutral, auto |
| Speaking Rate | Slider | No | Speed (0.5-2.0) |
| Pitch | Slider | No | Pitch (-20 to 20) |
| Volume | Slider | No | Volume (0-100) |
| Audio Format | Select | No | mp3, wav, ogg, opus, flac, aac |
Text Source Options
| Source | Description |
|---|---|
| input | From previous node output |
| static | Fixed text in configuration |
| template | Template with variables |
| previous_node | Specific node's output |
Advanced Options
| Field | Description |
|---|---|
| Use SSML | Enable SSML markup for advanced control |
| Output Mode | base64, url, file, or stream |
Output Variables
{{texttospeech_1.audio_data}} - Audio as base64
{{texttospeech_1.audio_url}} - URL to audio file
{{texttospeech_1.duration}} - Audio duration
{{texttospeech_1.format}} - Audio format used
{{texttospeech_1.success}} - true/false
Common Workflow Patterns
Inbound Call → AI Agent
[Voice Inbound Trigger]
↓
[Voice Agent]
- System: "You are a helpful customer service agent..."
- Tools: [KB Search, CRM Manager, Transfer Call]
↓
[CRM Manager: Log Activity]
AI Outbound Campaign
[Database Query: Get contacts]
↓
[Voice Outbound Call]
- Call Type: AI
- Batch Mode
- Voice Agent: Sales Agent
↓
[CRM Manager: Update status]
Manual Call Connect
[Click Trigger: "Call Customer"]
↓
[CRM Manager: Get Contact]
↓
[Voice Outbound Call]
- Call Type: Manual
- From: {{user.phone}}
- To: {{contact.phone}}
Voice Note Processing
[Voice Message Trigger]
- Source: voice_note
↓
[LLM Integration: Summarize]
↓
[CRM Manager: Create Note]
↓
[Text Response: "Note saved!"]
IVR with Transfer
[Voice Inbound Trigger]
↓
[Voice Agent]
- "How can I help today?"
- Tools: [Transfer Call, KB Search]
↓
[Condition: Transfer requested?]
→ Yes → [Transfer Call]
→ No → [Voice Response: "Goodbye!"]
Best Practices
Voice Agent Prompts
Keep prompts concise for voice:
You are a friendly customer service agent for Acme Corp.
- Keep responses under 2-3 sentences
- Speak naturally, avoid technical jargon
- Confirm understanding before actions
- Offer to transfer to human if needed
Transcription Settings
For real-time conversations:
- Silence Timeout: 300ms (faster response)
- Max Segment: 30s
- VAD Threshold: 0.03 (balanced)
Call Recording
Always inform callers about recording:
Transfer Message: "This call may be recorded for quality purposes.
Please hold while I transfer your call."
Error Handling
[Voice Agent] → [Condition: Success?]
→ Yes → [Log: Call completed]
→ No → [Voice Response: Apology] → [Create Task: Follow up]
Batch Call Limits
- Start with small batches (10-20 calls)
- Monitor success rates before scaling
- Implement retry logic for failed calls
- Respect carrier rate limits