Telephony Overview
Connect telephony providers to make and receive phone calls with your zoxaAI agents.
What you'll learn
How to add telephony providers to your zoxaAI account, manage phone numbers, configure inbound and outbound calling, and choose the right provider for your use case.
Telephony
Telephony providers connect your zoxaAI agents to real phone numbers. Once configured, you can place outbound calls, receive inbound calls, and run campaigns at scale -- all through the same unified platform.
Supported Providers
zoxaAI supports eight telephony providers. All providers support both inbound and outbound calling.
| Provider | Type | Audio Format | Sample Rate | Call Transfer | Auto-Create App | Account ID Field |
|---|---|---|---|---|---|---|
| Twilio | Cloud API | mulaw | 8 kHz | Yes | No | Account SID |
| Vonage | Cloud API | L16 PCM | 16 kHz | Yes | No | API Key |
| Plivo | Cloud API | mulaw | 8 kHz | Yes | Yes | Auth ID |
| Telnyx | Cloud API | mulaw | 8 kHz | Yes | Yes | Connection ID |
| Cloudonix | SIP / Cloud | mulaw | 8 kHz | Yes | Yes | Domain ID |
| Vobiz | SIP / Cloud | mulaw | 8 kHz | Yes | Yes | Account ID |
| Asterisk ARI | Self-hosted | mulaw | 8 kHz | Yes | No | -- |
| Tata Smartflo | Cloud API | mulaw | 8 kHz | Yes | No | -- |
Auto-Create App
Providers marked "Yes" under Auto-Create App will automatically create a voice application on the provider's platform when you save a configuration without specifying an Application ID. The application is pre-configured with the correct inbound webhook URL, so inbound calling works immediately.
How It Works
The telephony system has three layers:
- Configurations -- your provider credentials (API keys, tokens, etc.).
- Phone numbers -- the numbers registered under each configuration, used for caller ID and inbound routing.
- Default outbound -- one configuration is marked as the default for outbound calls.
When a call is placed, zoxaAI resolves the telephony provider from the configuration, initiates the call through the provider's API, and streams audio over WebSocket between the provider and the voice pipeline.
Adding a Provider
Navigate to Telephony
Go to Telephony in the sidebar of your zoxaAI dashboard.
Add a Configuration
Click Add Configuration to open the provider setup form.
Select Your Provider
Choose your provider from the dropdown. The form dynamically updates to show the required credential fields for that provider.
Enter Credentials
Fill in the required fields. Each provider has different credentials:
| Provider | Required Fields |
|---|---|
| Twilio | Account SID, Auth Token |
| Vonage | API Key, API Secret, Application ID, Private Key |
| Plivo | Auth ID, Auth Token |
| Telnyx | API Key |
| Cloudonix | Bearer Token, Domain ID |
| Vobiz | Account ID, Auth Token |
| Asterisk ARI | ARI Endpoint, App Name, App Password |
| Tata Smartflo | Auth Token (API Key optional — outbound only) |
See each provider's dedicated page for details on where to find these values.
Name the Configuration
Give the configuration a descriptive name (e.g., "Twilio US Production", "Vonage India").
Save
Click Save. Your first configuration is automatically set as the default outbound configuration.
For Plivo, Telnyx, Cloudonix, and Vobiz: if you did not provide an Application ID, zoxaAI auto-creates one on the provider's side with the inbound webhook URL pre-configured.
Managing Phone Numbers
After creating a configuration, navigate into it to manage phone numbers. Phone numbers serve two purposes:
- Outbound caller ID -- the number your contacts see when you call them. The provider selects one at random for each call, or you can specify one explicitly.
- Inbound routing -- matching incoming calls to the right agent.
Adding Phone Numbers
Right after you create a configuration, zoxaAI opens it and fetches the voice numbers on your provider account, so you can click Add next to each one or Add all. You can fetch again any time with Fetch from <provider> in the Phone Numbers section. This works for every provider except Asterisk ARI, which has no API that lists its numbers.
To add a number by hand:
- Click into a telephony configuration.
- Click Add phone number.
- Enter the number in E.164 format (e.g.,
+14155552671,+919876543210).
Numbers linked elsewhere
A fetched number with an info icon is linked to another application or connection on your provider account. Outbound calls work; to receive inbound calls through zoxaAI, link it to this configuration's application in your provider's console.
Assigning Inbound Routing
Each phone number can be assigned to an agent for inbound call routing:
- Open the phone number in the configuration (or add a new one).
- Select an agent in the Inbound target dropdown.
- Save the phone number.
When an inbound call arrives on that number, zoxaAI automatically routes it to the assigned agent. For Twilio, Vobiz, and Tata Smartflo numbers you can also bind a number to an agent through the API -- see Register an inbound phone number.
Multiple Configurations
You can add multiple configurations, even from the same provider. Common patterns:
- Geographic separation -- different providers for US, India, and EU traffic.
- Production vs. testing -- separate credentials for development and production.
- Provider failover -- a backup provider if your primary is down.
- Different number pools -- separate configurations for sales and support numbers.
Default Outbound Configuration
One configuration is marked as the default outbound configuration. This is used when:
- An API call does not specify a telephony configuration ID.
- A test call is placed from the dashboard without selecting a specific config.
To change the default:
- Go to the Telephony page.
- Click the star icon next to the configuration you want as the default.
Configuration Cards
Each configuration appears as a card on the Telephony page showing:
| Element | Description |
|---|---|
| Name | Your label for the configuration |
| Provider | Which telephony provider it uses (with logo) |
| Default badge | Indicates which config is used for outbound calls by default |
| Phone number count | How many numbers are registered under this config |
You can:
- Edit a configuration to update credentials or name.
- Delete a configuration (only if no campaigns or active inbound assignments reference it).
- Set as default to use it for outbound calls.
Provider cannot be changed
Once a configuration is created, its provider cannot be changed. If you need to switch providers, create a new configuration and migrate your phone numbers.
How Telephony Connects to Agents
Telephony configurations are used at multiple points in the platform:
| Feature | How Telephony Is Used |
|---|---|
| Test calls | Uses the default config (or a user-selected config) to place a call from the agent editor |
| API calls | The POST /api/v1/call endpoint uses the default config or an explicitly provided telephonyConfigurationId |
| Campaigns | Each campaign uses the organization's telephony config and phone number pool for concurrent dialing |
| Inbound calls | The provider sends a webhook to zoxaAI, which matches the number to a config and routes to the assigned agent |
Webhook Signature Verification
For inbound calls, zoxaAI verifies webhook signatures from each provider to ensure requests are genuine. This happens automatically using the credentials stored in your configuration -- no additional setup is needed.
| Provider | Signature Method |
|---|---|
| Twilio | HMAC-SHA1 using Auth Token |
| Vonage | JWT token verification |
| Plivo | HMAC verification using Auth Token |
| Telnyx | Ed25519 public key verification |
| Cloudonix | API key header validation |
| Vobiz | HMAC-SHA256 body signature |
| Asterisk ARI | N/A (persistent WebSocket, not HTTP webhook) |
| Tata Smartflo | N/A (Voice Bot WebSocket, token-scoped; not HTTP webhook) |