Add output.audio.played message handling and update documentation
- Introduced `output.audio.played` message type for client acknowledgment of audio playback completion. - Updated `DuplexPipeline` to track client playback state and handle playback completion events. - Enhanced session handling to route `output.audio.played` messages to the pipeline. - Revised API documentation to include details about the new message type and its fields. - Updated schema documentation to reflect the addition of `output.audio.played` in the message flow.
This commit is contained in:
@@ -24,6 +24,7 @@ from models.ws_v1 import (
|
||||
SessionStopMessage,
|
||||
InputTextMessage,
|
||||
ResponseCancelMessage,
|
||||
OutputAudioPlayedMessage,
|
||||
ToolCallResultsMessage,
|
||||
)
|
||||
|
||||
@@ -267,6 +268,14 @@ class Session:
|
||||
logger.info(f"Session {self.id} graceful response.cancel")
|
||||
else:
|
||||
await self.pipeline.interrupt()
|
||||
elif isinstance(message, OutputAudioPlayedMessage):
|
||||
await self.pipeline.handle_output_audio_played(
|
||||
tts_id=message.tts_id,
|
||||
response_id=message.response_id,
|
||||
turn_id=message.turn_id,
|
||||
played_at_ms=message.played_at_ms,
|
||||
played_ms=message.played_ms,
|
||||
)
|
||||
elif isinstance(message, ToolCallResultsMessage):
|
||||
await self.pipeline.handle_tool_call_results([item.model_dump() for item in message.results])
|
||||
elif isinstance(message, SessionStopMessage):
|
||||
|
||||
Reference in New Issue
Block a user