У меня в главном контроллере есть два основных метода:
public synchronized void sendQuestion(Activity activity, PostQuestion pq) {
Map<String, Object> map = allConversations.get(activity.getConversation().getId());
map.put("command", pq.getQuestionId()); //It will run a command at next user input
allConversations.put(activity.getConversation().getId(), map); //Store all conversation data
sendMessage(activity, pq.getQuestionLabel()); //QuestionLabel is a string
}
public boolean sendMessage(Activity activity, String msg) {
Activity reply = activity.createReply(msg);
try {
this.connector.getConversations()
.sendToConversation(
activity.getConversation().getId(),
reply);
return true;
} catch (Exception e) {
return false;
}
}
Мой бот - это базовый бот QnA. Он извлекает данные из API и отправляет результаты. Он задает вопросы после ответов. Моя проблема: если я отправляю, например, два сообщения с методом sendMessage, а затем сообщение с sendQuestion (кто отправляет сообщение тоже):
sendMessage(activity, "Hello");
sendMessage(activity, "World!");
sendQuestion(activity, PostQuestion.askHello())
иногда случается, что у меня естьследующий порядок «Сообщение - Вопрос (сообщение) - Сообщение» вместо «Сообщение - Сообщение - Вопрос».
Есть ли у меня проблема с потоками? (Я не делаю многопоточность в моем приложении). Я пытался использовать синхронизированное ключевое слово для двух моих методов, но моя проблема все еще здесь.
Спасибо за помощь!