Overview
Connect Breeze Buddy to the PSTN via Twilio, Plivo, or Exotel. Outbound campaigns, inbound routing, warm transfer.
How telephony works
Every telephony call follows the same core pattern: the provider places or receives a phone call and bridges it to a bidirectional WebSocket connection. Audio frames stream in real-time between the provider and the voice pipeline, which runs STT → LLM → TTS on each turn.
For browser-based sessions without PSTN, see Daily WebRTC.
Outbound call flow
Outbound calls are driven by a background cron that picks up leads in BACKLOG status within the configured calling window.
- Cron pickup — scheduler selects a lead whose calling hours match
- Reserve number — an available number is locked (see Numbers)
- Provider API call — Twilio, Plivo, or Exotel initiates the PSTN call
- Voice pipeline — Pipecat processes audio: STT → LLM → TTS
- Callbacks — provider sends status callbacks; the lead updates to
FINISHEDorRETRY. Configure webhooks for notifications.
Provider comparison
| Feature | Twilio | Plivo | Exotel |
|---|---|---|---|
| Outbound | TwiML / inline | answer_url webhook | Applet routing |
| Audio Encoding | μ-law 8 kHz | PCM L16 8 kHz | μ-law 8 kHz |
| Recording | Native | API-initiated | API-initiated |
| Warm Transfer | Conference API | calls.transfer() | Applet bridge |
| Regions | Global | Global | India-focused |
Inbound call flow
When a customer dials one of your numbers, the provider hits your answer webhook. The server resolves which template(s) are mapped to that number.
| Templates Found | Behavior |
|---|---|
| Single | Connect to AI agent immediately |
| Multiple | IVR menu — customer selects a service |
| None | Call rejected or redirected |
See Inbound Calls and IVR Routing for details.
Next steps
- Twilio Integration — TwiML, Conference API, native recording
- Plivo Integration — XML-based call control, PCM audio
- Exotel Integration — applet routing, India-focused
- Inbound Calls — webhook routing, IVR, business hours
- Warm Transfer — handoff to live agents