本部分介绍 Actions on Google 调用您的 通过 Actions SDK 执行。
对话开始后,即会获得一个唯一的 conversationId
进行标识。对于每个后续用户
您的执行方式会收到一个 intent,
网络钩子必须处理和响应。此 conversationId
将存在于每个请求中,
响应对,直到对话结束。
请求正文
当用户进行初始询问或提供后续输入时,Google 助理会发送请求 。来自 Google 助理的对话 webhook 请求包含触发的 intent、用户输入的原始文本以及用户设备的外观功能等数据。
对话 webhook 格式中请求的关键字段总结如下:
字段 | 说明 |
---|---|
isInSandbox |
该布尔变量主要用于
事务功能,用于指明网络钩子是否应在沙盒中处理此请求
模式。在沙盒模式下,网络钩子不应向用户收取任何采购订单的款项,也不应履行任何采购订单。
默认设置为“true ”。 |
surface |
有关用户当前与之互动的 Google 助理 surface 及其功能的信息。 |
Inputs |
调用请求的相关信息。对于触发调用,这包括一个 intent。对于后续的 请求,此对象可能还包含与 您的执行方式指定的预期输入。 |
User |
发起请求的用户的相关信息。这些信息包括权限 和用户的语言区域。 |
Conversation |
有关对话上下文的信息,包括对话 ID、类型 (例如,此请求是否正在发起新对话)以及对话令牌 在整个对话生命周期内存储持久性数据。 |
availableSurfaces |
这些信息会用于 多表面对话。 |
简单调用请求示例
以下代码段显示了一个对话网络钩子格式的调用请求示例。
{ "user": { "userId": "ABwppHEF...", "locale": "en-US", "lastSeen": "2018-03-21T17:59:52Z", "userStorage": "{\"data\":{}}" }, "device": {}, "surface": { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] }, "conversation": { "conversationId": "1521784527171", "type": "NEW" }, "inputs": [ { "intent": "actions.intent.MAIN", "rawInputs": [ { "inputType": "VOICE", "query": "Talk to my test app" } ] } ], "availableSurfaces": [ { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] } ] }
简单对话请求示例
以下代码段显示了一个对话 webhook 格式的对话请求示例, 其中,用户输入是文本字符串(例如,“My lucky number is 88.”):
{ "user": { "userId": "ABwppHEF...", "locale": "en-US", "lastSeen": "2018-03-21T17:59:52Z", "userStorage": "{\"data\":{}}" }, "device": {}, "surface": { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] }, "conversation": { "conversationId": "1521784527171", "type": "NEW" }, "inputs": [ { "intent": "actions.intent.TEXT", "rawInputs": [ { "inputType": "VOICE", "query": "My lucky number is 88." } ] } ], "availableSurfaces": [ { "capabilities": [ { "name": "actions.capability.SCREEN_OUTPUT" }, { "name": "actions.capability.AUDIO_OUTPUT" }, { "name": "actions.capability.MEDIA_RESPONSE_AUDIO" }, { "name": "actions.capability.WEB_BROWSER" } ] } ] }
响应正文
从执行端点向 Google 助理发送的 HTTP 发布的标头中的 Content-Type
必须为 application/json
。
响应(位于 对话 webhook 格式包含数据,例如显示 用户(包括音频和视觉组件)以及可被 在后续请求中触发(称为“预期意图”)。预期 intent 可以是 Google 助理可以理解的任何 intent,如前所述 Intents API 参考中给出的值。
详细了解如何在设置响应时 它们会显示在 Google 助理中,请参阅 响应文档。
简单响应示例
以下代码段显示了对话中的简单响应示例 webhook 格式。
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "You are using the Actions SDK. Do you want to hear more about it?" } } ] } } } ] }
帮助程序示例
以下代码段展示了在对话中使用帮助程序 intent 的示例
webhook 格式。在此示例中,webhook 使用
actions.intent.OPTIONS
辅助 intent,用于指示 Google 助理获取
供用户在多个选项之间进行选择
如需详细了解如何使用辅助 intent,请参阅 帮助程序指南。
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.OPTION", "inputValueData": { "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec", "carouselSelect": { "items": [ { "optionInfo": { "key": "one", "synonyms": [ "synonym of KEY_ONE 1", "synonym of KEY_ONE 2" ] }, "description": "Description of number one", "title": "Number one" }, { "optionInfo": { "key": "two", "synonyms": [ "synonym of KEY_TWO 1", "synonym of KEY_TWO 2" ] }, "description": "Description of number two", "title": "Number two" } ] } } } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "this shows an example of a carousel" } } ], "suggestions": [ { "title": "1" }, { "title": "2" } ] } } } ] }
结束对话示例
以下代码段显示了一个用于结束对话的简单响应示例 会话 webhook 响应格式。
expectedUserResponse
响应消息中的 false
值会向 Google 助理表明,没有进一步的用户
正确输入,并结束当前对话。通过
finalResponse
值指示 Google 助理先显示或输出什么内容
对话结束。
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Good bye" } } ] } } }
了解如何在用户调用标准 来结束与 Google 助理的对话,请参阅 退出对话。