# Vobiz Voice Xml

> Build declarative call flows with VobizXML - Vobiz's TwiML-equivalent for play, speak, gather, dial, record, stream, conference, redirect, and hangup verbs.

- **Type:** Skill
- **Install:** `agentstack add skill-vobiz-ai-agent-skills-vobiz-voice-xml`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [vobiz-ai](https://agentstack.voostack.com/s/vobiz-ai)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [vobiz-ai](https://github.com/vobiz-ai)
- **Source:** https://github.com/vobiz-ai/Agent-Skills/tree/main/skills/vobiz-voice-xml

## Install

```sh
agentstack add skill-vobiz-ai-agent-skills-vobiz-voice-xml
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Vobiz Voice XML skill

Use this when the user wants to **script a call flow declaratively** - IVR menus, voicemail, queues, conferences, agent transfers. Anything beyond just "make a call and stream audio" usually involves VobizXML.

## How Vobiz fetches XML

1. Call is created via `POST /Call/` with `answer_url`.
2. When the callee answers, Vobiz POSTs to `answer_url` with call context.
3. Your server returns `...verbs...` as `application/xml`.
4. Verbs execute top-to-bottom.

## Core verbs

| Verb | Purpose |
|---|---|
| `` | TTS - speak text to the caller |
| `` | Play an audio file (HTTPS URL) |
| `` | Collect DTMF or speech input |
| `` | Bridge to another party (PSTN, SIP URI, app, conference) |
| `` | Record the call (optionally stream-while-recording) |
| `` | Open a WebSocket for bidirectional audio (AI voice agents) |
| `` | Add caller to a conference room |
| `` | Fetch new XML from a different URL |
| `` | Pause for N seconds |
| `` | End the call |
| `` | Run verbs before answering (no billsec) |

## Request payload - what your `answer_url` receives

Standard `application/x-www-form-urlencoded` POST (GET sends them as query params). Common parameters: `CallUUID`, `From`, `To`, `Direction`, `CallStatus`, `HangupCause`, `Duration`, `BillDuration`, `ForwardedFrom`, plus `ALegUUID`/`ALegRequestUUID` for outbound calls and any custom `X-VH-` SIP headers. See `xml/request` for the full list.

## Standard callback params by verb

Action/callback URLs receive the standard call params **plus** verb-specific ones:

- ``: `InputType` (dtmf|speech), `Digits`, `Speech`, `SpeechConfidenceScore`, `BilledAmount`. Empty `Digits`/`Speech` on timeout.
- ``: `DialStatus` (completed|busy|failed|cancel|timeout|no-answer), `DialRingStatus`, `DialHangupCause`, `DialALegUUID`, `DialBLegUUID` (empty if unanswered).
- ``: live `DialAction` (answer|connected|hangup|digits) events.
- ``: `RecordUrl`, `RecordingID`, `RecordingDuration`(Ms), `RecordingEndReason` (RecordingTimeout|maxLength|FinishedOnKey|HungUp).
- ``: `ConferenceAction` (enter|exit|start|end), `ConferenceUUID`, `ConferenceName`, `ConferenceCurrentSize`, `RecordingUrl` (on end).
- ``: standard params + `Event=Redirect`.

## Per-verb quick recipes

- **IVR menu**: `` wrapping a ``; put fallback ``+`` after it.
- **Variable-length input**: ``.
- **Speech intent**: ``; threshold `SpeechConfidenceScore`.
- **Blind transfer**: `...` then fallback after.
- **Screen the agent**: ``.
- **Voicemail**: `` prompt + ``.
- **Record whole call**: `` first.
- **Hold music**: `...` or ``.
- **AMD voicemail drop**: `` then ``.
- **Reject without billing**: `` as the first element.
- **Branch/loop**: `https://.../next` (last runnable element).
- **Send tones to a remote IVR**: `1WW2#`.

## Pitfalls

- Response must be `application/xml` (or `text/xml`), not `text/html`/`text/plain`, served over HTTPS, and under 100 KB. Return within 1-2 s or callers hear dead air.
- **`` uses `executionTimeout` (5-60 s, default 15), NOT `timeout`.** `timeout` belongs only to ``/`` and is the ring timeout. `` caps total bridged duration - don't confuse the two.
- Verbs execute strictly top-to-bottom. `` and any `action`-URL handoff (`Dial`/`Gather`/`Record`) end the current document; elements after them are fallback-only.
- All URLs in ``, ``, ``, `` (action/callback/confirmSound/dialMusic) must be fully qualified HTTPS.
- DTMF: `finishOnKey` (default `#`) is excluded from `Digits`; set `finishOnKey=""`/`none` to rely on `numDigits`/timeout. On no input, Vobiz still posts with empty `Digits`/`Speech` - check for empty.
- `Dial`: always branch on every `DialStatus` (busy/no-answer/timeout/failed/cancel/completed). `DialBLegUUID` is empty when nobody answers.
- `Record`: `timeout` is *silence* timeout (not total length); `maxLength` is the hard cap. Set `maxLength` high enough for voicemails.
- Escape `&`, `` in ``/`` text or the document fails to parse.
- `` defaults to `voice="WOMAN"`, `language="en-US"`; not every language has both MAN and WOMAN voices.
- `` early media is unsupported on WebRTC and some PSTN routes - the flow must work without it. Only `Speak`/`Play`/`Wait` nest inside it.
- `loop="0"` means infinite (`Play`, `Speak`) - it stops only on hangup or a parallel event, never on its own.

## When to search docs

- "How do I build an IVR?" → `xml/gather`, `examples/vobiz-ivr-xml-python`
- "Voicemail" → `xml/record/record-a-voicemail`, `examples/vobiz-voicemail-xml-python`
- "Conference call" → `xml/conference`, `solutions/conference-calling`
- "AI voice agent" → `xml/stream`, `integrations/pipecat`
- "DTMF input" → `xml/dtmf`, `xml/gather/detecting-speech-inputs`

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [vobiz-ai](https://github.com/vobiz-ai)
- **Source:** [vobiz-ai/Agent-Skills](https://github.com/vobiz-ai/Agent-Skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-vobiz-ai-agent-skills-vobiz-voice-xml
- Seller: https://agentstack.voostack.com/s/vobiz-ai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
