private void storePropertiesPermanently() throws IResourceStore.ResourceStoreException { Properties longTermConversationProperties = conversationMemory.getConversationProperties().values().stream() .filter(property -> property.getScope() == Scope.longTerm) .filter(property -> property.getValue() != null) .collect(Collectors.toMap(Property::getName, Property::getValue, (a, b) -> b, Properties::new)); propertiesHandler.mergeProperties(longTermConversationProperties); }
private void removeOldInvalidProperties() { IConversationProperties conversationProperties = conversationMemory.getConversationProperties(); Map<String, Property> filteredConversationProperties = conversationProperties.entrySet().stream() .filter(property -> property.getValue().getScope() != Scope.step) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); conversationProperties.clear(); conversationProperties.putAll(filteredConversationProperties); }
@Override public Map<String, Object> convert(IConversationMemory memory) { Map<String, Object> ret = new LinkedHashMap<>(); List<IData<Context>> contextDataList = memory.getCurrentStep().getAllData(KEY_CONTEXT); var contextMap = prepareContext(contextDataList); var memoryMap = convertMemoryItems(memory); var conversationProperties = memory.getConversationProperties(); if (!contextMap.isEmpty()) { ret.put(KEY_CONTEXT, contextMap); ret.putAll(contextMap); } if (!conversationProperties.isEmpty()) { ret.put(KEY_PROPERTIES, conversationProperties.toMap()); } if (!memoryMap.isEmpty()) { ret.put(KEY_MEMORY, convertMemoryItems(memory)); } return ret; }
private void loadLongTermProperties(IConversationMemory conversationMemory) throws LifecycleException { try { Properties properties = propertiesHandler.loadProperties(); if (properties.containsKey(KEY_USER_INFO)) { Object userInfo = properties.get(KEY_USER_INFO); if (userInfo instanceof Map) { conversationMemory.getConversationProperties(). put(KEY_USER_INFO, new Property(KEY_USER_INFO, userInfo, Scope.conversation)); } } conversationMemory.getConversationProperties().putAll(convertProperties(properties)); } catch (IResourceStore.ResourceStoreException | IResourceStore.ResourceNotFoundException e) { throw new LifecycleException(e.getLocalizedMessage(), e); } }
if (!override && memory.getConversationProperties().containsKey(name)) { continue; memory.getConversationProperties().put(name, new Property(name, templatedObj, scope)); templateDataObjects.put(PROPERTIES_IDENTIFIER, memory.getConversationProperties().toMap());
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; }
propertyValue = propertyInstruction.getValue(); memory.getConversationProperties().put(propertyName, new Property(propertyName, propertyValue, scope));