首页 文章

Webhook生成了用户选择的列表提取选项

提问于
浏览
3

我是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 回答

  • 1

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

    • Use API.AI's actions_intent_OPTION event

    正如囚犯已经提到的,你可以用 actions_intent_OPTION 创建一个意图 . 此意图将匹配包含列表/轮播选择as documented here的查询 .

    • Use a webhook

    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

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

    而不是关注更高级的响应类型(例如列表),而是关注您希望与用户一起使用的 conversation . 不要试图限制他们的反应 - 扩展您认为可以接受的内容 . 专注于基本的会话元素和基本的会话响应 .

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

    使用会话界面,我们必须在对话框之外思考 .

  • 2

    在从list / carousel中选择项目时,您尝试触发的intent的事件部分中包含'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参数 .

  • 1

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

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

    enter image description here

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

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

    (或者两者兼而有之,我猜 . )

相关问题