Webhook 生成的列表提取选项由用户选择
Webhook generated list fetch option selected by user
我是 API.AI 和 Google 操作方面的新手。我有一个由履行生成的项目列表。我想获取用户选择的选项。我试过阅读文档,但我似乎无法理解它。
https://developers.google.com/actions/assistant/responses#handling_a_selected_item
我也试过设置跟进意图,但没用。它总是以回退响应告终。
我正在尝试搜索产品或其他内容,结果使用列表选择器格式显示。我想获取我选择的选项。这是一个 search_product 意图,我有一个跟进意图 choose_product
这是对您问题的侧面回答 - 但如果您是 Actions 的新手,那么您可能并不真正了解设计自己的 Actions 的最佳方法。
与其关注更高级的响应类型(例如列表),不如关注您希望与用户进行的对话。不要试图限制他们的反应——扩大你认为你可以接受的范围。专注于基本的会话元素和你的基本会话响应。
一旦您实施了良好的对话,您就可以返回并添加有助于该对话的元素。该列表应该是用户 可以 做什么的建议,而不是他们 必须 做什么的限制。
对于对话界面,我们必须跳出对话框思考。
我认为问题是通过单击列表(而不是说出)生成的响应最终会发生 actions_intent_OPTION
事件,因此 API.AI 需要您执行一个两件事:
- 使用此事件(以及其他上下文,如果您愿意,以帮助确定正在处理哪个列表)创建一个 Intent,如下所示:
- 或者创建一个具有您想要的特定上下文的回退意图(即 - 不是您的默认回退意图)。
后者似乎是最好的方法,因为它还将涵盖语音响应。
(或者两者都做,我想。)
您有两种选择来获取有关 API.AI Google list/carousel 选择事件的操作信息:
- 使用API.AI的
actions_intent_OPTION
事件
正如 Prisoner 已经提到的,您可以使用 actions_intent_OPTION
创建一个意图。此意图将匹配包含 list/carousel 选择 as documented here.
的查询
- 使用 webhook
API.AI 会将 list/carousel 选择传递给您的 webhook,可以通过以下任一方式检索:
A) 使用 Google's Action on Google Node.js client library using the app.getContextArgument() method。
B) 在 Webhook 请求正文中使用 originalRequest
JSON 属性来检索 list/carousel 选择事件。 list/carousel 选择事件 Webhook 请求的结构如下所示:
{
"originalRequest": {
"data": {
"inputs": [
{
"rawInputs": [
{
"query": "Today's Word",
"inputType": "VOICE"
}
],
"arguments": [
{
"textValue": "Today's Word",
"name": "OPTION"
}
],
"intent": "actions.intent.OPTION"
}
],
...
在从 list/carousel 中选择项目时尝试触发的意图的事件部分中包含 'actions_intent_OPTION'(两者都有效)。
然后在您将在 webhook 中触发的函数中使用此代码,而不是 getContextArguments() 或 getItemSelected():
const param = assistant.getArgument('OPTION');
或
app.getArgument('OPTION');
取决于您为 ApiAiApp 命名的名称(即):
let Assistant = require('actions-on-google').ApiAiAssistant;
const assistant = new Assistant({request: req, response: response});
然后,在 list/carousel 帮助程序文档中的示例的其余部分中继续执行它的完成方式。我不知道为什么会这样,但这个方法显然是从 JSON 请求中检索 actions_intent_OPTION 参数。
我是 API.AI 和 Google 操作方面的新手。我有一个由履行生成的项目列表。我想获取用户选择的选项。我试过阅读文档,但我似乎无法理解它。
https://developers.google.com/actions/assistant/responses#handling_a_selected_item
我也试过设置跟进意图,但没用。它总是以回退响应告终。
我正在尝试搜索产品或其他内容,结果使用列表选择器格式显示。我想获取我选择的选项。这是一个 search_product 意图,我有一个跟进意图 choose_product
这是对您问题的侧面回答 - 但如果您是 Actions 的新手,那么您可能并不真正了解设计自己的 Actions 的最佳方法。
与其关注更高级的响应类型(例如列表),不如关注您希望与用户进行的对话。不要试图限制他们的反应——扩大你认为你可以接受的范围。专注于基本的会话元素和你的基本会话响应。
一旦您实施了良好的对话,您就可以返回并添加有助于该对话的元素。该列表应该是用户 可以 做什么的建议,而不是他们 必须 做什么的限制。
对于对话界面,我们必须跳出对话框思考。
我认为问题是通过单击列表(而不是说出)生成的响应最终会发生 actions_intent_OPTION
事件,因此 API.AI 需要您执行一个两件事:
- 使用此事件(以及其他上下文,如果您愿意,以帮助确定正在处理哪个列表)创建一个 Intent,如下所示:
- 或者创建一个具有您想要的特定上下文的回退意图(即 - 不是您的默认回退意图)。
后者似乎是最好的方法,因为它还将涵盖语音响应。
(或者两者都做,我想。)
您有两种选择来获取有关 API.AI Google list/carousel 选择事件的操作信息:
- 使用API.AI的
actions_intent_OPTION
事件
正如 Prisoner 已经提到的,您可以使用 actions_intent_OPTION
创建一个意图。此意图将匹配包含 list/carousel 选择 as documented here.
- 使用 webhook
API.AI 会将 list/carousel 选择传递给您的 webhook,可以通过以下任一方式检索:
A) 使用 Google's Action on Google Node.js client library using the app.getContextArgument() method。
B) 在 Webhook 请求正文中使用 originalRequest
JSON 属性来检索 list/carousel 选择事件。 list/carousel 选择事件 Webhook 请求的结构如下所示:
{
"originalRequest": {
"data": {
"inputs": [
{
"rawInputs": [
{
"query": "Today's Word",
"inputType": "VOICE"
}
],
"arguments": [
{
"textValue": "Today's Word",
"name": "OPTION"
}
],
"intent": "actions.intent.OPTION"
}
],
...
在从 list/carousel 中选择项目时尝试触发的意图的事件部分中包含 'actions_intent_OPTION'(两者都有效)。 然后在您将在 webhook 中触发的函数中使用此代码,而不是 getContextArguments() 或 getItemSelected():
const param = assistant.getArgument('OPTION');
或 app.getArgument('OPTION');
取决于您为 ApiAiApp 命名的名称(即):
let Assistant = require('actions-on-google').ApiAiAssistant;
const assistant = new Assistant({request: req, response: response});
然后,在 list/carousel 帮助程序文档中的示例的其余部分中继续执行它的完成方式。我不知道为什么会这样,但这个方法显然是从 JSON 请求中检索 actions_intent_OPTION 参数。