zoxaAI
Homepage

Tata Smartflo

Connect Tata Teleservices Smartflo as your telephony provider for domestic Indian outbound and inbound voice calls with zoxaAI.

What you'll learn

How to connect a Tata Smartflo account to zoxaAI — the two credentials you bring, the one-time setup in the Tata portal, and how outbound and inbound agent calls stream audio to your agent.

Tata Smartflo

Tata Smartflo is Tata Teleservices' cloud telephony platform and a licensed Indian operator. zoxaAI integrates with Smartflo for both outbound and inbound calling using Smartflo's Voice Bot bidirectional audio streaming channel.

Why Smartflo for India

Twilio and other international carriers cannot originate domestic calls within India (DoT/TRAI regulations). Smartflo is a licensed Indian operator, so it is the right choice for calling Indian numbers. If your calls are outside India, use Twilio or another provider instead.


Provider Details

FeatureValue
Provider namesmartflo
Audio formatmulaw (G.711 µ-law)
Sample rate8,000 Hz
Media transportVoice Bot WebSocket (static URL)
Outbound APIClick-to-Call Support
Call transferBlind (cold) transfer — to a registered Smartflo agent (mobile/extension) or department
Auto-provisioningNo (configured in the Tata portal)

How it works

Smartflo streams call audio to a single static WebSocket URL — your agent's "Voice Bot" endpoint — for both directions:

  • Outbound: zoxaAI dials your customer through Smartflo's Click-to-Call Support API. When the customer answers, Smartflo bridges the call to your Voice Bot and streams the audio to zoxaAI, which runs your agent.
  • Inbound: You point a Smartflo phone number (DID) at your Voice Bot. Incoming calls stream to zoxaAI, which resolves the agent assigned to that number.

zoxaAI gives you one Voice Bot streaming URL per configuration. You paste it into the Tata portal once.


Prerequisites

  • A Tata Smartflo account with at least one phone number (DID).
  • The following features enabled on your account by your Tata account manager (they are gated by Tata support):
    • Channels Hub / Voice Streaming (required for the Voice Bot channel)
    • Webhooks (for call lifecycle events)

Support-gated features

Voice Streaming and Webhooks must be turned on by Tata for your account before setup will work. Raise a request with your Tata account manager first. This is the main onboarding step that takes time.


Credentials

FieldWhere to Find ItSensitiveRequiredDescription
Auth TokenTata portal → API Connect → API TokensYesYesA portal-generated lifetime API token. Powers number listing, credential validation, and call cost/records.
API KeyTata portal → API Connect → Click to Call Support APIYesNoThe Click-to-Call Support key whose Destination is your Voice Bot. Required only for outbound calls — leave blank if this account only answers inbound calls.

Use a portal (lifetime) token

Generate your Auth Token from the Tata portal, not via the login API. Portal tokens do not expire; API-generated tokens expire after 60 minutes.


Setup

Why the order matters

The one thing that trips people up: the API Key (for outbound) can only be created after your Voice Streaming endpoint exists in Tata — and that endpoint needs a URL that zoxaAI only shows after you save the config. So you create the config with just the Auth Token first, then come back and add the key. Follow the steps in order and it's smooth.

Generate your Auth Token (Tata portal)

In the Tata portal: API Connect → API Tokens → Generate token. Copy it. (This is a lifetime token — it does not expire.)

Create the configuration in zoxaAI

Go to Telephony → Add Configuration and select Tata Smartflo. Paste the token into Auth Token, give the configuration a name, and click Save. Leave API Key blank for now.

Copy your Voice Bot streaming URL (zoxaAI)

Open the configuration you just saved and copy the Voice Bot streaming URL shown on the page:

wss://your-domain.com/api/v1/telephony/smartflo/ws?token=<config-token>

Add the Voice Streaming endpoint (Tata portal)

Go to Channels → Voice Streaming → Add an Endpoint and fill in:

  • Endpoint Name: anything recognizable, e.g. zoxaAI
  • Endpoint Type: Static
  • Endpoint: the URL you copied in the previous step
  • Failover Destination: hangup
  • Status: Enabled → Proceed

Generate the Click-to-Call key (Tata portal)

Go to API Connect → Click to Call Support API → Add API Key:

  • My Number: select all your DIDs (or just the relevant ones)
  • Destination Type: Voice Streaming
  • Destination: the endpoint you just created (zoxaAI)

Click Generate and copy the key.

Add the key to zoxaAI (enables outbound)

Back in zoxaAI: open the config → Edit credentials → paste the key into API Key → Save. Leave the Auth Token untouched.

Add numbers and set a default caller ID (zoxaAI)

Right after you save, zoxaAI opens the new config and fetches the DIDs on your Tata account (you can fetch again any time with Fetch from Tata Smartflo in the Phone Numbers section). Click Add next to the DIDs you want, or Add all. Star one as the default caller ID (used for outbound). To answer inbound calls on a number, edit it and assign an inbound agent.

Route inbound DIDs to the endpoint (Tata portal)

For each number that should be answered by an agent: My Numbers → the DID → Configure Destination → Voice Streaming → your endpoint (zoxaAI). This is what makes Tata stream incoming calls to your agent.

Go to API Connect → Webhook and add "Call hangup (Answered)" and "Call hangup (Missed)" pointing to:

https://your-domain.com/api/v1/telephony/smartflo/status-callback

Include custom_identifier, $call_id, $hangup_cause, $billsec, $recording_url, and $direction in the variable template so call outcomes and cost are recorded (and never-answered outbound calls are closed out).

Done — that's a fully working setup

Outbound: place a call from the agent editor — Tata dials the customer, and on answer your agent speaks. Inbound: call a routed DID — the assigned agent answers.


Outbound Calls

Outbound calls use Smartflo's Click-to-Call Support API. zoxaAI dials the customer; when they answer, the call bridges to your Voice Bot and audio streams to your agent.

SourceDescription
Test callsPlace a test call from the agent editor
API callsUse POST /api/v1/call/phone with your API key

API Key required for outbound

Outbound calls require the Click-to-Call Support API Key on the configuration. Without it, outbound attempts return a clear error. Inbound-only accounts do not need it.


Inbound Calls

Point a DID's Destination at your Voice Streaming endpoint in the Tata portal (My Numbers → Configure Destination → Voice Streaming), then assign an inbound agent to that number in zoxaAI. Incoming calls stream to your agent automatically.

See Inbound Calling for details.


Call transfers

Smartflo supports blind (cold) transfers via the standard transferCall tool. The AI plays your optional custom message, then hands the caller directly to the destination and leaves the call.

Transfer detailValue
Transfer typeBlind (cold) — no warm/attended transfer available on Smartflo
DestinationA registered Smartflo agent (mobile number, extension) or department ID
record_transfer flagNo effect — Smartflo does not expose per-transfer recording control
Portal requirementThe destination must exist as a user/agent (or department) in your Smartflo account

Mobile destinations are registered automatically

Tata only transfers calls to entities registered in your Smartflo account. For 10-digit mobile destinations, zoxaAI handles this for you: on the first transfer to a new number it automatically creates a phone-only user/agent in your Smartflo account (named zoxa-transfer-<number>, web login blocked) and completes the transfer — later transfers to the same number reuse it. Extensions and department IDs must already exist in your account. If auto-registration fails, the transfer returns destination_not_registered.

Seat limits are managed automatically

Smartflo accounts have a hard agent-seat cap (for example, "Number of Agents for calling: 2/5"). zoxaAI keeps auto-registered destinations ephemeral: entries named Zoxa Transfer <number> are deleted automatically when a call ends (a destination still on a live bridged call is kept and reclaimed by a later sweep), and if a registration ever hits the seat limit, idle entries are swept and the registration retried. Users you created yourself are never touched.

Blind transfer

With a blind transfer the caller is connected to the destination immediately after the AI plays its message. The AI bot leg drops once the transfer is initiated. If the destination is unavailable, the Tata platform handles the failure — the AI is no longer on the call.


Call events & recordings

zoxaAI receives call lifecycle events from the webhooks you configured. Hangup events carry the outcome (answered, missed, busy, failed), duration, hangup cause, and a recording URL, which zoxaAI records against the call. Calls that are never answered (busy / no answer) are captured from these webhook events.


Limitations

LimitationDetail
Audio formatFixed at 8 kHz µ-law (Smartflo constraint)
Campaign streamingNot supported by Smartflo yet — bulk outbound campaigns cannot stream to the Voice Bot
Number purchaseDIDs are provisioned by Tata; there is no purchase API
DID routingPointing a DID at the Voice Bot is done in the Tata portal (no API)
Warm/attended transferNot supported — Smartflo has no attended-transfer primitive
record_transfer flagNo effect on Smartflo (transfer-recording is not controllable via the Smartflo API)

Troubleshooting

IssueCauseSolution
"Fetch from Tata Smartflo" failsInvalid Auth Token, or API Tokens not enabledVerify the Auth Token was generated in the Tata portal (API Connect → API Tokens); add numbers manually as a fallback
Outbound fails with caller_id errorNo default caller ID setIn the config's Phone numbers section, star one of your DIDs as the default caller ID
Outbound calls fail immediatelyNo Click-to-Call Support API Key on the configurationAdd the API Key whose Destination is your Voice Bot
Call connects but no audioVoice Bot URL wrong, or Voice Streaming not enabledRe-copy the exact Voice Bot streaming URL from zoxaAI; confirm Tata enabled Channels Hub / Voice Streaming
Inbound calls don't reach the agentDID not routed to the Voice Bot, or no agent assignedIn the Tata portal set the number's Destination to the Voice Bot; in zoxaAI assign an agent to that number
Call outcomes / cost missingWebhooks not configured or missing custom_identifierAdd the status-callback webhook with the full variable template including custom_identifier

On this page