SIP
Daily supports both SIP Dialin and SIP Dialout along with the following codecs:
- Audio: PCMU/PCMA, G722, Opus
- Video: H264, VP8.
We've tested SIP to work with CPaaS vendors (Twilio, Telnyx, SignalWire) and SIP hardware.
Enable SIP
- Ensure your Daily account is a paid account (add a credit card in the dashboard)
- We've removed the requirement for a paid-support plan for SIP, it is now available for all pay-as-you-go accounts.
- Daily supports multiple SIP dial-in and SIP dial-out, the default
max_sip_pstn_sessions_per_room=5
. Please write to help@daily.co to increase this number.
SIP dial-in (audio only)
Provision the room for a single SIP dial-in
To enable SIP dial-in on a room, use the room properties REST API to set the "sip"
property. As follows:
When this is done, a new read-only "sip_uri"
property will be added to your room, as can be seen in the response:
You can disable SIP on your room by setting the "sip"
property to null
.
Provising multiple SIP dial-ins
Multiple SIP dial-in can be configured for a room using room sip property num_endpoints
. Each SIP and PSTN connection counts towards the max_sip_pstn_sessions_per_room
limit. For example, if you set num_endpoints=5
, then initiating a SIP dialout or a PSTN connection will fail, as all SIP endpoints have been configured for SIP dial-in.
To enable multiple SIP dial-in on a room, use the room properties REST API to set the "sip"
property. As follows:
When this is done, "sip_uri"
contains addition "extra_endpoints"
property, as can be seen in the response:
SIP dial-in (audio and video)
Provision the room with SIP video
To enable video SIP dial-in on a room, use the room properties REST API to set the "sip"
property. As follows:
When this is done, a new read-only "sip_uri"
property will be added to your room, as can be seen in the response:
Dynamically passing display_name
for SIP dial-in
display_name
is configured as part of the room creation or set as room property. Sometimes diplay name is not know at the time of room creation. For such case sip participant's name can be passed as query parameter to sip_uri.
Name must be urlencoded to handle special character (space, &, % ..)
e.g. my user name
is encoded with encodeURIComponent and passed in as my%20user%20name
. See example, below
when x-daily_display_name
is not passed, the display_name
set in the room property is used for each incoming SIP dial-in
How to test SIP dial-in
Once the meeting session starts, the SIP worker(s) will startup and when the SIP URIs are registered with the SIP network, dialin-ready
will fire for each unique SIP URI. Then the third-party SIP client may dial the endpoints provided in the "sip_uri"
.
- A Daily
"sip_uri"
endpoint can only be used by one SIP client at a time. - If multiple SIP clients need to join a room, please select an appropriate
num_endpoints
. - When the SIP call is established, a new participant with the
"display_name"
will join the Daily call - After a disconnection, the SIP client may reuse
"sip_uri"
to dial again and re-join the call - Similarly, if the SIP call fails for some reason, the SIP client will need to re-establish the call
- If the Daily or the SIP call ends, that SIP participant(s) will leave the call and the SIP call legs will be terminated
- If possible, we recommend that SIP clients use the Opus codec for optimal quality and latency
- You can disable SIP on your room by setting the
"sip"
property tonull
.
SIP Dial-out
A Daily room can dialout to a one or more "sipUri"
, please make sure that the sipUri is prefixed with "
sip:`". The API can be invoked from within the client libraries or via the REST API.
You can dialout with SIP Video disabled
Or dialout with SIP Video enabled.
startDialOut()
in daily-js, daily-python/rooms/:name/dialOut/start
SIP Call Transfers and SIP REFER
Read more details on our doc-site