add remote participant updates to DailyTransport
This commit is contained in:
@@ -41,6 +41,7 @@ from pipecat.frames.frames import (
|
|||||||
UserAudioRawFrame,
|
UserAudioRawFrame,
|
||||||
UserImageRawFrame,
|
UserImageRawFrame,
|
||||||
UserImageRequestFrame,
|
UserImageRequestFrame,
|
||||||
|
DataFrame,
|
||||||
)
|
)
|
||||||
from pipecat.processors.frame_processor import FrameDirection, FrameProcessorSetup
|
from pipecat.processors.frame_processor import FrameDirection, FrameProcessorSetup
|
||||||
from pipecat.transcriptions.language import Language
|
from pipecat.transcriptions.language import Language
|
||||||
@@ -104,6 +105,15 @@ class DailyInputTransportMessageUrgentFrame(InputTransportMessageUrgentFrame):
|
|||||||
|
|
||||||
participant_id: Optional[str] = None
|
participant_id: Optional[str] = None
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class DailyUpdateRemoteParticipantsFrame(DataFrame):
|
||||||
|
"""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: Optional[Any] = None
|
||||||
|
|
||||||
class WebRTCVADAnalyzer(VADAnalyzer):
|
class WebRTCVADAnalyzer(VADAnalyzer):
|
||||||
"""Voice Activity Detection analyzer using WebRTC.
|
"""Voice Activity Detection analyzer using WebRTC.
|
||||||
@@ -1784,6 +1794,19 @@ class DailyOutputTransport(BaseOutputTransport):
|
|||||||
await super().cancel(frame)
|
await super().cancel(frame)
|
||||||
# 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):
|
||||||
|
logger.debug(f"Got a DailyUpdateRemoteParticipantsFrame: {frame}")
|
||||||
|
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