pcm16 audio bus. The DID can point at a
native agent or an external agent. A native agent is the managed
runtime: prompt and STT/LLM/TTS in the console. An external agent is your own
worker process. The worker holds one outbound QUIC/WebTransport session. It
registers under an agent handle, and a VENDOR_BRIDGE config routes calls to
it.
What maps to what
Bring the trunk up
1
Create the trunk in the console
In the console (
agent.clutchcall.dev), add a SIP trunk. Select the auth
mode that your Vobiz service uses:- Registration: enter the SIP username/password from Vobiz. The platform registers to their registrar and keeps the binding alive.
- IP auth: exchange static IPs instead. Allowlist Vobiz’s signaling IPs on the trunk. Give Vobiz the platform’s SIP host as the call target.
2
Route each DID to an agent
Attach your Vobiz DIDs to the trunk. Point each DID at an agent. Both
kinds are first-class targets:The worker side is the same seam as every other external-agent
integration:
- Native agent: the managed runtime runs the conversation (cascade or speech-to-speech) with your provider keys. You run no servers.
- External agent: your own process gets the call. The console’s
External agents create flow reserves the agent handle. It mints the
media app key/secret that your worker authenticates with. It writes the
VENDOR_BRIDGEconfig:
agent-config.json
pip install "telequick-agents[quic]", plus a handler that
reads call.audio() and writes call.send_audio(). Start from the
external-agent recipe.3
Place a test call in each direction
Dial the DID from a mobile phone. The engine answers on the Vobiz leg and
dispatches to the routed agent. Then originate outbound through the same
trunk with an
mpk_ management key (console → Settings → API keys):4
Wire up lifecycle events
Register a signed webhook for call lifecycle, CDRs, recordings, and
transcripts. Use
webhooks.create {vertical:'voice', url, eventTypes}
with events such as voice.call.answered, voice.cdr.created, and
voice.recording.ready. Check the X-Clutchcall-Signature header
(t=<epoch>,v1=<hmac_sha256(secret, "t.body")>) with
telequick_agents.webhooks.verify_signature before you trust a delivery.Troubleshooting
Inbound calls never reach the platform
Inbound calls never reach the platform
On registration trunks, check the registration state on the trunk page.
Wrong credentials or a Vobiz-side block shows there first. On IP-auth
trunks, check that the allowlist covers all of Vobiz’s signaling IPs,
not only the IP that you saw traffic from.
The call connects but audio is one-way
The call connects but audio is one-way
This is a classic SIP/NAT symptom on carrier trunks. Check the media (RTP)
path in both directions. Check any address rewriting between Vobiz and the
platform.
SIP & RTP debugging
shows both legs of a live call.
An external agent answers with silence
An external agent answers with silence
The trunk is good, but the worker is not. Check that the worker is
registered under the exact handle in
vendor_room. Check that it has
outbound UDP/443 to engine.clutchcall.dev. Media rides QUIC datagrams. A
TCP-only network registers correctly and then stalls audio.Related
SIP Trunking
Trunk auth modes, codecs, and failover in full.
Number Provisioning
DIDs, routing, and per-number agent assignment.
LiveKit integration
Run an existing LiveKit agent behind your Vobiz DIDs.
Run a LiveKit Agent on the Transport
The end-to-end external-agent recipe for the worker side.

