intent

智能家居 intent 是简单的消息传递对象,用于描述要执行的 smart home Action,例如开灯或向音响设备投放音频。

所有 smart home intent 都包含在 action.devices 命名空间中,并且您必须为 intent 提供执行方式。每当 Google Assistant 向执行方式发送 intent 时,用户的第三方 OAuth 2 访问令牌都会在 Authorization 标头中传递。

以下是受支持的 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 中存储这些信息。
图 1:Google 与合作伙伴基础架构之间的交互

为避免解除用户帐号的关联后再重新关联,您可以向 Assistant 发送同步请求。此操作会向您的执行方式发送 action.devices.SYNC intent,以同步设备和功能列表。如需了解详情,请参阅实现请求同步

SYNC intent 的流程图
图 2:SYNC intent

在设置本地执行方式期间,Local Home 平台会检查来自 smart home Action 云执行方式的 SYNC 响应。如需详细了解如何修改 SYNC 响应以支持本地执行方式,请参阅在云执行方式中更新 SYNC 响应

查询

action.devices.QUERY intent 用于查询 smart home 设备的当前状态。

当用户查询设备状态时,为了回答“Ok Google,厨房里开了哪些灯?”之类的问题, Assistant 会向您的执行方式发送 action.devices.QUERY intent。

QUERY intent 的流程图
图 3:QUERY intent

为了提供最佳用户体验,您应实现报告状态,以主动将用户设备的当前状态直接报告给 Google Home Graph。例如,这会让 Assistant 知道用户是否使用实体灯开关打开了智能灯。

使用报告状态报告设备状态
图 4:报告设备状态

执行

action.devices.EXECUTE intent 用于提供在 smart home 设备上执行的命令。

当用户使用 Assistant 向设备发送命令时,您的执行方式会接收到您的执行方式的 action.devices.EXECUTE intent,该 intent 描述了要执行的 Action 以及要操作的设备。用户可以使用“Ok Google,打开客厅的灯”等命令在设备上执行操作。

EXECUTE intent 的流程图
图 5:EXECUTE intent

断开连接

当用户解除应用帐号与 Assistant 的关联时,系统就会触发 action.devices.DISCONNECT intent 来通知您。收到 action.devices.DISCONNECT intent 后,您不应报告此用户设备的状态。