diff --git a/homeassistant/components/voip/assist_satellite.py b/homeassistant/components/voip/assist_satellite.py index a0aeaaf38d3f4999703dfe923e366640b333c927..6d18d8254f2f9501412e9a87dd7f79f66850a658 100644 --- a/homeassistant/components/voip/assist_satellite.py +++ b/homeassistant/components/voip/assist_satellite.py @@ -28,6 +28,7 @@ from homeassistant.components.assist_satellite import ( from homeassistant.components.network import async_get_source_ip from homeassistant.config_entries import ConfigEntry from homeassistant.core import Context, HomeAssistant, callback +from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from .const import ( @@ -193,6 +194,12 @@ class VoipAssistSatellite(VoIPEntity, AssistSatelliteEntity, RtpDatagramProtocol Optionally run a voice pipeline after the announcement has finished. """ + if announcement.media_id_source != "tts": + raise HomeAssistantError( + translation_domain=DOMAIN, + translation_key="non_tts_announcement", + ) + self._announcement_future = asyncio.Future() self._run_pipeline_after_announce = run_pipeline_after diff --git a/homeassistant/components/voip/strings.json b/homeassistant/components/voip/strings.json index 96c902bf39a1591a703258e7705598f83422148d..4f37ad1d6f723b2f7fb729e126ce5094ca1a33bc 100644 --- a/homeassistant/components/voip/strings.json +++ b/homeassistant/components/voip/strings.json @@ -58,5 +58,10 @@ } } } + }, + "exceptions": { + "non_tts_announcement": { + "message": "VoIP does not currently support non-TTS announcements" + } } } diff --git a/tests/components/voip/test_voip.py b/tests/components/voip/test_voip.py index 3e3e5337417d57b75e2f9344a78724b075b90f54..d971591c79aa6bbda8dfa8fe1ce70f4b9a8881fd 100644 --- a/tests/components/voip/test_voip.py +++ b/tests/components/voip/test_voip.py @@ -22,6 +22,7 @@ from homeassistant.components.voip.devices import VoIPDevice, VoIPDevices from homeassistant.components.voip.voip import PreRecordMessageProtocol, make_protocol from homeassistant.const import STATE_OFF, STATE_ON, Platform from homeassistant.core import Context, HomeAssistant +from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers import entity_registry as er from homeassistant.helpers.entity_component import EntityComponent from homeassistant.setup import async_setup_component @@ -862,6 +863,19 @@ async def test_announce( & assist_satellite.AssistSatelliteEntityFeature.ANNOUNCE ) + with pytest.raises(HomeAssistantError) as err: + await hass.services.async_call( + "assist_satellite", + "announce", + service_data={"media_id": "http://example.com"}, + blocking=True, + target={ + "entity_id": satellite.entity_id, + }, + ) + assert err.value.translation_domain == "voip" + assert err.value.translation_key == "non_tts_announcement" + announcement = assist_satellite.AssistSatelliteAnnouncement( message="test announcement", media_id=_MEDIA_ID,