Satellite announcement to track original media id (#136141)

This commit is contained in:
Paulus Schoutsen 2025-01-21 08:33:37 -05:00 committed by GitHub
parent a60d2b69e3
commit 5b49ba563e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 6 deletions

View File

@ -96,7 +96,11 @@ class AssistSatelliteAnnouncement:
media_id: str media_id: str
"""Media ID to be played.""" """Media ID to be played."""
original_media_id: str
"""The raw media ID before processing."""
media_id_source: Literal["url", "media_id", "tts"] media_id_source: Literal["url", "media_id", "tts"]
"""Source of the media ID."""
class AssistSatelliteEntity(entity.Entity): class AssistSatelliteEntity(entity.Entity):
@ -396,7 +400,10 @@ class AssistSatelliteEntity(entity.Entity):
"""Resolve the media ID.""" """Resolve the media ID."""
media_id_source: Literal["url", "media_id", "tts"] | None = None media_id_source: Literal["url", "media_id", "tts"] | None = None
if not media_id: if media_id:
original_media_id = media_id
else:
media_id_source = "tts" media_id_source = "tts"
# Synthesize audio and get URL # Synthesize audio and get URL
pipeline_id = self._resolve_pipeline() pipeline_id = self._resolve_pipeline()
@ -416,6 +423,7 @@ class AssistSatelliteEntity(entity.Entity):
language=pipeline.tts_language, language=pipeline.tts_language,
options=tts_options, options=tts_options,
) )
original_media_id = media_id
if media_source.is_media_source_id(media_id): if media_source.is_media_source_id(media_id):
if not media_id_source: if not media_id_source:
@ -433,4 +441,6 @@ class AssistSatelliteEntity(entity.Entity):
# Resolve to full URL # Resolve to full URL
media_id = async_process_play_media_url(self.hass, media_id) media_id = async_process_play_media_url(self.hass, media_id)
return AssistSatelliteAnnouncement(message, media_id, media_id_source) return AssistSatelliteAnnouncement(
message, media_id, original_media_id, media_id_source
)

View File

@ -163,21 +163,32 @@ async def test_new_pipeline_cancels_pipeline(
( (
{"message": "Hello"}, {"message": "Hello"},
AssistSatelliteAnnouncement( AssistSatelliteAnnouncement(
"Hello", "https://www.home-assistant.io/resolved.mp3", "tts" message="Hello",
media_id="https://www.home-assistant.io/resolved.mp3",
original_media_id="media-source://bla",
media_id_source="tts",
), ),
), ),
( (
{ {
"message": "Hello", "message": "Hello",
"media_id": "media-source://bla", "media_id": "media-source://given",
}, },
AssistSatelliteAnnouncement( AssistSatelliteAnnouncement(
"Hello", "https://www.home-assistant.io/resolved.mp3", "media_id" message="Hello",
media_id="https://www.home-assistant.io/resolved.mp3",
original_media_id="media-source://given",
media_id_source="media_id",
), ),
), ),
( (
{"media_id": "http://example.com/bla.mp3"}, {"media_id": "http://example.com/bla.mp3"},
AssistSatelliteAnnouncement("", "http://example.com/bla.mp3", "url"), AssistSatelliteAnnouncement(
message="",
media_id="http://example.com/bla.mp3",
original_media_id="http://example.com/bla.mp3",
media_id_source="url",
),
), ),
], ],
) )