diff --git a/src/pipecat/processors/frameworks/rtvi/processor.py b/src/pipecat/processors/frameworks/rtvi/processor.py index 8c8de903e..0a05560c0 100644 --- a/src/pipecat/processors/frameworks/rtvi/processor.py +++ b/src/pipecat/processors/frameworks/rtvi/processor.py @@ -268,10 +268,19 @@ class RTVIProcessor(FrameProcessor): match message.type: case "client-ready": data = None - try: - data = RTVI.ClientReadyData.model_validate(message.data) - except ValidationError: - pass + raw = message.data or {} + version = raw.get("version") + if isinstance(version, str): + about = RTVI.AboutClientData(library="unknown") + about_raw = raw.get("about") + if about_raw is not None: + try: + about = RTVI.AboutClientData.model_validate(about_raw) + except ValidationError: + logger.warning( + "Invalid 'about' data in client-ready message, ignoring." + ) + data = RTVI.ClientReadyData(version=version, about=about) await self._handle_client_ready(message.id, data) case "disconnect-bot": await self.push_frame(EndTaskFrame(), FrameDirection.UPSTREAM) diff --git a/tests/test_rtvi_processor.py b/tests/test_rtvi_processor.py index 36ff60b56..259b970dd 100644 --- a/tests/test_rtvi_processor.py +++ b/tests/test_rtvi_processor.py @@ -5,7 +5,7 @@ # import unittest -from unittest.mock import AsyncMock, patch +from unittest.mock import AsyncMock import pipecat.processors.frameworks.rtvi.models as RTVI from pipecat.processors.frameworks.rtvi.processor import RTVIProcessor