Ibm cloud 使用Javascript在IBM Watson Assistant中创建选项类型响应,发送标签而不是值

Ibm cloud 使用Javascript在IBM Watson Assistant中创建选项类型响应,发送标签而不是值,ibm-cloud,ibm-watson,Ibm Cloud,Ibm Watson,我试图让我的聊天机器人要求用户提供他们的当前位置。 我的想法是让Watson Assistant返回一个自定义响应,在web客户端中,我实现了handler_prerecieve方法来查找用户定义的响应并覆盖正常行为 如果返回的用户定义对象有一个名为“response\u subtype”的自定义属性,其值为“getPosition”,则javascript获取当前位置并动态创建一个选项类型响应,其中一个按钮的标签设置为“Send my current position”,值设置为纬度和经度的串

我试图让我的聊天机器人要求用户提供他们的当前位置。 我的想法是让Watson Assistant返回一个自定义响应,在web客户端中,我实现了handler_prerecieve方法来查找用户定义的响应并覆盖正常行为

如果返回的用户定义对象有一个名为“response\u subtype”的自定义属性,其值为“getPosition”,则javascript获取当前位置并动态创建一个选项类型响应,其中一个按钮的标签设置为“Send my current position”,值设置为纬度和经度的串联。 这一切都很好,只是忽略了值,客户机将“发送我的当前位置”(即标签)发送回IBMWatson。我尝试过对值进行硬编码,但得到了相同的结果

如果我将IBM Watson Assistant配置为使用选项响应而不是用户定义的响应,那么它将按预期工作……当然,只有在Watson Assistant UI中输入硬代码值时才起作用

这是我构建客户端显示的响应的地方:

if(item.user_defined.response_subtype === "getPosition") {
            
            var position = getPosition(); //returns string
            item.response_type = "option";
            item.options =  [
          {
            "label": "Send my current position",
            "value": {
              "input": {
                "text": position
              }
            }
          }
        ];
            event.updateHistory = false;
        }
我对这个很陌生,所以我想知道这是否是最好的(唯一的?)方式?我在客户端脚本中为选项提供的JSON与我使用UI创建选项时在JSON编辑器中显示的脚本相同,这表明这可能是handler_prerecieve实现中的错误