private static Map<String, Object> convertMemoryItems(IConversationMemory memory) { Map<String, Object> props = new HashMap<>(); IWritableConversationStep currentStep; IConversationStep lastStep; currentStep = memory.getCurrentStep(); var current = currentStep.getConversationOutput(); props.put(KEY_CURRENT, current); var last = new ConversationOutput(); if (memory.getPreviousSteps().size() > 0) { lastStep = memory.getPreviousSteps().get(0); last = lastStep.getConversationOutput(); } props.put(KEY_LAST, last); var past = memory.getConversationOutputs(); if (past.size() > 1) { past = past.subList(1, past.size()); } else { past = new LinkedList<>(); } props.put(KEY_PAST, past); return props; } }
public static ConversationMemorySnapshot convertConversationMemory(IConversationMemory conversationMemory) { ConversationMemorySnapshot snapshot = new ConversationMemorySnapshot(); if (conversationMemory.getUserId() != null) { snapshot.setUserId(conversationMemory.getUserId()); } if (conversationMemory.getConversationId() != null) { snapshot.setConversationId(conversationMemory.getConversationId()); } snapshot.setBotId(conversationMemory.getBotId()); snapshot.setBotVersion(conversationMemory.getBotVersion()); snapshot.setConversationState(conversationMemory.getConversationState()); for (IConversationMemory.IConversationStep redoStep : conversationMemory.getRedoCache()) { ConversationMemorySnapshot.ConversationStepSnapshot redoStepSnapshot = iterateConversationStep(redoStep); snapshot.getRedoCache().push(redoStepSnapshot); } for (int i = conversationMemory.getAllSteps().size() - 1; i >= 0; i--) { IConversationMemory.IConversationStep conversationStep = conversationMemory.getAllSteps().get(i); snapshot.getConversationSteps().add(iterateConversationStep(conversationStep)); } snapshot.getConversationOutputs().addAll(conversationMemory.getConversationOutputs()); snapshot.getConversationProperties().putAll(conversationMemory.getConversationProperties()); return snapshot; }