Actions on Google 网络钩子格式 (Dialogflow)

本文档介绍了用于 Actions on Google 与定义自定义对话界面的 fulfillment 服务之间通信的 webhook 格式。

请务必了解 Actions on Google 与您的执行方式如何通过 Actions on Google 网络钩子格式进行通信:

  • 为了参与与 Actions on Google 的对话,您的执行方式需要实现一个网络钩子,可以响应来自 Actions on Google 的 HTTP 请求。
  • 当用户调用您的 Action 时,您的执行方式会收到 HTTP POST,其中包含描述用户请求的 JSON 载荷。
  • 反过来,您的执行方式负责从请求载荷中读取参数,生成相应的 JSON 格式的响应,然后向 Google 助理发送包含此响应的回复。

请求类型

下表总结了网络钩子可能会从 Google 助理收到的请求类型:

类型 说明 JSON 示例
调用请求 向执行方式发起对话或触发深层链接 Action 的用户话语(例如,“与私人厨师交谈以寻找晚餐食谱”)。
  • 如果使用 Dialogflow,则这些请求与 Google 助理集成设置的发现部分中定义的 intent 相对应。
  • 如果使用 Actions SDK,这些请求就对应于操作软件包中定义的 intent。
对话请求 与您的执行方式的对话开始后,同一会话中用户说出的内容。在对话网络钩子格式中,这些是来自用户的与执行方式在上一轮中请求的 actions.intent.TEXT intent 对应的原始文本响应。
帮助程序结果 当 webhook 在对话的上一轮中请求帮助程序 intent 以处理对话的某些部分(例如 actions.intent.OPTIONactions.intent.PERMISSION)时,Google 助理向您的执行方式发送的请求。

对话请求和响应

在典型的 Actions on Google 互动场景中,用户通过说出指令来调用 Action。为了提供响应,Actions on Google 会查找与用户调用的 Action 匹配的执行方式,并在其中发送请求。

一旦 Actions on Google 确定您的执行方式与用户调用的匹配情况合适,它就会向执行方式端点发送一个包含 JSON 载荷以及用户请求信息的 HTTP 请求,从而启动对话会话。您的执行方式会解析请求并返回包含 JSON 载荷的响应。然后,Actions on Google 会将该载荷转换为向用户呈现的语音和多媒体输出。

图 1. Actions on Google 通过 Actions SDK 调用您的执行方式。

如需详细了解 Actions on Google 通过 Actions SDK 调用执行方式时的 JSON 载荷格式,请参阅对话网络钩子格式

Dialogflow 请求和响应

创建 Action 时,您可以选择使用 Dialogflow 来简化构建对话界面的任务。在这种情况下,Dialogflow 充当 Actions on Google 与您的 fulfillment 之间的代理。Actions on Google 会将 HTTP/JSON 请求发送到 Dialogflow,而不是将其直接发送到您的执行方式端点。

Dialogflow 将原始请求中包含的 JSON 载荷封装为 Dialogflow 网络钩子格式,并将生成的请求转发到您的 Dialogflow 执行方式。

相反,当您的 fulfillment 向 Dialogflow 发送响应时,响应的 JSON 载荷必须符合 Dialogflow 网络钩子格式。您的 fulfillment 会解析 Dialogflow JSON 请求中的参数,并以 Dialogflow 网络钩子格式生成响应。然后,Dialogflow 会将来自您的执行方式的响应转换为 Google 助理可以理解的响应消息。

图 2. Actions on Google 通过 Dialogflow 调用您的 fulfillment。

如需详细了解 Actions on Google 通过 Dialogflow 调用您的 fulfillment 时 JSON 载荷的格式,请参阅 Dialogflow 网络钩子格式