Daily WebRTC Transport
The DailyTransport class provides a WebRTC transport layer using Daily.co’s infrastructure. It wraps a Daily-JS call client to handle audio/video device management, WebRTC connections, and real-time communication between clients and bots. For complete documentation on Daily’s API, see the Daily API Reference.
This transport is designed for production use cases, leveraging Daily’s global infrastructure for low-latency, high-quality audio and video streaming. It expects your Pipecat server to include the corresponding DailyTransport
server-side implementation.
Usage
Basic Setup
API Reference
Constructor Options
If set to true
, the transport will buffer local audio until the bot is ready. This is useful for ensuring that bot gets any audio from the user that started before the bot is ready to process it.
The DailyTransportConstructorOptions
extends the DailyFactoryOptions
type that is accepted by the underlying Daily instance. These options are passed directly through to the Daily constructor. See the Daily API Reference for a complete list of options.
While you can provide the room url and optional token as part of your constructor options, the typical pattern is to provide them via a connection endpoint or directly as part of connect()
. See below.
TransportConnectionParams
On connect()
, the DailyTransport
optionally takes a set of DailyCallOptions
to connect to a Daily room. This can be provided directly or via a connection endpoint passed to the PipecatClient
’s connect method. If using an endpoint, your endpoint should return a JSON object matching the DailyCallOptions
type. See the client connect() documentation for more information.
Methods
For most operations, you will not interact with the transport directly. Most methods have an equivalent in the PipecatClient
and should be called from the PipecatClient
. However, there are a few transport-specific methods that you may need to call directly. When doing so, be sure to access your transport via the transport
property of the PipecatClient
instance.
-
preAuth()
This is the one method meant to be called directly, which is used to allow you to gather information about the Daily room prior to connecting. As a Daily-specific action, it is not exposed through the
PipecatClient
. This method must be called prior toconnect()
and use the sameroom_url
andtoken
(optional) as what will be returned by your connection endpoint/eventually used onconnect()
.
Events
The transport implements the various PipecatClient
event handlers. For Daily-specific events, you can attach listeners to the underlying Daily call client. For a list of available events, see the Daily API Reference.
Advanced
Accessing the Daily Call
For advanced use cases, where you may need to work with the Daily call client directly, you can access it via the dailyCallClient
property.
The Daily call client returned is safe-guarded to not allow you to call functions which affect the call’s lifecycle and will redirect you to use either a Transport method or the PipecatClient
to perform the equivalent action.
More Information
Package
@pipecat-ai/daily-transport