对话

对话 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.yamlconfiguration.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],例如 HassTurnOnHassTurnOff,也可以进行。

例如,创建文件 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 代理。