PipecatClient
s communicate with their bot services. Transports implement the underlying device management, connectivity, media transmission, and state logic that manage the lifecycle of your session.
All transport packages (such as DailyTransport
) extend from the Transport
base class defined in the client-js
library. You can extend this class if you are looking to implement your own or add additional functionality.
Transport lifecycle
Each Pipecat client instance is associated with a transport instance. The instance will re-use the transport instance across multiple calls toconnect()
, allowing you to connect to different bot services without needing to create a new transport or client each time.
Transport states
TransportState
Your transport instance goes through a series of states during its lifecycle. These states are:
1
Disconnected
Transport is idle and has not yet been initialized (default state).
2
Initializing
Transport is being initialized. This occurs in response to a
pcClient.initDevices()
call, where the transport is being set up in order to enumerate local media devices. If you call connect()
and bypass initDevices()
, the transport will skip this state and go directly to Connecting
.3
Initialized
Transport has been initialized and is ready to connect. This state is reached after a successful
pcClient.initDevices()
call and skipped if initDevices()
is not used.4
Authenticating
Your client has called
pcClient.startBot()
or pcClient.startBotAndConnect()
and is waiting for a response from your server containing connection details for your transport (such as a session URL and token). Note: If you provide the TransportConnectionParams
directly to connect()
without calling either startBot
methods, the transport will skip this state and go directly to Connecting
.5
Authenticated
Your client has called
pcClient.startBot()
or pcClient.startBotAndConnect()
and has successfully received a response. If using startBotAndConnect()
, it will quickly move into the Connecting
state. Note: If you provide the TransportConnectionParams
directly to connect()
without calling either startBot
methods, the transport will skip this state and go directly to Connecting
.6
Connecting
The transport is connecting to the server.
7
Connected
The transport has successfully connected to the session and is awaiting a client-ready signal (indicated audio and video tracks are ready to be sent and received).
8
Ready
Transport is ready and the session can begin.
9
Disconnecting
Transport is disconnecting from the session.
10
Error
An error occurred during the transport lifecycle. This indicates a fatal error and the transport should move quickly into the
Disconnected
state.pcClient.state
, or by defining a callback or event: