对话
对话 integration集成将 Home Assistant 与您的设备、服务等连接和集成。 [Learn more] 允许您与 Home Assistant 进行对话。您可以通过在前端按下麦克风(仅支持的浏览器(不包括 iOS))或通过调用 conversation/process
动作并传递转录文本来进行对话。
Home Assistant 中对话界面的截图。
# 示例基本配置.yaml 条目
conversation:
默认句子
默认情况下,支持一系列 社区贡献的句子
在英语中,您可以说“打开厨房灯”或“关闭卧室的灯”,如果您有一个名为“卧室”的区域。
添加自定义句子
您可以添加自己的 句子模板 来教 Home Assistant 新的句子。这些句子可以与 内置意图 一起使用,或通过定义自定义 intents意图是与语音助手一起使用的术语。意图是 Home Assistant 从您的语音或文本表达中提取命令时认为您想要它执行的操作。 [Learn more] 触发自定义动作,使用 意图脚本集成。
要开始,创建一个 custom_sentences/<language>
目录,在您的 Home Assistant config
目录中,其中 <language>
是您语言的 语言代码,例如英语的 en
。这些 YAML 文件会自动合并,并可以包含意图、列表或扩展规则。
以英语为例,创建文件 config/custom_sentences/en/temperature.yaml
并添加:
# 示例 temperature.yaml 条目
language: "en"
intents:
CustomOutsideHumidity:
data:
- sentences:
- "What is the humidity outside"
要教 Home Assistant 如何处理自定义 CustomOutsideHumidity
intent意图是与语音助手一起使用的术语。意图是 Home Assistant 从您的语音或文本表达中提取命令时认为您想要它执行的操作。 [Learn more],在您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中创建一个 intent_script
条目:
# 示例 configuration.yaml 条目
intent_script:
CustomOutsideHumidity:
speech:
text: "It is currently {{ states('sensor.outside_humidity') }} percent humidity outside."
在 intent_script
中可以执行更复杂的 动作,例如执行动作和触发事件。
扩展内置意图
扩展内置的 intents意图是与语音助手一起使用的术语。意图是 Home Assistant 从您的语音或文本表达中提取命令时认为您想要它执行的操作。 [Learn more],例如 HassTurnOn
和 HassTurnOff
,也可以进行。
例如,创建文件 config/custom_sentences/en/on_off.yaml
并添加:
# 示例 on_off.yaml 条目
language: "en"
intents:
HassTurnOn:
data:
- sentences:
- "engage [the] kitchen lights"
slots:
name: "kitchen lights"
HassTurnOff:
data:
- sentences:
- "disengage [the] kitchen lights"
slots:
name: "kitchen lights"
现在,当您说“打开厨房灯”时,将会打开名为“厨房灯”的灯。说“关闭厨房灯”将会关闭它。
让我们将此推广到其他实体。内置的 {name}
和 {area}
列表包含您的 Home Assistant 实体和区域的名称。
在 config/custom_sentences/en/on_off.yaml
中添加 {name}
:
# 示例 on_off.yaml 条目
language: "en"
intents:
HassTurnOn:
data:
- sentences:
- "engage [the] {name}"
HassTurnOff:
data:
- sentences:
- "disengage [the] {name}"
现在您可以“打开”或“关闭”任何实体。
最后,让我们为在特定区域打开和关闭灯添加句子:
# 示例 on_off.yaml 条目
language: "en"
intents:
HassTurnOn:
data:
- sentences:
- "engage [the] {name}"
- sentences:
- "engage [all] lights in [the] {area}"
slots:
name: "all"
domain: "light"
HassTurnOff:
data:
- sentences:
- "disengage [the] {name}"
- sentences:
- "disengage [all] lights in [the] {area}"
slots:
name: "all"
domain: "light"
现在可以说“打开卧室中的所有灯”,这将打开名为“卧室”的区域中的每一盏灯。
动作 conversation.process
发送消息到对话代理以进行处理。
数据属性 | 可选 | 描述 |
---|---|---|
text |
否 | 转录的文本输入 |
language |
是 | 文本的语言 |
agent_id |
是 | 对话代理的 ID。对话代理是助手的“大脑”。它处理传入的文本命令。 |
conversation_id |
是 | 新对话或以前对话的 ID。将继续一个旧对话或开始一个新对话。 |
该动作能够返回 响应数据。响应与
/api/conversation/process
API 的响应相同。
动作 conversation.reload
数据属性 | 可选 | 描述 |
---|---|---|
language |
是 | 要清除意图缓存的语言。没有值则清除所有语言 |
agent_id |
是 | 对话代理的 ID。默认为内置 Home Assistant 代理。 |