Daily Dial-out
Using Daily’s Transport to make calls to external SIP Addresses and PSTN numbers
To initiate outbound calls, you first need to configure your Daily rooms to allow dial-out by setting enable_dialout
in dailyRoomProperties
. Then, include the target phone number(s) in the request body
of {service}/start
.
In this example, we use the dialout_settings
array to pass one or more phone numbers for the bot to dial. Each object in the array must include a phoneNumber
and can optionally specify a callerId
to control the outbound caller ID.
If no callerId
is provided, a random phone number will be used to make the
call. To specify the caller ID, use the phone number’s
id
as the callerId
.
The API_KEY here is Pipcat Cloud’s public API key, typically begins with “pk_…”
The bot should begin dialing out as soon as the call state transitions to the joined
state.
Unlike dial-in scenarios where the bot typically speaks first, dial-out calls may require the bot to wait for the remote user to speak. In these cases, you can start listening for the remote user when the on_dialout_answered
event fires.
This is also a good point to initiate voicemail detection—for example, by analyzing the remote user’s audio to determine if the call has reached a voicemail.
Examples of dialout_settings
Here are various configurations you can use in the dialout_settings
array:
Next Steps
After configuring your dial-out functionality, you can implement a Pipecat bot to handle the call interactions:
Dial-in/Dial-out Bot Example
Complete example of a Pipecat bot implementation that handles both incoming (dial-in) and outgoing (dial-out) calls with voicemail detection