2016-11-17 6 views
1

У меня есть клиент диалог Service в Java (с помощью SDK)Что мне нужно предоставить в MessageRequest службы Converstation для ответа на первый шаг в разговоре?

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(); 

Теперь я пройти первоначальный текст приветствия.

Мой вопрос: что мне нужно предоставить как минимум на каждом этапе разговора?

ответ

1

Служба беседы Watson является апатридом, означающей, что состояние разговора отправляется в context часть запроса сообщения JSON и ответа. Так что вам нужно сделать, чтобы получить часть context из ответа JSON службы беседы Watson и отправить ее обратно в следующий запрос службы, включая ее в запросе.

В context есть информация, которая была обработана последним и где будет следующий раунд начала оценки.

+0

Так что мне всегда нужно все, что связано с контекстом? Целесообразно ли добавлять объекты в контекст от клиента, или это всегда должно быть частью ввода? – mpjjonker

+1

Вы можете добавлять объекты в контекст от клиента. Это может иметь смысл, если у вас есть данные о пользователе, который разговаривает с системой - например, его имя или возраст. Вы можете использовать этот метод, чтобы установить их как переменные в поле 'context' и использовать их в потоке беседы. Например. вы добавляете в 'context'' "username": "John" 'и в диалоговом узле вы пишете« Привет, имя пользователя ... ». –