我是API.AI和Google Actions的新手 . 我有一个由履行生成的项目列表 . 我想获取用户选择的选项 . 我试过阅读文档,但我似乎无法理解它 .
https://developers.google.com/actions/assistant/responses#handling_a_selected_item
我也试过设置后续意图,但它不会工作 . 它总是最终给出后备响应 .
我正在尝试搜索产品或其他内容,并使用列表选择器格式显示结果 . 我想获取我选择的选项 . 这是一个search_product意图,我有一个跟进意图choose_product
4 回答
您可以通过两种方式获取有关API.AI中Google上的操作列表/轮播选择事件的信息:
正如囚犯已经提到的,你可以用
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请求的结构如下所示:这是对你的问题的侧面回答 - 但如果你是炬新手,那么可能你并没有真正理解设计自己的炬的最佳方法 .
而不是关注更高级的响应类型(例如列表),而是关注您希望与用户一起使用的 conversation . 不要试图限制他们的反应 - 扩展您认为可以接受的内容 . 专注于基本的会话元素和基本的会话响应 .
一旦您实现了良好的对话,您就可以返回并添加有助于该对话的元素 . 该列表应该是用户可以做什么的建议,而不是他们必须做的限制 .
使用会话界面,我们必须在对话框之外思考 .
在从list / carousel中选择项目时,您尝试触发的intent的事件部分中包含'actions_intent_OPTION'(两者都有效) . 然后在您将在webhook中触发的函数中使用此代码,而不是getContextArguments()或getItemSelected():
或app.getArgument('OPTION');
取决于您为ApiAiApp命名的内容(即):
然后,继续介绍如何在list / carousel helpers的文档中的其余示例中完成它 . 我不确切知道为什么会这样,但是这个方法显然从JSON请求中检索了actions_intent_OPTION参数 .
我认为问题是通过单击列表(而不是被说出)生成的响应最终会出现
actions_intent_OPTION
事件,因此API.AI要求您执行以下两项操作之一:后者似乎是最好的方法,因为它也将涵盖语音响应 .
(或者两者兼而有之,我猜 . )