本文档介绍了用于 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 的用户话语(例如,“与私人厨师交谈以寻找晚餐食谱”)。
|
|
对话请求 | 与您的执行方式的对话开始后,同一会话中用户说出的内容。在对话网络钩子格式中,这些是来自用户的与执行方式在上一轮中请求的 actions.intent.TEXT intent 对应的原始文本响应。 |
|
帮助程序结果 | 当 webhook 在对话的上一轮中请求帮助程序 intent 以处理对话的某些部分(例如 actions.intent.OPTION 和 actions.intent.PERMISSION )时,Google 助理向您的执行方式发送的请求。 |
对话请求和响应
在典型的 Actions on Google 互动场景中,用户通过说出指令来调用 Action。为了提供响应,Actions on Google 会查找与用户调用的 Action 匹配的执行方式,并在其中发送请求。
一旦 Actions on Google 确定您的执行方式与用户调用的匹配情况合适,它就会向执行方式端点发送一个包含 JSON 载荷以及用户请求信息的 HTTP 请求,从而启动对话会话。您的执行方式会解析请求并返回包含 JSON 载荷的响应。然后,Actions on Google 会将该载荷转换为向用户呈现的语音和多媒体输出。
![](https://developers.google.cn/static/assistant/actions/images/json-conversation.png?authuser=5&hl=sv)
如需详细了解 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 助理可以理解的响应消息。
![](https://developers.google.cn/static/assistant/actions/images/json-dialogflow.png?authuser=5&hl=sv)
如需详细了解 Actions on Google 通过 Dialogflow 调用您的 fulfillment 时 JSON 载荷的格式,请参阅 Dialogflow 网络钩子格式。