概览 (Dialogflow)

Interactive Canvas 是一种基于 Google 助理构建的框架,可让开发者向对话型 Action 添加沉浸式视觉体验。 这种视觉体验是一种互动式 Web 应用,Google 助理在对话中将其作为回应发送给用户。与 Google 助理对话中内嵌的传统富响应不同,Interactive Canvas Web 应用会以全屏 Web 视图的形式呈现。

如果您想在 Action 中执行以下任何操作,则应使用 Interactive Canvas:

  • 创建全屏视觉效果
  • 创建自定义动画和过渡效果
  • 进行数据可视化
  • 创建自定义布局和 GUI
图 1. 使用 Interactive Canvas 构建的互动游戏。

支持的设备

Interactive Canvas 目前可在以下设备上使用:

  • 智能显示屏
  • Google Nest Hub
  • Android 移动设备

运作方式

使用 Interactive Canvas 的 Action 与常规对话型 Action 的工作原理类似。用户仍然会与 Google 助理进行来回对话,以实现自己的目标;不过,Interactive Canvas Action 不会在对话中内嵌返回回答,而是向用户发送一个打开全屏 Web 应用的回答。用户会继续通过语音或触摸与 Web 应用互动,直到对话结束。

使用 Interactive Canvas 的 Action 包含多个组件:

  • 对话型 Action:通过对话界面满足用户请求的 Action。Interactive Canvas Action 使用 WebView 来呈现响应,而不是使用富卡片或简单的文字和语音响应。对话型 Action 使用以下组件:
    • Dialogflow 代理:Dialogflow 中的一个项目,您可以对其进行自定义,以便与 Action 用户进行对话。
    • 执行方式:部署为 webhook 的代码,用于实现 Dialogflow 代理的对话逻辑并与 Web 应用通信。
  • Web 应用:一种具有自定义视觉效果的前端 Web 应用,您的 Action 在对话期间会将其作为对用户的回答发送。您可以使用 HTML、JavaScript 和 CSS 等 Web 标准构建 Web 应用。

对话型 Action 和 Web 应用使用以下方式相互通信:

  • Interactive Canvas API:一种添加到 Web 应用中的 JavaScript API,用于启用 Web 应用与对话型 Action 之间的通信。
  • HtmlResponse:一种响应,其中包含 Web 应用网址和要传递给它的数据。您可以使用 Node.jsJava 客户端库来返回 HtmlResponse

为了说明互动画布的工作原理,我们假设有一个名为 Cool Colors 的虚拟操作,该操作会将设备屏幕颜色更改为用户指定的颜色。用户调用 Action 后,流程如下所示:

  1. 用户对 Google 助理设备说 Turn the screen blue
  2. Actions on Google 平台会将用户的请求路由到 Dialogflow 以匹配 intent。
  3. 系统会运行匹配意图的 fulfillment,并向设备发送 HtmlResponse。如果尚未加载,设备会使用该网址加载 Web 应用。
  4. 当 Web 应用加载时,它会使用 interactiveCanvas API 注册回调。然后,data 对象的值会传递到 Web 应用的已注册 onUpdate 回调中。在我们的示例中,Fulfillment 会发送一个 HtmlResponse,其中包含一个 data,该 data 包含一个值为 blue 的变量。
  5. Web 应用的自定义逻辑会读取 HtmlResponsedata 值,并进行定义的更改。在我们的示例中,这会将屏幕变为蓝色。
  6. interactiveCanvas 将回调更新发送到设备。

后续步骤

如需了解如何构建 Interactive Canvas Action,请参阅构建概览页面。

如需查看完整互动画布操作的代码,请参阅示例