Skip to main content
VobizXML is a near drop-in for PlivoXML: same <Response> wrapper, same verb names, same nesting rules. The only structural rename is input collection — Plivo’s <GetDigits> and <GetInput> both become Vobiz’s <Gather>.

Verb mapping table

PlivoXML verbplivoxml builder methodVobizXML verbvobizxml builder methodNotes
<Response>ResponseElement()<Response>vobizxml.ResponseElement()Same root. Serve as application/xml.
<GetDigits>add_get_digits()<Gather>add_gather() (alias add_get_digits())Rename. timeoutexecutionTimeout, digitTimeoutdigitEndTimeout.
<GetInput>add_get_input()<Gather>add_gather() (alias add_get_input())Rename onlyinputType/executionTimeout already match.
<Speak>add_speak()<Speak>add_speak()Same. voice (WOMAN/MAN), language, loop.
<Play>add_play()<Play>add_play()Same. loop (0 = infinite). MP3/WAV over HTTPS.
<Wait>add_wait()<Wait>add_wait()Same. length, silence/minSilence, beep.
<Dial>add_dial()<Dial>add_dial()Same. Nest Number/User. Ports verbatim.
<Number>add_number()<Number>add_number()Same. sendDigits, sipHeaders.
<User>add_user()<User>add_user()Same. SIP endpoint as text content.
<Record>add_record()<Record>add_record()Same verb; action is required in Vobiz.
<Conference>add_conference()<Conference>add_conference()Same. Room name is text content. startConferenceOnEnter, endConferenceOnExit, callbackUrl.
<Redirect>add_redirect()<Redirect>add_redirect()Same. method (GET/POST).
<Hangup>add_hangup()<Hangup>add_hangup()Same. reason (rejected/busy), schedule.
<DTMF>add_dtmf()<DTMF>add_dtmf()Same. Digits are text content; async (Python kwarg async_).
<PreAnswer>add_pre_answer()<PreAnswer>add_preanswer()Same. Only Speak/Play/Wait nest inside.
<Stream>add_stream()<Stream>add_stream()Same. bidirectional, audioTrack, contentType, keepCallAlive. See gaps.
<MultiPartyCall>add_multi_party_call()no XML verbUse the <Conference> verb or the Conference API.
<Message>add_message()no XML verbIn-call SMS has no VobizXML verb.

Before / after: an IVR menu (GetDigits → Gather)

This is the most common port. Map timeoutexecutionTimeout, digitTimeoutdigitEndTimeout, and add inputType="dtmf".
PlivoXML (before)
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <GetDigits action="https://yourapp.com/menu-choice" method="POST"
               numDigits="1" timeout="10" digitTimeout="3" finishOnKey="#">
        <Speak>Press 1 for sales, 2 for support, or 0 for an operator.</Speak>
    </GetDigits>
    <Speak>We didn't receive your input. Goodbye.</Speak>
    <Hangup/>
</Response>
VobizXML (after)
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Gather action="https://yourapp.com/menu-choice" method="POST"
            inputType="dtmf" numDigits="1" executionTimeout="10"
            digitEndTimeout="3" finishOnKey="#">
        <Speak>Press 1 for sales, 2 for support, or 0 for an operator.</Speak>
    </Gather>
    <Speak>We didn't receive your input. Goodbye.</Speak>
    <Hangup/>
</Response>
The action-URL payload is parameter-compatible: both platforms POST Digits (and, for speech, Speech, SpeechConfidenceScore, and BilledAmount).
<Gather> has no timeout attribute — always use executionTimeout (5–60s, default 15). In VobizXML timeout belongs only to <Dial> and <Number> (ring timeout). This is the single most common porting mistake from Plivo’s <GetDigits timeout="...">.

Gotchas

  • <GetInput> is a free port — its inputType and executionTimeout already match <Gather>; just rename the tag.
  • <Record action> is required in Vobiz — Plivo allows <Record> without it; Vobiz needs it to deliver RecordUrl.
  • SSML is content, not builder verbs — pass ssml="..." to add_speak()/<Speak> instead of Plivo’s add_break/add_prosody/etc. See SSML.
  • REST auth differs — Vobiz uses X-Auth-ID + X-Auth-Token headers (not HTTP Basic) against https://api.vobiz.ai/api/v1. See auth & base URL.

What has no Vobiz equivalent

  • <MultiPartyCall> (MPC). Re-model multi-leg flows with the <Conference> verb or the Conference REST API.
  • <Message>. Sending an SMS from within a call flow is not a VobizXML verb.
  • GetDigits retries / validDigits / invalidDigitsSound. Handle retries and validation in your action-URL handler (branch on empty Digits, then <Redirect>).
  • Record recordChannelType and transcriptionReportType. Vobiz exposes fileFormat (mp3/wav) and transcriptionType (auto/hybrid) but no per-channel split or report-type toggle.
  • Stream noiseCancellation / noiseCancellationLevel and Dial callType="whatsapp". Not present on Vobiz; <Dial> is PSTN/SIP/WebRTC only.
For anything in this list, contact support before assuming a mapping rather than inventing one.