Assist 卫星实体
Assist 卫星实体表示设备中由 Assist 管道驱动的语音助手能力。具有此类实体的设备可以让用户通过语音控制 Home Assistant。
Assist 卫星实体源自homeassistant.components.assist_satellite.AssistSatelliteEntity。
特性
状态
AssistSatelliteEntity 的状态跟随当前运行的语音管道。AssistSatelliteState 枚举定义了所有可能状态。
当文本转语音响应播放完成并需要返回 IDLE 状态时,您必须在实体上调用 tts_response_finished 方法。
支持的功能
支持的功能通过使用 AssistSatelliteEntityFeature 枚举中的值来定义
和 使用按位或 (|) 运算符进行组合。
方法
运行管道并处理事件
卫星实体应仅通过 async_accept_pipeline_from_satellite 方法运行Assist 管道。管道事件则通过实现 on_pipeline_event 方法处理。
当管道运行时,卫星实体的状态会自动更新,但 RESPONDING 到 IDLE 的切换除外。当设备播报完响应后,开发者必须调用 tts_response_finished 方法。
获取配置
async_get_configuration 方法必须返回(缓存的)AssistSatelliteConfiguration。如果实体必须与设备通信以检索配置,则应在初始化期间进行。
WebSocket 命令可用于获取实体配置。
设置配置
async_set_configuration 方法更新设备的配置,并且仅在设备和 Home Assistant 的 AssistSatelliteConfiguration 同步后才返回。
WebSocket 命令可用于设置活动唤醒词。
公告
如果设备具有 ANNOUNCE 支持的功能,则应实现 async_announce 方法,在 AssistSatelliteAnnouncement 中播放提供的 media_id。如果提供 preannouncement_media_id,则应先于 media_id 播放。
只有在公告于设备上播放完成后,async_announce 方法才应返回。
公告动作 可用于自动触发公告。
开始对话
如果设备具有 START_CONVERSATION 支持的功能,则应实现 async_start_conversation 方法,以便:
- 在
AssistSatelliteAnnouncement中播放preannouncement_media_id(如果提供) - 在
AssistSatelliteAnnouncement中播放提供的media_id - 监听一条或多条后续语音命令
只有在公告于设备上播放完成后,async_start_conversation 方法才应返回。此后,用户与卫星之间的对话会继续进行。
开始对话动作 可用于自动发起对话。
WebSocket API
拦截唤醒词
该集成提供了一个 WebSocket API,用于拦截唤醒词检测并通知用户。语音向导使用它来帮助用户登录并熟悉唤醒词。
实体 ID 必须对应一个支持 ANNOUNCE 功能的 Assist 卫星实体。
一旦检测到唤醒词,就会返回一个响应,如下所示:
获取卫星配置
卫星的当前配置,包括可用和活动的唤醒词,可以通过以下方式检索:
将返回如下响应:
active_wake_words 列表包含来自 available_wake_words 的唤醒词的 ID。
pipeline_entity_id 包含控制设备将运行的管道的选择实体的 ID。
vad_entity_id 包含具有语音活动检测器 (VAD) 灵敏度级别的所选实体的 ID。
设置活动唤醒词
使用以下命令设置活动唤醒词:
wake_word_ids 必须包含来自 assist_satellite/get_configuration 命令的 available_wake_words 列表中的 ID。
wake_word_ids 的大小也不应超过 max_active_wake_words。

