From 00fc3e2c2989ce5fddf634b9f00573b72789cf96 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 22 Apr 2025 14:22:31 -0400 Subject: [PATCH] ESPHome Assist Satellite share TTS url in RUN_START (#143460) --- .../components/esphome/assist_satellite.py | 6 ++++++ .../components/esphome/test_assist_satellite.py | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/homeassistant/components/esphome/assist_satellite.py b/homeassistant/components/esphome/assist_satellite.py index cf1e299a6f0..9b5d4e74c70 100644 --- a/homeassistant/components/esphome/assist_satellite.py +++ b/homeassistant/components/esphome/assist_satellite.py @@ -336,6 +336,12 @@ class EsphomeAssistSatellite( "code": event.data["code"], "message": event.data["message"], } + elif event_type == VoiceAssistantEventType.VOICE_ASSISTANT_RUN_START: + assert event.data is not None + if tts_output := event.data["tts_output"]: + path = tts_output["url"] + url = async_process_play_media_url(self.hass, path) + data_to_send = {"url": url} elif event_type == VoiceAssistantEventType.VOICE_ASSISTANT_RUN_END: if self._tts_streaming_task is None: # No TTS diff --git a/tests/components/esphome/test_assist_satellite.py b/tests/components/esphome/test_assist_satellite.py index 3f6db1dd9c9..c072e5fda4a 100644 --- a/tests/components/esphome/test_assist_satellite.py +++ b/tests/components/esphome/test_assist_satellite.py @@ -345,6 +345,23 @@ async def test_pipeline_api_audio( {"url": get_url(hass) + mock_tts_result_stream.url}, ) + event_callback( + PipelineEvent( + type=PipelineEventType.RUN_START, + data={ + "tts_output": { + "media_id": "test-media-id", + "url": mock_tts_result_stream.url, + "token": mock_tts_result_stream.token, + } + }, + ) + ) + assert mock_client.send_voice_assistant_event.call_args_list[-1].args == ( + VoiceAssistantEventType.VOICE_ASSISTANT_RUN_START, + {"url": get_url(hass) + mock_tts_result_stream.url}, + ) + event_callback(PipelineEvent(type=PipelineEventType.RUN_END)) assert mock_client.send_voice_assistant_event.call_args_list[-1].args == ( VoiceAssistantEventType.VOICE_ASSISTANT_RUN_END,