Daily Telephony Overview
Using Daily’s PSTN and SIP infrastructure with your Pipecat Cloud agents
DailyTransport supports both SIP and PSTN calls. This means that you can receive and make calls to and from external SIP addresses. Similarly for PSTN, you are able to purchase phone numbers and hence make and receive calls to and from the purchased phone numbers.
Getting Started with Daily Telephony
Phone Numbers
Purchase and manage phone numbers for use with your Pipecat agents
Dial-in
Configure your bot to receive incoming calls
Dial-out
Enable your bot to make outbound calls
Purchase a phone number
You can buy a phone number through the Pipecat Cloud Dashboard:
- Go to
Settings
>Telephony
- Follow the UI to purchase a phone number
- Configure the webhook URL to receive incoming calls
Or purchase the number using Daily’s PhoneNumbers API.
Configure Pinless Dial-In
When a phone call or a SIP interconnect call is received on Daily, the call is placed on hold and the caller hears hold music while Daily triggers a webhook (room_creation_api
). This phone number–to–webhook mapping is managed through your Daily domain. You can create a domain-dialin-config
entry using Daily’s REST API:
In the example, if you omit the phone_number
field, Daily will generate a static SIP URI (sip_uri
) that can be used for SIP interconnect. This is useful if you’re routing calls from providers like Twilio, Telnyx, Exotel, or Plivo.
Dial-in
The call flow for handling inbound calls looks like this:
- The user calls your purchased phone number. Daily receives the call and places it on hold.
- A webhook triggers the
room_creation_api
. - Your server calls the Pipecat Cloud endpoint (
{service}/start
) with thedialin_settings
. - The bot starts speaking as soon as the remote user joins.
In a future update, steps 2 and 3 will be automatically managed by Daily via a new {service}/
endpoint, simplifying the process. While the update is being rolled out, we provide example servers built with Next.js
and FastAPI
to help you get started with your own implementation.
phone_number
or the sip_uri
.Dial-in Example Servers
Complete example of a Pipecat bot implementation that handles both incoming (dial-in) and outgoing (dial-out) calls with voicemail detection
Dial-out
The call flow looks like this:
- Your application calls the Pipecat Cloud endpoint with
dialout_settings
- Bot begins dialing out when the call state moves to
joined
- Bot waits for the remote party to speak before responding