Ibm cloud 使用Javascript在IBM Watson Assistant中创建选项类型响应,发送标签而不是值
我试图让我的聊天机器人要求用户提供他们的当前位置。 我的想法是让Watson Assistant返回一个自定义响应,在web客户端中,我实现了handler_prerecieve方法来查找用户定义的响应并覆盖正常行为 如果返回的用户定义对象有一个名为“response\u subtype”的自定义属性,其值为“getPosition”,则javascript获取当前位置并动态创建一个选项类型响应,其中一个按钮的标签设置为“Send my current position”,值设置为纬度和经度的串联。 这一切都很好,只是忽略了值,客户机将“发送我的当前位置”(即标签)发送回IBMWatson。我尝试过对值进行硬编码,但得到了相同的结果 如果我将IBM Watson Assistant配置为使用选项响应而不是用户定义的响应,那么它将按预期工作……当然,只有在Watson Assistant UI中输入硬代码值时才起作用 这是我构建客户端显示的响应的地方: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”,值设置为纬度和经度的串
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实现中的错误