Tata Tele Smartflo setup
Tata Tele Smartflo setup
Smartflo (sold as Acefone outside India) reaches Telenow over its Voice Streaming channel: you register Telenow's WebSocket address as a VOICE Bot in the Smartflo portal, and Tata streams the call's audio to it. There is no answer webhook and no dial plan to author.
Two things about this carrier are unlike every other one Telenow supports, and both are Tata's design rather than ours:
- Outbound needs a per-number key. Tata's Click to Call Support API key is what selects both the caller-ID DID and the destination, so one Smartflo account legitimately holds several. You paste one key per number.
- Warm transfer is not available. Tata exposes no live-call redirect on a voice-streaming leg — only a hangup. Telenow refuses a transfer on a Smartflo number outright rather than failing halfway through one and leaving the caller in silence.
Smartflo is BYOC-only: there is no platform Smartflo account to fall back on, so a connection with missing credentials fails rather than quietly dialling on someone else's account.
Before you start
Two account-level requirements sit outside Telenow entirely:
- Channels Hub access. Voice Streaming lives under Channels Hub, which is enabled per account. If you don't see it, ask your Tata account manager to switch it on.
- Credit. Smartflo accounts are prepaid. A flat wallet refuses outbound Click-to-Call. Tata publishes no balance API, so unlike Exotel, Telenow cannot read your balance and tell you this is the cause — check the Smartflo dashboard when outbound stops but inbound still works.
1. Create the VOICE Bot
In the Smartflo portal, open Channels Hub → VOICE Bot → Add VOICE Bot.
Give it a name, then paste Telenow's streaming address as the wss URL:
wss://api.telenow.ai/webhooks/smartflo/stream
Save to activate.
Use the host your account actually runs on.
api.telenow.aiis the default. If you reach Telenow on your own domain — a white-label or reseller deployment — use that host instead. The exact URL for your account is printed in the connect form itself (Developers → Carriers → Connect carrier → Tata Tele Smartflo), so copy it from there rather than typing it.
Static or dynamic?
Smartflo lets an endpoint be Static (one fixed URL for every call) or Dynamic (Tata asks your server for a URL per call). Both work with Telenow, and the URL above is the static form.
Dynamic is worth the extra step if you make outbound calls. Point the dynamic endpoint at:
https://api.telenow.ai/webhooks/smartflo/wss-url
Tata calls it with the call's id and numbers and Telenow replies with a per-call address, which binds the leg to its conversation immediately. On a static endpoint Telenow matches the call to its conversation by the number being dialled a beat later instead — correct, but a little less precise if the same number is dialled twice within two minutes.
2. Route inbound calls to it
Open My Numbers, pick the DID, choose Configure Destination, and select the VOICE Bot you just created.
This step is manual and cannot be automated. Tata's number API can point a DID at an agent, an IVR, a department or a dial plan — but it has no voice-bot destination — so Telenow cannot do this for you. Smartflo numbers therefore show as needs manual routing in Telenow after a sync, and stay that way; that status is expected, not an error. Inbound will not work until you do this in the portal.
3. Enable outbound
Open API Connect → Click to Call Support API and generate a key. Under Destinations, select the same VOICE Bot.
Repeat for each number you want to call from — the key is what carries the caller ID, so a key generated against one DID cannot dial from another.
4. Connect in Telenow
Go to Developers → Carriers → Connect carrier and pick Tata Tele Smartflo:
| Field | Where it comes from |
|---|---|
| Account identifier | Your Smartflo login / account id. Only used to recognise the same account on a re-connect — not sent to Tata. |
| API token | API Connect → API Token in the Smartflo portal. |
| Click to Call keys | One row per number: the DID, and the key you generated for it in step 3. |
| API host | Leave blank unless Tata gave you a different host. |
Telenow verifies the token against Tata before saving, then imports every number on the account. Re-pull any time with Sync now.
The token expires
★ A Smartflo API token is valid for a fixed 1, 7, 15, 30, or 90 days — chosen when you create it — and there is no renewal API. When it lapses, number sync and outbound dialling stop and the connection shows a credentials error. Generate a new token in the portal and paste it into the same connection; Telenow updates it in place rather than creating a duplicate.
Put the expiry date in a calendar when you connect. This is the most common way a working Smartflo integration stops working.
Call status and recordings
Smartflo's status callback is configured account-wide in the portal, not per call. Point it at:
https://api.telenow.ai/webhooks/smartflo/status
Either method (GET or POST) and either format (JSON or form-encoded) is accepted. Without it, calls still connect and the agent still works, but Telenow won't learn how a call ended — so campaign retries can't tell "no answer" from "answered", and the per-call duration in billing falls back to what the media socket saw.
Telenow records both legs itself, so leave Smartflo-side recording off unless you want a second copy.
Locking down the webhook surface
Tata does not sign its callbacks and publishes no egress IP ranges. If your Tata account manager gives you the ranges, set SMARTFLO_WEBHOOK_IPS to a comma-separated list of IPs/CIDRs to restrict /webhooks/smartflo/* to them.
Two caveats: unset means open (the surface accepts anyone), and the allowlist is IPv4-only — setting it while Tata reaches you over IPv6 rejects every callback.
Troubleshooting
| What you see | What it usually is |
|---|---|
| Inbound rings and then silence | The DID's destination isn't the VOICE Bot (step 2), or it points at a different bot. |
| Inbound works, outbound refused with "no Click to Call key" | No key pasted for that number. The key is per-number, not per-account. |
| Outbound connects but reaches a person, not the agent | The Click to Call key's Destination isn't set to the VOICE Bot (step 3). |
| Everything stops at once, sync included | The API token expired. Generate a new one and re-paste it. |
| Outbound stops, inbound fine | Prepaid wallet is flat. Check the Smartflo dashboard — Telenow can't read your balance on this carrier. |