Webhook生成的用户

时间:2017-07-17 09:11:56

标签: node.js webhooks actions-on-google api-ai

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

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

我也试过设置后续意图,但它不会工作。它总是会给出后备回复。

我尝试搜索产品或其他内容,并使用列表选择器格式显示结果。我想获取我选择的选项。这是一个search_product意图,我有一个跟进意图choose_product

enter image description here

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以通过两种方式获取有关API列表中的操作列表/轮播选择事件的信息:

  1. 使用API​​.AI的actions_intent_OPTION活动
  2. 正如囚犯已经提到的,您可以使用actions_intent_OPTION创建一个意图。此意图将匹配包含列表/轮播选择as documented here的查询。

    1. 使用webhook
    2. 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)

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

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

    1. 或者使用您想要的特定上下文创建一个后备意图(即 - 不是您的默认后备意图)。
    2. 后者似乎是最好的方法,因为它也将涵盖语音响应。

      (或者两者兼而有之。)