IBM Watson Conversation API始终返回父节点,而不是插入子节点

时间:2017-03-24 06:51:18

标签: java watson-conversation

我正在尝试使用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"
  }

我还能做些什么?

1 个答案:

答案 0 :(得分:1)

您的第一个电话总是会有一个空白的上下文。您的示例代码是初始调用。

如果进一步调用,则将之前返回的上下文发送回维护状态。

但是您的问题看起来可能有所不同。在这种情况下,猜测你正在点击anything_else节点。如果置信度<0.2,则不会匹配意图。因此,您需要检查JSON的intents[]部分,以了解系统是否需要更多培训。

快速执行此操作的方法是在输出中添加以下内容。

<? intents ?>

我还建议您在测试时打开alternate_intents

除此之外,上面没有太多内容。我建议发布完整的JSON响应。