我有一个Java会话服务客户端(使用SDK)

ConversationService conversationService = new ConversationService(ConversationService.VERSION_DATE_2016_07_11, userName, password);
MessageRequest.Builder messageRequestBuilder = new MessageRequest.Builder();
messageRequestBuilder.inputText(question);
ServiceCall<MessageResponse> response = conversationService.message(workspaceId, messageRequestBuilder.build());
MessageResponse answer =  response.execute();


不管我提供什么文字,我总是收到问候消息。
为了解决这个问题,我进行了第二次呼叫,其中包括答案中的整个上下文,就像这样

messageRequestBuilder = new MessageRequest.Builder();
messageRequestBuilder.context(answer.getContext());
messageRequestBuilder.inputText(question);
response = conversationService.message(workspaceId, messsageRequestBuilder.build());
answer =  response.execute();


现在,我确实超过了最初的问候文字。

我的问题是:在对话的每个步骤中,我至少需要提供什么?

最佳答案

Watson对话服务是无状态的,这意味着对话的状态是在JSON消息请求和响应的context部分中发送的。因此,您需要做的是从Watson Conversation服务的JSON响应中获取context部分,并将其在下一个请求中发送回给包含消息请求中的服务。

context中,有一个信息,即最后一个节点被处理以及下一轮评估在哪里开始。

10-01 01:49