From d313d56776a288b0038fd16323e231e0f8b740c3 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Fri, 27 Mar 2026 16:47:11 -0400 Subject: [PATCH] Fix RTVI events not delivered over WebSocket transports The base serializer filters out RTVI protocol messages by default (ignore_rtvi_messages=True) to prevent them from being sent over telephony media streams. ProtobufFrameSerializer is used by WebSocket transports, which are the delivery channel for these messages, so disable the filter there. --- changelog/4176.fixed.md | 1 + src/pipecat/serializers/protobuf.py | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 changelog/4176.fixed.md diff --git a/changelog/4176.fixed.md b/changelog/4176.fixed.md new file mode 100644 index 000000000..90e9b6b88 --- /dev/null +++ b/changelog/4176.fixed.md @@ -0,0 +1 @@ +- Fixed RTVI events not being delivered to clients when using WebSocket transports. `ProtobufFrameSerializer` now sets `ignore_rtvi_messages=False` by default. diff --git a/src/pipecat/serializers/protobuf.py b/src/pipecat/serializers/protobuf.py index fd21af2bf..66f4d0daa 100644 --- a/src/pipecat/serializers/protobuf.py +++ b/src/pipecat/serializers/protobuf.py @@ -68,6 +68,11 @@ class ProtobufFrameSerializer(FrameSerializer): params: Configuration parameters. """ super().__init__(params) + # The base serializer defaults to filtering out RTVI protocol messages + # to avoid sending them over telephony media streams. ProtobufFrameSerializer + # is used by WebSocket transports, which are the delivery channel for + # these messages, so we disable the filter. + self._params.ignore_rtvi_messages = False async def serialize(self, frame: Frame) -> str | bytes | None: """Serialize a frame to Protocol Buffer binary format.