<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 verb | plivoxml builder method | VobizXML verb | vobizxml builder method | Notes |
|---|---|---|---|---|
<Response> | ResponseElement() | <Response> | vobizxml.ResponseElement() | Same root. Serve as application/xml. |
<GetDigits> | add_get_digits() | <Gather> | add_gather() (alias add_get_digits()) | Rename. timeout→executionTimeout, digitTimeout→digitEndTimeout. |
<GetInput> | add_get_input() | <Gather> | add_gather() (alias add_get_input()) | Rename only — inputType/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 verb | — | Use the <Conference> verb or the Conference API. |
<Message> | add_message() | no XML verb | — | In-call SMS has no VobizXML verb. |
Before / after: an IVR menu (GetDigits → Gather)
This is the most common port. Maptimeout→executionTimeout, digitTimeout→digitEndTimeout, and add inputType="dtmf".
PlivoXML (before)
VobizXML (after)
Digits (and, for speech, Speech, SpeechConfidenceScore, and BilledAmount).
Gotchas
<GetInput>is a free port — itsinputTypeandexecutionTimeoutalready match<Gather>; just rename the tag.<Record action>is required in Vobiz — Plivo allows<Record>without it; Vobiz needs it to deliverRecordUrl.- SSML is content, not builder verbs — pass
ssml="..."toadd_speak()/<Speak>instead of Plivo’sadd_break/add_prosody/etc. See SSML. - REST auth differs — Vobiz uses
X-Auth-ID+X-Auth-Tokenheaders (not HTTP Basic) againsthttps://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.GetDigitsretries/validDigits/invalidDigitsSound. Handle retries and validation in your action-URL handler (branch on emptyDigits, then<Redirect>).RecordrecordChannelTypeandtranscriptionReportType. Vobiz exposesfileFormat(mp3/wav) andtranscriptionType(auto/hybrid) but no per-channel split or report-type toggle.StreamnoiseCancellation/noiseCancellationLevelandDial callType="whatsapp". Not present on Vobiz;<Dial>is PSTN/SIP/WebRTC only.