4

我是 API.AI 和 Google Actions 的新手。我有一个由履行生成的项目列表。我想获取用户选择的选项。我已经尝试阅读文档,但似乎无法理解。

https://developers.google.com/actions/assistant/responses#handling_a_selected_item

我也尝试设置后续意图,但它不会起作用。它总是最终给出后备响应。

我正在尝试搜索产品或其他东西,结果使用列表选择器格式显示。我想获取我选择的选项。这是一个 search_product 意图,我有一个后续意图 choose_product

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

4 回答 4

2

您有两个选项可以在 API.AI 中获取有关 Google 列表/轮播选择事件的 Actions 信息:

  1. 使用 API.AI 的actions_intent_OPTION事件

正如 Prisoner 已经提到的,您可以使用actions_intent_OPTION. 此意图将匹配包含此处记录的列表/轮播选择的查询。

  1. 使用网络钩子

API.AI 会将列表/轮播选择传递给您的 webhook,可以通过以下任一方式检索:

A) 使用app.getContextArgument() 方法在 Google Node.js 客户端库上使用 Google 的 Action

B) 使用originalRequestWebhook 请求正文中的 JSON 属性来检索列表/轮播选择事件。列表/轮播选择事件 webhook 请求的结构如下所示:

{
  "originalRequest": {
    "data": {
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "Today's Word",
              "inputType": "VOICE"
            }
          ],
          "arguments": [
            {
              "textValue": "Today's Word",
              "name": "OPTION"
            }
          ],
          "intent": "actions.intent.OPTION"
        }
      ],
    ...
于 2017-07-18T23:13:09.527 回答
1

这是对您的问题的一个侧面回答 - 但如果您是 Actions 的新手,那么您可能并没有真正理解设计自己的 Actions 的最佳方法。

与其关注更高级的响应类型(例如列表),不如关注您希望与用户进行的对话。不要试图限制他们的反应——扩大你认为你可以接受的范围。专注于基本的对话元素和你的基本对话反应。

一旦实现了良好的对话,您就可以返回并添加有助于该对话的元素。该列表应该是对用户可以做什么的建议,而不是对他们必须做什么的限制。

对于对话式界面,我们必须跳出对话框思考。

于 2017-07-17T11:42:07.340 回答
1

在从列表/轮播中选择项目时尝试触发的意图的事件部分中包含“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 helpers 文档的其余示例中如何完成它。我不确切知道为什么会这样,但这个方法显然是从 JSON 请求中检索 actions_intent_OPTION 参数。

于 2017-08-23T04:25:01.060 回答
-1

我认为问题在于通过单击列表(而不是说出来)生成的响应最终会发生事件actions_intent_OPTION,因此 API.AI 要求您执行以下两项操作之一:

  1. 使用此事件(以及其他上下文,如果您愿意,以帮助确定正在处理的列表)创建一个意图,如下所示:

在此处输入图像描述

  1. 或者使用您想要的特定上下文创建一个后备意图(即 - 不是您的默认后备意图)。

后者似乎是最好的方法,因为它还将涵盖语音响应。

(或者两者都做,我猜。)

于 2017-07-18T16:00:22.340 回答