Voice Agents
Admin-grant feature. Voice agents are gated behind the voiceAgents feature flag, granted per organization by Kaanha AI. Lifetime Deal plans do not include voice at any tier — voice is only available on subscription plans (Pro and above) once granted.
Kaanha AI voice agents are full-duplex, multi-turn AI callers — they answer your inbound numbers, place outbound calls, and share the same prompt + tools system as your text chatbots.
Provider Stack
The AI providers are platform-managed — there’s no bring-your-own-key for voice at any plan tier, so per-minute economics stay predictable. You choose from the options below; the underlying provider relationship is Kaanha AI’s.Engine
The voice engine runs on Bolna, an open-source conversational-AI framework, customized for Kaanha AI’s telephony and reliability needs — chunked audio delivery for smooth playback, pre-synthesized welcome messages so the caller hears an instant clean greeting, and per-turn latency instrumentation so slow turns are visible rather than just “the call felt laggy.”What Voice Agents Do
- Answer inbound calls routed from a phone number you assign to the agent.
- Place outbound calls from the agent’s dialer, or as part of an outbound campaign (see below).
- Multi-turn conversation — full STT → LLM → TTS loop with interruption handling, end-of-utterance detection, and configurable silence timeouts.
- Tool calls — the same built-in CRM/product tools your text chatbots use (order lookups, stock checks, appointment scheduling, and more), plus any tools you’ve enabled specifically for voice. Tool calls are HMAC-verified end to end.
- Real-time transcription — every utterance persisted to the database; visible in the call’s history entry once the call ends.
- Multi-agent delegation — a voice Lead Agent can call a Helper agent mid-call the same way a text Lead Agent does (see AI Chatbots → Multi-Agent Orchestration); voice’s delegation depth cap is 2 versus 3 for text, to keep latency in check.
- Cross-channel follow-up — a voice agent can push a WhatsApp message to the caller’s contact mid-call or after the call ends.
Setting Up a Voice Agent
Navigate to Voice Agents and click + New Voice Agent. Configure it across its tabs:- Agent — name, description, welcome message (the first thing the agent says when the call connects), language, and hangup prompt.
- LLM Config — provider (OpenAI/Anthropic), model, temperature, and related generation settings.
- Audio — STT/TTS provider and voice selection. Voices are previewable in the UI before you commit to one.
- Engine — task type (conversation, extraction, etc.) and any advanced engine-level configuration.
- Call — timing behavior: how long to wait after the caller stops speaking, interruption sensitivity, hangup-after-silence, max call duration, backchanneling (“mm-hmm” style acknowledgements), filler words, and ambient noise.
- Tools — enable built-in tools this agent can call mid-call.
- Team — multi-agent delegation settings (Lead/Helper/Solo), if the
multiAgentfeature is enabled for your org. - History — past calls, transcripts, and latency/quality data once the agent has taken calls.
- Analytics — aggregate stats across all calls.
- Inbound — inbound-specific settings (e.g. matching a known caller against your CRM).
Backing Up or Cloning a Voice Agent — Export Manifest
Just like a chat bot, a voice agent’s full configuration can be exported as a single JSON file — click Export manifest in the agent’s editor header. This is a read-only snapshot for backup or reference; re-importing it to create a new agent isn’t available yet.Phone Number Assignment
Voice agents need a phone number to receive inbound calls or place outbound calls.- Go to Phone Numbers.
- Purchase a number (subject to your plan’s allowance), or connect a number you already own from an external carrier via SIP (see below).
- Assign the number to a voice agent from the dropdown.
- The telephony webhook is auto-configured to route to the engine — this happens automatically on every save, so if the routing is ever deleted externally, saving the agent again repairs it.
Telephony: Two Paths
Which path a call takes depends on the number’s provider, resolved automatically — you don’t have to configure this yourself:- Indian numbers (Vobiz) — the primary path for Indian DIDs. The call connects directly from the carrier to the voice engine; there’s no intermediate hop.
- Twilio numbers — used for non-Indian numbers. The call is bridged through Twilio’s media-streaming infrastructure to the voice engine.
Inbound Call Flow
Outbound Calls
Outbound calls require explicit recipient consent and are the customer’s legal responsibility to verify (see Compliance Considerations).- Single call: open the voice agent and use its dialer to place a call to a specific number, optionally pre-loading contact/deal context so the agent has memory of the relationship.
- Bulk campaigns: create an Outbound Campaign (see Campaigns → Voice) — upload a contact list, set a calling window (respecting the campaign’s timezone), a concurrency limit, and a retry policy for no-answers. The campaign dialer sweeps the list automatically within your configured window.
AI Behavior & System Prompts
Voice agents share Kaanha AI’s text-chatbot prompt format. A good voice prompt:- States the agent’s identity (“You are Riya, a sales rep for Acme Inc.”).
- Defines the task scope — task-specific agents only, per Meta’s policy on AI agents; the same principle applies to voice as to WhatsApp chat.
- Lists what the agent must NOT do (don’t promise refunds, don’t quote prices, etc.).
- Sets escalation triggers (“If the caller asks for a human, transfer immediately.”).
Testing Without a Real Phone Call
Two tools let you iterate on a voice agent without dialing a real number:- Browser test call — speaks directly to the engine from your browser’s microphone, full audio round-trip, no phone required.
- Text chat simulation — a text-only conversation using the agent’s exact system prompt and provider, for quickly checking prompt behavior without any audio involved.
Welcome Message Pre-Synthesis
When you save a voice agent, the engine pre-synthesizes the welcome message and caches it so the caller hears a clean, immediate greeting before the live STT/LLM/TTS loop spins up. All three TTS providers (Sarvam, Deepgram Aura, ElevenLabs) support this.Tool Calls
Tools let the agent invoke real backend functions mid-conversation — the same built-in CRM/product tool registry your text chatbots use, plus anything you’ve specifically enabled for voice in the agent’s Tools tab. Tool calls are HMAC-verified between the engine and the platform, and scoped to your organization — there is no cross-tenant tool execution.Call Recording & Conversation Persistence
Agent Versioning
Every save creates a new version snapshot of the agent’s full configuration. Open Version History from the agent editor to:- Review past versions with their change summary and who saved them
- Roll back to any prior version — publishing a version atomically restores that exact configuration and re-syncs the engine
Outbound Campaigns
Create a campaign under Campaigns → Voice to dial a list of contacts automatically:- Upload or select the contact list
- Set the calling window (start/end time, in the campaign’s own timezone) so calls only go out when it’s appropriate to call
- Set a concurrency limit (how many calls run at once)
- Configure retry behavior for no-answers (exponential backoff, capped)
Synthetic Monitoring
The platform runs an automatic health probe against every active voice agent every 15 minutes — checking the engine is reachable, the agent’s config is loaded correctly, and welcome-message synthesis works. If an agent fails two checks in a row, it’s flagged for review. You can see the current health status per agent from the admin system dashboard (super-admin only).Content Safety
Voice agents pass every LLM input/output through the same content-safety filtering used by your text chatbots. If a flagged classification is returned:- The agent emits a safe fallback line instead of the LLM’s response.
- The conversation is automatically routed to a human handler.
- The flagged content is logged for compliance review.
AI Disclosure & Human Escalation
Unlike text chatbots (where the platform automatically injects a disclosure message), voice disclosure is currently the operator’s responsibility to include in your own welcome message or system prompt — for example, “This call may be handled by an AI assistant.” We recommend every voice agent’s welcome message make this clear, both as a matter of policy and of caller trust. Configure aHUMAN-style escalation phrase in your system prompt (e.g. “if the caller says ‘human’ or ‘representative’, transfer the call”) — the agent honors it and transfers or queues the caller accordingly.
See /ai-disclosure for the platform’s full AI disclosure and system card.
Multi-Tenant Isolation
Every voice agent is scoped to your organization end to end:- API routes are org-scoped and authenticated.
- The engine authenticates each agent operation against the org-scoped agent ID.
- Inbound webhooks resolve the dialed number back to your organization before routing anywhere.
- HMAC verification on every engine ↔ platform callback prevents cross-tenant spoofing.
Outbound SIP Trunking — External Carrier Integration
If you have phone numbers from an external carrier (Vobiz, Plivo, Exotel, Vonage, or any SIP provider) that you’d rather keep with that carrier, you can route calls from it into the platform via SIP instead of transferring the number. How it works: your carrier routes calls outbound via SIP to a per-organization SIP domain the platform generates for you. The platform receives the call and forwards it to the voice engine — the same path as a natively-purchased number. Setup:- Go to Phone Numbers → Connect External Number.
- The platform generates an isolated SIP domain and credentials for your organization.
- Copy the SIP server, username, and password into your carrier’s SIP trunk / outbound route configuration.
- Confirm setup, then assign the number to a voice agent as usual.
Compliance Considerations
Voice & Billing
Voice usage is metered against your plan’s monthly credit allowance (shared with AI messaging and SMS on Pro and above) — one credit covers roughly 6 seconds of call time. If you run out mid-cycle, you can top up with a credit pack at any time. See Billing & Plans for exact allowances per plan.Troubleshooting
Related
- AI Chatbots — text counterpart with shared prompt + tools system, MCP tool connections, and bot manifest export
- Billing & Plans — voice availability and credit allowance per plan
- SMS Channel — shares the same number pool as voice on supported carriers
- AI Disclosure — the platform’s AI disclosure and system card
- Security & Compliance — TCPA, DNC, and multi-tenant isolation