Skip to main content

Exotel

Connect Exotel, build a one-time flow in Exotel, and take and place calls with a Phynxa agent.

Good to know. Transfers to a human number and call recordings are not available on Exotel. Use Twilio if you need them.

What you will achieve

Your Exotel number rings an agent in Phynxa, and the same agent can call people from that number.

How Exotel is different

The other providers call a webhook on Phynxa. Exotel does not. Instead you build a short flow in Exotel's App Bazaar: Call Start, then a Voicebot applet, then Hangup. The Voicebot applet connects the call to an address you copy from Phynxa. You build the flow once and use it for every call.

Two parts happen in Exotel's own dashboard (Exotel controls those screens and they may change). Everything else is in Phynxa.

Prerequisites

  • An Exotel account with at least one ExoPhone (a number Exotel gave you).
  • Your Exotel Account SID, API key and API token. In the Exotel dashboard they are under Settings, then API Settings. Exotel's guide: How to find my API key, API token, account SID and subdomain.
  • Voicebot streaming switched on for your Exotel account. Exotel does not enable it by default. Email hello@exotel.com and ask them to enable the Voicebot applet (voice streaming) on your account.
  • An agent in Phynxa that is published.

Step-by-step setup

Part 1: In Phynxa, connect Exotel

  1. Go to Phone numbers, open the Providers tab, find the Exotel card and choose Add credentials.
  2. Enter Account SID, API key and API token.
  3. If your Exotel account is on Exotel's Mumbai cluster, type mumbai in Account region (optional). Leave it empty for Singapore. If Import numbers fails with "Exotel returned HTTP 401" while your credentials are right, set it to mumbai and try again.
  4. Choose Save, then choose Import numbers and import your ExoPhone.

Part 2: In Phynxa, give the number to an agent

  1. On the Numbers tab, assign the ExoPhone to your agent (see Assign a number to an agent).
  2. For inbound calls the agent's direction must be Inbound or Inbound / Outbound.

Part 3: In Exotel, build the flow once

  1. In Phynxa, open Phone numbers, then the Webhook setup tab. Next to Exotel, choose the copy button. The address starts with wss:// and ends with sample-rate=8000. Treat it as private: it contains your workspace's key.
  2. In Exotel, open App Bazaar and create a new app (a flow).
  3. Drag in the Voicebot applet. Do not use Stream or Passthru.
  4. Paste the address you copied into the Voicebot applet's URL field.
  5. Add a Hangup applet after it, so the flow reads Call Start, Voicebot, Hangup.
  6. Save the app.

Part 4: In Exotel, send the number to the flow

  1. In Exotel, open ExoPhones and edit your number.
  2. Under App, choose the flow you just built, then save.

Inbound calls to that number now reach your agent.

Part 5 (only for outbound calls): tell Phynxa your flow

  1. In Exotel, open App Bazaar, My Apps, and find your flow's ID. It is also the number at the end of the flow's address, …/exoml/start_voice/926.
  2. In Phynxa, on the Exotel card choose Add credentials, type the ID into Flow (app) ID (optional) and choose Save.
  3. Make sure the agent's direction is Outbound or Inbound / Outbound, and that the ExoPhone is assigned to it. It is the caller ID.

Phynxa asks Exotel to ring the person first. When they answer, Exotel runs your flow and connects them to the agent.

Configuration details

  • One flow serves both directions. The same Call Start, Voicebot, Hangup flow is used for inbound and outbound calls.
  • Ending a call. When the agent hangs up, Phynxa closes the connection and Exotel moves on to the Hangup applet, which ends the call. Do not skip the Hangup applet.
  • Sample rate. The address asks Exotel for 8 kHz audio (normal phone quality). Phynxa reads the rate Exotel actually uses when the call starts.
  • Keep the address private. It carries your workspace's key. Anyone who has it can start a call on one of your numbers. Do not put it in public places.
  • Not available on Exotel. Transfers to a human, and call recordings.
  • Number format. Exotel may write a number as 08012345678 or +918012345678. Phynxa treats both as the same number.

Testing

  1. Inbound. Call your ExoPhone from a mobile. The agent should answer with its greeting.
  2. Outbound. On Phone numbers, choose Test call, pick the agent, enter your mobile number in international format (for example +919876543210) and choose Call.
  3. Check History for the call.

Expected result

Your phone rings or the agent answers, you hear the greeting, and History shows the call as Inbound or Outbound.

Troubleshooting

SymptomLikely causeCheck and fix
Import numbers says "Exotel returned HTTP 401"Wrong key or token, or the account is on the Mumbai clusterRe-copy the key and token. If they are right, set Account region (optional) to mumbai.
The webhook tab shows "Not available yet" for ExotelThe platform's public address is not setContact support.
Calling the ExoPhone: the line is silent or says the call cannot be completedThe number is not attached to your flow, or Voicebot streaming is not enabledCheck ExoPhones, App. Ask Exotel to enable the Voicebot applet.
The call connects, then the connection closes at onceThe address was pasted without its key, or was editedCopy it again from Webhook setup and paste it whole.
The call connects but no agent answersNo agent has that number, or the agent is paused or outbound onlyOn Numbers, check Answered by; publish the agent; set its direction to Inbound or Inbound / Outbound.
Outbound: "Missing Exotel details: Flow (app) ID"The flow ID is not savedDo Part 5.
Outbound: Exotel rejects the callThe ExoPhone, flow or number is not allowed on your Exotel accountRead the message shown; check the call in Exotel's call log.
Outbound rings the person but nothing is saidThe flow is not Call Start, Voicebot, Hangup, or the address in it is out of dateRebuild the flow as in Part 3.
Audio is choppy or distortedA poor line or network on one sideCall again from another phone. If it persists, tell support what you hear, with the time of the call.

Something here does not match what you see in the dashboard? Let us know.