我是API.AI和Google Actions的新手。我有一个由履行生成的项目列表。我想获取用户选择的选项。我试过阅读文档,但我似乎无法理解它。
https://developers.google.com/actions/assistant/responses#handling_a_selected_item
我也试过设置后续意图,但它不会工作。它总是会给出后备回复。
我尝试搜索产品或其他内容,并使用列表选择器格式显示结果。我想获取我选择的选项。这是一个search_product意图,我有一个跟进意图choose_product
答案 0 :(得分:2)
您可以通过两种方式获取有关API列表中的操作列表/轮播选择事件的信息:
actions_intent_OPTION
活动 正如囚犯已经提到的,您可以使用actions_intent_OPTION
创建一个意图。此意图将匹配包含列表/轮播选择as documented here的查询。
API.AI会将列表/轮播选择传递给您的webhook,可以通过以下方式检索:
A)使用Google's Action on Google Node.js client library using the app.getContextArgument() method。
B)在webhook的请求正文中使用originalRequest
JSON attirbute来检索列表/轮播选择事件。列表/轮播选择事件webhook请求的结构将如下所示:
{
"originalRequest": {
"data": {
"inputs": [
{
"rawInputs": [
{
"query": "Today's Word",
"inputType": "VOICE"
}
],
"arguments": [
{
"textValue": "Today's Word",
"name": "OPTION"
}
],
"intent": "actions.intent.OPTION"
}
],
...
答案 1 :(得分:1)
这是对您的问题的侧面回答 - 但如果您不熟悉“动作”,那么您可能并不真正理解设计自己的动作的最佳方法。
而不是关注更高级的响应类型(例如列表),而是关注您希望与用户进行的对话。不要试图限制他们的反应 - 扩展您认为可以接受的内容。专注于基本的会话元素和基本的会话响应。
一旦您实现了良好的对话,您就可以返回并添加有助于该对话的元素。该列表应该是用户可以做什么的建议,而不是他们必须做什么的限制。
使用会话界面,我们必须在对话框之外思考。
答案 2 :(得分:1)
包含' actions_intent_OPTION'在从list / carousel中选择项目时尝试触发的意图的事件部分(两者都工作)。 然后在您将在webhook中触发的函数中使用此代码,而不是getContextArguments()或getItemSelected():
const param = assistant.getArgument('OPTION');
OR app.getArgument(' OPTION&#39);
取决于您为ApiAiApp命名的内容(即):
let Assistant = require('actions-on-google').ApiAiAssistant;
const assistant = new Assistant({request: req, response: response});
然后,继续介绍如何在list / carousel helpers的文档中的其余示例中完成它。我不确切知道为什么会这样,但是这个方法显然会从JSON请求中检索actions_intent_OPTION参数。
答案 3 :(得分:-1)