首页 > 解决方案 > 在 Watson Assistant 中添加和编辑 JSON 数组

问题描述

我正在为我的公司学习 Watson AI / Assistant,因为我们打算向客户推销它(我们是一家网络开发公司)。我进入了助手,并通过设计一个文字冒险游戏来自学。在这个游戏中,Watson 将带领你穿越一个世界,在这个世界中,你可以捡起东西,然后放下它们,诸如此类。所以我试图让 watson 创建一个称为库存的 JSON 数组。

但是,虽然我设法在上下文变量选项下创建了数组,但我无法轻松地添加或减去它,因为我的助手似乎没有办法执行任何代码。

我的问题很简单:我可以在识别意图后执行 javascript 代码吗?例如,如果用户键入“pick up sand”,意图​​是“pick up”,而 sand 是被识别的实体,那么执行 javascript 将实体结果(sand)解析到数组“inventory”中?

这可能吗?

我尝试将上下文变量创建为数组(有效)。但是,如果不打印整个内容,我就无法更新它,这使得它无法用作数组和库存。这是我在第一步添加上下文变量创建的 JSON 数组。

    {
      "output": {
        "generic": [
          {
            "values": [
              {
                "text": "Welcome to Kojoto."
              }
            ],
            "response_type": "text",
            "selection_policy": "sequential"
          },
          {
            "time": 5000,
            "typing": false,
            "response_type": "pause"
          }
        ]
      },
      "context": {
        "Inventory": [
          {
            "name": "belt",
            "description": "A leather belt."
          },
          {
           "name": "pouch",
            "description": "A leather pouch."
          }
        ]
      }
    }

我希望能够以公认的意图添加到库存而不删除整个阵列。这样,它比将 $has-sand 从“yes”变为 null 更加高效和实用。

标签: javascriptarraysjsonartificial-intelligenceibm-watson

解决方案


据我了解,您想在数组中添加和删除对象。

看看以下方法,如果任何意图匹配,它们可以帮助您在数组中添加一个对象,您也可以以同样的方式删除它。

JSONArray.append(对象)

{
  "context": {
    "toppings_array": "<? $toppings_array.append('ketchup', 'tomatoes') ?>"
  }
}

将新值附加到 JSONArray

JSONArray.remove(整数)

{
  "context": {
    "toppings_array": "<? $toppings_array.remove(0) ?>"
  }
}

从 JSONArray 中移除索引位置的元素

完整方法列表


推荐阅读