我正在尝试使用IBM Watson Conversation API在Java中进行对话。 我也在传递
消息请求中的上下文
。它返回相同的内容。
static Map<String, Object> context = new HashMap<String, Object>();
public static void main(String[] args) {
System.setProperty("https.proxyHost", "10.xx.xx.xx");
System.setProperty("https.proxyPort", "80");
ConversationService service = new ConversationService(ConversationService.VERSION_DATE_2016_07_11);
service.setUsernameAndPassword("xxxxxx", "xxxxxx");
MessageRequest newMessage = new MessageRequest.Builder().inputText("galaxy light").context(context).build();
MessageResponse response = service.message("xxxxx", newMessage).execute();
context = response.getContext();
System.out.println(context);
System.out.println(response);
}
我正在保存上下文并再次传递。
"output": {
"log_messages": [],
"text": [
"i did not understand you may say can you add hot chocolate"
],
"nodes_visited": [
"node_2_1487682572904"
]
},
"input": {
"text": "galaxy light"
}
我还能做些什么?
答案 0 :(得分:1)
您的第一个电话总是会有一个空白的上下文。您的示例代码是初始调用。
如果进一步调用,则将之前返回的上下文发送回维护状态。
但是您的问题看起来可能有所不同。在这种情况下,猜测你正在点击anything_else
节点。如果置信度<0.2,则不会匹配意图。因此,您需要检查JSON的intents[]
部分,以了解系统是否需要更多培训。
快速执行此操作的方法是在输出中添加以下内容。
<? intents ?>
我还建议您在测试时打开alternate_intents
。
除此之外,上面没有太多内容。我建议发布完整的JSON响应。