<Response>

TelVox Connect · Programmable voice

Phone calls ina few lines of XML.

Phone calls in a few lines of XML.

Return Twilio-style XML from your server and Connect runs it on a live call: say, play, gather, dial, record and enqueue.

Try an example
editable

Events show up here: each verb, each request to your server, each status callback.

YOUR NUMBER--:--

+91 22 4000 1234

Ready

Call this number and Connect runs your XML.

Press Place test call, edit the XML, or pick another example.

</Response>

The verbs

Nine verbs and four nouns, live today.

Pick one to see what it takes and what behaves differently. The dashed ones aren't built yet. Better you read that here than find it in production.

SpeakListenConnectControlTelVox extras

Not built yet

Redirect

jump to another URL

Connect

media streams

Stream

live audio out

Refer

SIP REFER

Pay

card capture

Leave

leave a queue

Client

Dial an app user

Echo

echo test

<Gather>

live

Asks a question and collects the digits the caller presses.

numDigits
digits to collect, default 1
timeout
seconds to wait, default 5
action
your URL that gets the digits
  • Keypad (DTMF) only. No speech input yet.
  • The digits reach your action URL as JSON: { "digit": "1" }.
  • Gather ends the document. Put what comes next in your action's reply.
<Response>
  <Gather numDigits="1" action="/menu" timeout="6">
    <Say>Press 1 for sales, or 2 for support.</Say>
  </Gather>
</Response>

Moving from Twilio

Your XML comes with you. Here's the rest of the diff.

Carries over as is

  • Your <Response> documents built from the nine verbs, including a Say inside Gather and the nouns inside Dial.
  • Status callbacks with the same field names: CallSid, CallStatus, Direction, From, To, Duration and the rest.
  • Dial results on your action URL: DialCallStatus, DialCallDuration and RecordingUrl.
  • Conference settings like beep, muted, startConferenceOnEnter and endConferenceOnExit.

Change these

  1. 01Start calls with our REST API.A Bearer key and three fields: to, from and url. Twilio's helper libraries won't connect to it.
  2. 02Read webhook bodies as JSON.Gather sends { "digit": "1" }, not a Digits form field.
  3. 03Gather is keypad only, and it ends the document.Put what happens next in your action's reply. On a timeout it posts an empty digit.
  4. 04Record is silent unless you ask for the beep.Add playBeep="true".
  5. 05Dial records from answer by default.Add record="do-not-record" when you don't want a recording.
  6. 06Some verbs aren't built yet.Redirect, Stream, Connect, Pay and the other dashed tiles above.
server.js−2 +7
// webhooks arrive as JSON
+app.use(express.json());
 
app.post("/menu", (req, res) => {
- const choice = req.body.Digits;
+ const choice = req.body.digit;
res.type("text/xml").send(menuFor(choice)); // your XML, unchanged
});
 
// starting a call
-await client.calls.create({ to, from, url });
+await fetch(`${TELVOX_API}/api/calls`, {
+ method: "POST",
+ headers: { Authorization: `Bearer ${TELVOX_KEY}`, "Content-Type": "application/json" },
+ body: JSON.stringify({ to, from, url }),
+});

That's a typical Node app. The XML your handlers send back doesn't change.

Starting fresh

Your first call in three steps.

  1. 1Get your API keySign up and you get a key for the REST API and a dashboard.
  2. 2Claim a numberPick one from the pool in your dashboard and set its voice URL to your server.
  3. 3Answer with XMLWhen someone calls, Connect asks your URL what to do. Reply with a <Response>.
server.js
app.post("/voice", (req, res) => {
  res.type("text/xml").send(`
    <Response>
      <Say>Hello from TelVox Connect.</Say>
    </Response>`);
});

Then call your number. Full walkthrough in the quickstart.

Bring your call flows. Pay by the second.

Usage pricing, billed by the second. See the rate card, or tell us your volume and we'll price it with you.

Questions

What developers ask first.

For call flows, it's close. XML built from the nine live verbs runs as written. The REST API and the webhook bodies are different, and some verbs aren't built yet. The diff on this page lists every change.

Twilio and TwiML are trademarks of Twilio Inc. TelVox isn't affiliated with Twilio.