Register the on_error handler

This commit is contained in:
Mark Backman
2025-01-15 22:01:06 -05:00
parent b8ffd7b16b
commit e049ae470d

View File

@@ -27,6 +27,7 @@ from pipecat.audio.vad.vad_analyzer import VADAnalyzer, VADParams
from pipecat.frames.frames import ( from pipecat.frames.frames import (
CancelFrame, CancelFrame,
EndFrame, EndFrame,
ErrorFrame,
Frame, Frame,
InputAudioRawFrame, InputAudioRawFrame,
InterimTranscriptionFrame, InterimTranscriptionFrame,
@@ -917,6 +918,7 @@ class DailyTransport(BaseTransport):
# these handlers. # these handlers.
self._register_event_handler("on_joined") self._register_event_handler("on_joined")
self._register_event_handler("on_left") self._register_event_handler("on_left")
self._register_event_handler("on_error")
self._register_event_handler("on_app_message") self._register_event_handler("on_app_message")
self._register_event_handler("on_call_state_updated") self._register_event_handler("on_call_state_updated")
self._register_event_handler("on_dialin_connected") self._register_event_handler("on_dialin_connected")
@@ -1031,9 +1033,17 @@ class DailyTransport(BaseTransport):
await self._call_event_handler("on_left") await self._call_event_handler("on_left")
async def _on_error(self, error): async def _on_error(self, error):
# TODO(aleix): Report error to input/output transports. The one managing await self._call_event_handler("on_error", error)
# the client should report the error. # Push error frame to notify the pipeline
pass 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): async def _on_app_message(self, message: Any, sender: str):
if self._input: if self._input: