> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vobiz.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PlivoXML to VobizXML: Verb-by-Verb Call-Control Reference

> A complete verb-by-verb map of PlivoXML to VobizXML call control: GetDigits/GetInput to Gather, Dial, Record, Conference, Stream, plus every attribute rename and the plivoxml-to-vobizxml SDK builder swap.

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>`](/xml/gather).

## Verb mapping table

| PlivoXML verb      | `plivoxml` builder method | VobizXML verb                     | `vobizxml` builder method                 | Notes                                                                                            |
| ------------------ | ------------------------- | --------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `<Response>`       | `ResponseElement()`       | [`<Response>`](/xml/response)     | `vobizxml.ResponseElement()`              | Same root. Serve as `application/xml`.                                                           |
| `<GetDigits>`      | `add_get_digits()`        | [`<Gather>`](/xml/gather)         | `add_gather()` (alias `add_get_digits()`) | **Rename.** `timeout`→`executionTimeout`, `digitTimeout`→`digitEndTimeout`.                      |
| `<GetInput>`       | `add_get_input()`         | [`<Gather>`](/xml/gather)         | `add_gather()` (alias `add_get_input()`)  | **Rename only** — `inputType`/`executionTimeout` already match.                                  |
| `<Speak>`          | `add_speak()`             | [`<Speak>`](/xml/speak)           | `add_speak()`                             | Same. `voice` (`WOMAN`/`MAN`), `language`, `loop`.                                               |
| `<Play>`           | `add_play()`              | [`<Play>`](/xml/play)             | `add_play()`                              | Same. `loop` (`0` = infinite). MP3/WAV over HTTPS.                                               |
| `<Wait>`           | `add_wait()`              | [`<Wait>`](/xml/wait)             | `add_wait()`                              | Same. `length`, `silence`/`minSilence`, `beep`.                                                  |
| `<Dial>`           | `add_dial()`              | [`<Dial>`](/xml/dial)             | `add_dial()`                              | Same. Nest `Number`/`User`. Ports verbatim.                                                      |
| `<Number>`         | `add_number()`            | [`<Number>`](/xml/dial/number)    | `add_number()`                            | Same. `sendDigits`, `sipHeaders`.                                                                |
| `<User>`           | `add_user()`              | [`<User>`](/xml/dial/user)        | `add_user()`                              | Same. SIP endpoint as text content.                                                              |
| `<Record>`         | `add_record()`            | [`<Record>`](/xml/record)         | `add_record()`                            | Same verb; `action` is **required** in Vobiz.                                                    |
| `<Conference>`     | `add_conference()`        | [`<Conference>`](/xml/conference) | `add_conference()`                        | Same. Room name is text content. `startConferenceOnEnter`, `endConferenceOnExit`, `callbackUrl`. |
| `<Redirect>`       | `add_redirect()`          | [`<Redirect>`](/xml/redirect)     | `add_redirect()`                          | Same. `method` (GET/POST).                                                                       |
| `<Hangup>`         | `add_hangup()`            | [`<Hangup>`](/xml/hangup)         | `add_hangup()`                            | Same. `reason` (`rejected`/`busy`), `schedule`.                                                  |
| `<DTMF>`           | `add_dtmf()`              | [`<DTMF>`](/xml/dtmf)             | `add_dtmf()`                              | Same. Digits are text content; `async` (Python kwarg `async_`).                                  |
| `<PreAnswer>`      | `add_pre_answer()`        | [`<PreAnswer>`](/xml/preanswer)   | `add_preanswer()`                         | Same. Only `Speak`/`Play`/`Wait` nest inside.                                                    |
| `<Stream>`         | `add_stream()`            | [`<Stream>`](/xml/stream)         | `add_stream()`                            | Same. `bidirectional`, `audioTrack`, `contentType`, `keepCallAlive`. See gaps.                   |
| `<MultiPartyCall>` | `add_multi_party_call()`  | *no XML verb*                     | —                                         | Use the [`<Conference>`](/xml/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. Map `timeout`→`executionTimeout`, `digitTimeout`→`digitEndTimeout`, and add `inputType="dtmf"`.

```xml PlivoXML (before) theme={null}
<?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>
```

```xml VobizXML (after) theme={null}
<?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`).

<Warning>
  `<Gather>` has **no `timeout` attribute** — always use `executionTimeout` (5–60s, default 15). In VobizXML `timeout` belongs only to [`<Dial>`](/xml/dial) and `<Number>` (ring timeout). This is the single most common porting mistake from Plivo's `<GetDigits timeout="...">`.
</Warning>

## 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](/xml/speak/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](/guides/plivo-to-vobiz/auth-and-base-url).

## What has no Vobiz equivalent

* **`<MultiPartyCall>` (MPC).** Re-model multi-leg flows with the [`<Conference>`](/xml/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](/faq/contact-support) before assuming a mapping rather than inventing one.
