Elizon Docs
Telephony

Introduction

Connect real phone numbers to your Elizon voice agents.

Telephony lets a real phone number — inbound or outbound — reach an Elizon voice agent over the PSTN, instead of a WebRTC client connecting directly (see Voice for that path). A caller dials a number, or your integration places a call on a customer's behalf, and the same LiveKit-powered voice agent picks it up.

How it fits together

  • Phone configurations (Elizon calls them SIP trunks internally) connect a real carrier — Twilio, Telnyx, Infobip, or your own SIP provider — to a LiveKit room, the same room type a WebRTC voice session uses. Setting one up is a Studio-only, one-time action (see Providers) — it involves exchanging carrier credentials and account-specific configuration that's a poor fit for a programmatic API, and every carrier has its own quirks worth getting right once, deliberately, rather than per-integration.
  • Placing an outbound call and reading call history, on the other hand, are the two things a third-party integration actually needs at runtime — both are public API endpoints, covered in this section.

What this section does not cover

Creating, editing, or deleting a phone configuration; attaching carrier credentials; or managing phone numbers on a trunk. Those are internal Studio actions, not part of the public API — see Providers for how to set one up through the Studio UI.

Development vs. production infrastructure

Elizon's telephony layer runs on LiveKit's SIP capability. During development and testing, this typically runs against LiveKit Cloud, which is a convenient stand-in but has real constraints worth knowing about (no guaranteed static IP for most regions, no SIP REGISTER support). A production Elizon deployment is expected to run self-hosted LiveKit, at which point some of those constraints — like using a carrier's IP-authorization trunk mode — become straightforward, since you control the server's real IP. Keep this in mind if a provider setup step that fails today (e.g. a carrier requiring a fixed IP) is really an infrastructure question, not a configuration mistake.

Where to go next