<Conference> XML element, and you control participants out-of-band through a REST API (mute, kick, play, record). The XML verb and most attributes line up one-to-one — the main differences are header auth, the SDK resource split (conference, conference_members, conference_recording), and a few Plivo-only attributes.
Plivo → Vobiz mapping
XML element & attributes
Plivo <Conference> | Vobiz <Conference> | Notes |
|---|---|---|
<Conference>RoomName</Conference> | <Conference>RoomName</Conference> | Identical. Room name is the element text, case-sensitive. Vobiz auto-creates the room. |
muted | muted | Same boolean. Join muted. |
startConferenceOnEnter | startConferenceOnEnter | Same. Default true on both. |
endConferenceOnExit | endConferenceOnExit | Same. Moderator-leaves-ends-call pattern. |
maxMembers | maxParticipants | Renamed. Vobiz default 200. |
waitSound | waitSound (+ waitMethod) | Hold audio while waiting to start. |
enterSound / exitSound (beep:1, beep:2, URL) | beep (boolean) | Vobiz collapses both into one on/off beep; no custom URLs. |
record + recordFileFormat | record (boolean) | Vobiz record is boolean only; format is fixed at the room level. Use the Record API for mp3/wav choice. |
timeLimit | timeLimit | Max conference duration in seconds. |
callbackUrl / callbackMethod | callbackUrl / callbackMethod | Lifecycle events. See Conference Callbacks. |
digitsMatch + action / method | (no equivalent) | In-conference DTMF capture isn’t a Conference attribute on Vobiz — use a separate <Gather> leg. |
stayAlone, recordWhenAlone, floorEvent, relayDTMF, hangupOnStar, transcriptionType/Url/Method, sendDigits | (no equivalent) | No direct Vobiz attribute. See gaps. |
REST API (room + member operations)
Vobiz base URL:https://api.vobiz.ai/api/v1. Auth via X-Auth-ID + X-Auth-Token request headers (Plivo uses HTTP Basic with the same Auth ID/Token).
| Plivo (path / Python method) | Vobiz path | Vobiz Python SDK |
|---|---|---|
GET /Conference/ · conferences.list | GET /Account/{auth_id}/Conference/ | client.conferences.list_conferences(auth_id) |
GET /Conference/{name}/ · conferences.get | GET /Account/{auth_id}/Conference/{conference_name}/ | client.conferences.get_conference(auth_id, conference_name) |
DELETE /Conference/{name}/ · conferences.hangup | DELETE /Account/{auth_id}/Conference/{conference_name}/ | client.conferences.delete_conference(auth_id, conference_name) |
DELETE /Conference/ · conferences.hangup_all | DELETE /Account/{auth_id}/Conference/ | client.conferences.delete_all_conferences(auth_id) |
POST .../Member/{id}/Mute/ · conferences.member_mute | POST .../Member/{member_id}/Mute/ | client.conference_members.mute_member(auth_id, conference_name, member_id) |
DELETE .../Member/{id}/Mute/ · conferences.member_mute_stop | DELETE .../Member/{member_id}/Mute/ | client.conference_members.unmute_member(auth_id, conference_name, member_id) |
POST .../Member/{id}/Kick/ · conferences.member_kick | POST .../Member/{member_id}/Kick/ | client.conference.kick_member(auth_id, conference_name, member_id) |
DELETE .../Member/{id}/ · conferences.member_hangup | DELETE .../Member/{member_id}/ | client.conference.hangup_member(auth_id, conference_name, member_id) |
POST .../Member/{id}/Deaf/ · conferences.member_deaf | POST .../Member/{member_id}/Deaf/ | client.conference.deaf_member(auth_id, conference_name, member_id) |
DELETE .../Member/{id}/Deaf/ · conferences.member_deaf_stop | DELETE .../Member/{member_id}/Deaf/ | client.conference.undeaf_member(auth_id, conference_name, member_id) |
POST .../Member/{id}/Play/ · conferences.member_play | POST .../Member/{member_id}/Play/ | client.conference.play_audio_member(auth_id, conference_name, member_id, url=...) |
DELETE .../Member/{id}/Play/ · conferences.member_play_stop | DELETE .../Member/{member_id}/Play/ | client.conference.stop_audio_member(auth_id, conference_name, member_id) |
POST /Conference/{name}/Record/ · conferences.record | POST .../Conference/{conference_name}/Record/ | client.conference_recording.start_conference_recording(auth_id, conference_name, file_format="mp3") |
DELETE /Conference/{name}/Record/ · conferences.record_stop | DELETE .../Conference/{conference_name}/Record/ | client.conference_recording.stop_conference_recording(auth_id, conference_name) |
POST .../Member/{id}/Speak/ · conferences.member_speak | (no equivalent) | No conference member TTS endpoint — see gaps. |
Before / after: join a moderated conference (XML)
Plivo —plivoxml builder:
vobizxml builder (bundled in every Vobiz SDK):
Key differences & gotchas
- Auth. Plivo uses HTTP Basic; Vobiz uses
X-Auth-ID/X-Auth-Tokenrequest headers (the SDK sets these, but rawcurl/HTTP clients must switch). - Member ops are split across SDK resources.
client.conference(kick / hangup / play / deaf),client.conference_members(mute / unmute),client.conferences(room list / get / delete),client.conference_recording(start / stop) — but the REST paths stay under one/Conference/...tree. - Rename
maxMembers→maxParticipantsand noteenterSound/exitSoundcollapse into a singlebeepboolean; recording format moves from XML tostart_conference_recording(file_format=...). - Callback params differ in name. Vobiz posts
ConferenceAction(enter/exit/start/end),ConferenceUUID,ConferenceName,CallUUID,ConferenceCurrentSize, andRecordingUrl. See Conference Callbacks.
What has no direct equivalent
- Speak text to a single member — Plivo’s
member_speakhas no Vobiz endpoint. Pre-render the prompt to audio and useplay_audio_member(url=...). - In-conference DTMF capture — Plivo’s
digitsMatch+action/methodisn’t a Vobiz Conference attribute. Run a separate<Gather>leg for menu input. - Conference transcription attributes — Plivo’s
transcriptionType/transcriptionUrl/transcriptionMethodhave no Vobiz equivalent; record the room and transcribe downstream. stayAlone,recordWhenAlone,floorEvent,relayDTMF,hangupOnStar,sendDigits— these per-member behavior flags are not exposed on the Vobiz Conference element today.