智能家居 intent 是一种简单的消息传递对象,用于说明要执行的 Cloud-to-cloud 集成,例如开灯或向音响设备投射音频。
所有 smart home intent 都包含在 action.devices
命名空间中,并且您必须为 intent 提供执行方式。每当 Google Assistant 向执行方式发送 intent 时,系统都会在 Authorization 标头中传递用户的第三方 OAuth 2 访问令牌。
以下是受支持的 smart home intent:
同步
action.devices.SYNC
intent 用于请求用户已连接且可供使用的 smart home 设备列表。
当用户使用 Google Home app (GHA) 设置设备时,他们还会进行身份验证以访问您的云基础架构。然后,Assistant 会接收到 OAuth2 令牌。此时,Assistant 会向您的执行方式发送 action.devices.SYNC
intent,以从您的云基础架构中检索用户设备及功能的初始列表。
![下图显示了 Google 基础架构与合作伙伴基础架构之间的互动。Google 基础架构中有一个可供 Google 助理客户端应用使用的合作伙伴列表,该列表随后会流向合作伙伴基础架构以完成 OAuth 身份验证。合作伙伴端的 OAuth 身份验证包括合作伙伴设置 WebView、OAuth WebView、可选设置和条款,以及合作伙伴云服务。然后,合作伙伴基础架构会将 OAuth 凭据返回给 Google 助理客户端应用。合作伙伴云服务会向 Google 助理服务发送可用的设备和功能,然后这类服务会在 Home Graph 中存储这些信息。](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome001.png?authuser=3&hl=zh-cn)
为避免解除关联用户账号并重新关联,您可以向 Assistant 发送请求同步。这会将 action.devices.SYNC
intent 发送到您的执行方式,以同步设备和功能列表。如需了解详情,请参阅实现请求同步。
![SYNC intent 的流程图](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome002.png?authuser=3&hl=zh-cn)
在设置本地执行方式期间,Local Home 平台会检查来自 smart home Action 云执行方式的 SYNC
响应。如需详细了解如何修改 SYNC
响应以支持本地执行方式,请参阅在云执行方式中更新 SYNC 响应。
查询
action.devices.QUERY
intent 用于查询 smart home 设备的当前状态。
当用户查询设备状态时,为了回答“Hey Google,厨房里开了哪些灯?”之类的问题,Assistant 会向您的执行方式发送 action.devices.QUERY
intent。
![QUERY intent 的流程图](https://developers.home.google.com/static/cloud-to-cloud/primer/images/query-diagram.png?authuser=3&hl=zh-cn)
为了提供最佳用户体验,您应实现报告状态,以主动向 Google Home Graph 直接报告用户设备的当前状态。例如,这会让 Assistant 知道用户是否使用实体灯开关打开了智能灯。
![使用报告状态报告设备状态](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome004.png?authuser=3&hl=zh-cn)
执行
action.devices.EXECUTE
intent 用于提供在 smart home 设备上执行的命令。
当用户使用 Assistant 向设备发送命令时,您的执行方式会接收到您的执行方式的 action.devices.EXECUTE
intent,该 intent 说明了要执行的 Action 以及要操作的设备。用户可以使用“Hey Google,打开客厅的灯”等命令在设备上执行 Action。
![EXECUTE intent 的流程图](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome003.png?authuser=3&hl=zh-cn)
断开连接
当用户解除应用账号与 Assistant 的关联时,系统就会触发 action.devices.DISCONNECT
intent 来通知您。收到 action.devices.DISCONNECT
intent 后,您不应报告此用户设备的状态。