智能家居 intent 是简单的消息传递对象,用于说明要执行什么 smart home 操作,例如开灯或向音响设备投放音频。
所有 smart home intent 都包含在 action.devices
命名空间中,您必须为它们提供执行方式。每当 Google Assistant 向执行方式发送 intent 时,系统都会在 Authorization 标头中传递用户的第三方 OAuth 2 访问令牌。
以下是受支持的 smart home intent:
SYNC
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=6&hl=zh-cn)
为避免解除关联并重新关联用户帐号,您可以向 Assistant 发送请求同步。这会向您的执行方式发送 action.devices.SYNC
intent,以同步设备和功能列表。如需了解详情,请参阅实现请求同步。
![SYNC intent 的流程图](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome002.png?authuser=6&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=6&hl=zh-cn)
为了提供最佳用户体验,您应实现报告状态,以主动向 Google Home Graph 直接报告用户设备的当前状态。例如,这样可以让 Assistant 知道用户是否使用实体灯开关打开了智能灯。
![使用报告状态报告设备状态](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome004.png?authuser=6&hl=zh-cn)
执行
action.devices.EXECUTE
intent 用于提供在 smart home 设备上执行的命令。
当用户使用 Assistant 向设备发送命令时,您的执行方式会收到您的执行方式的 action.devices.EXECUTE
intent,该 intent 描述了所执行的操作以及要采取操作的设备。用户可以使用“Hey Google,打开客厅的灯”等命令在设备上执行操作。
![EXECUTE intent 的流程图](https://developers.home.google.com/static/cloud-to-cloud/primer/images/smarthome003.png?authuser=6&hl=zh-cn)
断开连接
当用户解除应用帐号与 Assistant 的关联时,就会触发 action.devices.DISCONNECT
intent 来通知您。收到 action.devices.DISCONNECT
intent 后,您不应报告此用户设备的状态。