From e049ae470df511b40c358c8c39d60fbc9a757153 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Wed, 15 Jan 2025 22:01:06 -0500 Subject: [PATCH] Register the on_error handler --- src/pipecat/transports/services/daily.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/pipecat/transports/services/daily.py b/src/pipecat/transports/services/daily.py index d3a56d5a7..7dd8fecaa 100644 --- a/src/pipecat/transports/services/daily.py +++ b/src/pipecat/transports/services/daily.py @@ -27,6 +27,7 @@ from pipecat.audio.vad.vad_analyzer import VADAnalyzer, VADParams from pipecat.frames.frames import ( CancelFrame, EndFrame, + ErrorFrame, Frame, InputAudioRawFrame, InterimTranscriptionFrame, @@ -917,6 +918,7 @@ class DailyTransport(BaseTransport): # these handlers. self._register_event_handler("on_joined") self._register_event_handler("on_left") + self._register_event_handler("on_error") self._register_event_handler("on_app_message") self._register_event_handler("on_call_state_updated") self._register_event_handler("on_dialin_connected") @@ -1031,9 +1033,17 @@ class DailyTransport(BaseTransport): await self._call_event_handler("on_left") async def _on_error(self, error): - # TODO(aleix): Report error to input/output transports. The one managing - # the client should report the error. - pass + await self._call_event_handler("on_error", error) + # Push error frame to notify the pipeline + error_frame = ErrorFrame(error) + + if self._input: + await self._input.push_error(error_frame) + elif self._output: + await self._output.push_error(error_frame) + else: + logger.error("Both input and output are None while trying to push error") + raise RuntimeError("No valid input or output channel to push error") async def _on_app_message(self, message: Any, sender: str): if self._input: