Add remote participant updates to DailyTransport (#2694)
* add remote participant updates to DailyTransport * cleanup * cleanup * ruff cleanup again
This commit is contained in:
@@ -25,6 +25,7 @@ from pydantic import BaseModel
|
|||||||
from pipecat.audio.vad.vad_analyzer import VADAnalyzer, VADParams
|
from pipecat.audio.vad.vad_analyzer import VADAnalyzer, VADParams
|
||||||
from pipecat.frames.frames import (
|
from pipecat.frames.frames import (
|
||||||
CancelFrame,
|
CancelFrame,
|
||||||
|
ControlFrame,
|
||||||
EndFrame,
|
EndFrame,
|
||||||
ErrorFrame,
|
ErrorFrame,
|
||||||
Frame,
|
Frame,
|
||||||
@@ -105,6 +106,17 @@ class DailyInputTransportMessageUrgentFrame(InputTransportMessageUrgentFrame):
|
|||||||
participant_id: Optional[str] = None
|
participant_id: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class DailyUpdateRemoteParticipantsFrame(ControlFrame):
|
||||||
|
"""Frame to update remote participants in Daily calls.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
remote_participants: See https://reference-python.daily.co/api_reference.html#daily.CallClient.update_remote_participants.
|
||||||
|
"""
|
||||||
|
|
||||||
|
remote_participants: Mapping[str, Any] = None
|
||||||
|
|
||||||
|
|
||||||
class WebRTCVADAnalyzer(VADAnalyzer):
|
class WebRTCVADAnalyzer(VADAnalyzer):
|
||||||
"""Voice Activity Detection analyzer using WebRTC.
|
"""Voice Activity Detection analyzer using WebRTC.
|
||||||
|
|
||||||
@@ -1790,6 +1802,18 @@ class DailyOutputTransport(BaseOutputTransport):
|
|||||||
# Leave the room.
|
# Leave the room.
|
||||||
await self._client.leave()
|
await self._client.leave()
|
||||||
|
|
||||||
|
async def process_frame(self, frame: Frame, direction: FrameDirection):
|
||||||
|
"""Process outgoing frames, including transport messages.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
frame: The frame to process.
|
||||||
|
direction: The direction of frame flow in the pipeline.
|
||||||
|
"""
|
||||||
|
await super().process_frame(frame, direction)
|
||||||
|
|
||||||
|
if isinstance(frame, DailyUpdateRemoteParticipantsFrame):
|
||||||
|
await self._client.update_remote_participants(frame.remote_participants)
|
||||||
|
|
||||||
async def send_message(self, frame: TransportMessageFrame | TransportMessageUrgentFrame):
|
async def send_message(self, frame: TransportMessageFrame | TransportMessageUrgentFrame):
|
||||||
"""Send a transport message to participants.
|
"""Send a transport message to participants.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user