1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Handle announcement finished for ESPHome TTS response (#125625)

* Handle announcement finished for TTS response

* Adjust test
This commit is contained in:
Michael Hansen
2024-09-13 15:31:38 -05:00
committed by GitHub
parent 970d28bce9
commit 3eed5de367
3 changed files with 205 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ from aioesphomeapi import (
HomeassistantServiceCall,
ReconnectLogic,
UserService,
VoiceAssistantAnnounceFinished,
VoiceAssistantAudioSettings,
VoiceAssistantFeature,
)
@@ -214,6 +215,13 @@ class MockESPHomeDevice:
]
| None
)
self.voice_assistant_handle_announcement_finished_callback: (
Callable[
[VoiceAssistantAnnounceFinished],
Coroutine[Any, Any, None],
]
| None
)
self.device_info = device_info
def set_state_callback(self, state_callback: Callable[[EntityState], None]) -> None:
@@ -295,11 +303,21 @@ class MockESPHomeDevice:
]
| None
) = None,
handle_announcement_finished: (
Callable[
[VoiceAssistantAnnounceFinished],
Coroutine[Any, Any, None],
]
| None
) = None,
) -> None:
"""Set the voice assistant subscription callbacks."""
self.voice_assistant_handle_start_callback = handle_start
self.voice_assistant_handle_stop_callback = handle_stop
self.voice_assistant_handle_audio_callback = handle_audio
self.voice_assistant_handle_announcement_finished_callback = (
handle_announcement_finished
)
async def mock_voice_assistant_handle_start(
self,
@@ -322,6 +340,13 @@ class MockESPHomeDevice:
assert self.voice_assistant_handle_audio_callback is not None
await self.voice_assistant_handle_audio_callback(audio)
async def mock_voice_assistant_handle_announcement_finished(
self, finished: VoiceAssistantAnnounceFinished
) -> None:
"""Mock voice assistant handle announcement finished."""
assert self.voice_assistant_handle_announcement_finished_callback is not None
await self.voice_assistant_handle_announcement_finished_callback(finished)
async def _mock_generic_device_entry(
hass: HomeAssistant,
@@ -402,10 +427,17 @@ async def _mock_generic_device_entry(
]
| None
) = None,
handle_announcement_finished: (
Callable[
[VoiceAssistantAnnounceFinished],
Coroutine[Any, Any, None],
]
| None
) = None,
) -> Callable[[], None]:
"""Subscribe to voice assistant."""
mock_device.set_subscribe_voice_assistant_callbacks(
handle_start, handle_stop, handle_audio
handle_start, handle_stop, handle_audio, handle_announcement_finished
)
def unsub():