private IConversationMemory loadConversationMemory(String conversationId) throws ResourceStoreException, ResourceNotFoundException { var conversationMemorySnapshot = conversationMemoryStore.loadConversationMemorySnapshot(conversationId); return convertConversationMemorySnapshot(conversationMemorySnapshot); }
@Override public Integer update(String id, Integer version, ConversationMemorySnapshot content) throws ResourceStoreException { storeConversationMemorySnapshot(content); return 0; }
@Override public String toString() { return "ConversationStep" + "{input=" + getLatestData("input") + ", output=" + getLatestData("output") + '}'; } }
@Override public void executeTask(IConversationMemory memory) { IConversationMemory.IWritableConversationStep currentStep = memory.getCurrentStep(); IData<String> latestInput = currentStep.getLatestData(KEY_INPUT); if (latestInput == null) { return; } String input = latestInput.getResult(); String formattedInput = normalizer.normalizeInput(input, allowedChars, true, convertSpecialCharacter); currentStep.storeData(new Data<>("input:formatted", formattedInput)); currentStep.addConversationOutputString(KEY_INPUT, formattedInput); }
private void mergeConversationMemory(IConversationMemory currentConversationMemory, ConversationMemorySnapshot callbackMemorySnapshot) { if (callbackMemorySnapshot != null && !callbackMemorySnapshot.getConversationSteps().isEmpty()) { var currentStep = currentConversationMemory.getCurrentStep(); var callbackConversationMemory = convertConversationMemorySnapshot(callbackMemorySnapshot); var currentCallbackStep = callbackConversationMemory.getCurrentStep(); Set<String> callbackKeys = currentCallbackStep.getAllKeys(); for (String callbackKey : callbackKeys) { currentStep.storeData(currentCallbackStep.getData(callbackKey)); } } }
private void storeTemplatedData(IConversationMemory memory, String originalKey, String templateAppendix, Object dataValue) { String newOutputKey = joinStrings(":", originalKey, templateAppendix); IData processedData = dataFactory.createData(newOutputKey, dataValue); memory.getCurrentStep().storeData(processedData); }
private int countActionOccurrences(IConversationStepStack conversationStepStack, String action) { int count = 0; for (int i = 0; i < conversationStepStack.size(); i++) { IConversationStep conversationStep = conversationStepStack.get(i); IData<List<String>> latestData = conversationStep.getLatestData(KEY_ACTIONS); if (latestData != null) { List<String> actions = latestData.getResult(); if (actions.contains(action)) { count++; } } } return count; }
private void storeQuickReplies(IWritableConversationStep currentStep, List<QuickReply> quickReplies, String action) { if (!quickReplies.isEmpty()) { String outputQuickReplyKey = StringUtilities. joinStrings(":", MEMORY_QUICK_REPLIES_IDENTIFIER, action); IData outputQuickReplies = dataFactory.createData(outputQuickReplyKey, quickReplies); outputQuickReplies.setPublic(true); currentStep.storeData(outputQuickReplies); currentStep.addConversationOutputList(MEMORY_QUICK_REPLIES_IDENTIFIER, quickReplies); } }
private void templateData(IConversationMemory memory, IData dataText, String dataKey, Object preTemplated, Object postTemplated) { storeTemplatedData(memory, dataKey, PRE_TEMPLATED, preTemplated); storeTemplatedData(memory, dataKey, POST_TEMPLATED, postTemplated); memory.getCurrentStep().storeData(dataText); }
private List<IDictionary> prepareTemporaryDictionaries(IConversationMemory memory) { IConversationMemory.IConversationStepStack previousSteps = memory.getPreviousSteps(); List<IDictionary> temporaryDictionaries = Collections.emptyList(); if (previousSteps.size() > 0) { List<IData<List<Map<String, String>>>> data = previousSteps.get(0).getAllData("quickReplies"); if (data != null) { List<QuickReply> quickReplies = extractQuickReplies(data); temporaryDictionaries = convertQuickReplies(quickReplies, expressionProvider); } } return temporaryDictionaries; }
@Override public <T> IData<T> getLatestData(String prefix) { List<IData> elements = getAllElements(); Collections.reverse(elements); for (IData element : elements) { if (element.getKey().startsWith(prefix)) { return element; } } return null; }
private void addContextToConversationOutput(IWritableConversationStep currentStep, List<IData<Context>> contextData) { if (!contextData.isEmpty()) { var context = ConversationMemoryUtilities.prepareContext(contextData); currentStep.addConversationOutputMap(KEY_CONTEXT, context); } }
private String storeConversationMemory(IConversationMemory conversationMemory, Deployment.Environment environment) throws ResourceStoreException { var memorySnapshot = convertConversationMemory(conversationMemory); memorySnapshot.setEnvironment(environment); return conversationMemoryStore.storeConversationMemorySnapshot(memorySnapshot); }
public IConversationStep startNextStep() { return startNextStep(null); }
private ConversationState getConversationState() { return this.conversationMemory.getConversationState(); }
@Override public IConversationStepStack getPreviousSteps() { return new ConversationStepStack(previousSteps); }
@Override public <T> IData<T> createData(String key, T value) { return createData(key, value, false); }
@Override public ConversationMemorySnapshot read(String id, Integer version) throws ResourceNotFoundException, ResourceStoreException { return loadConversationMemorySnapshot(id); }
private void setConversationState(ConversationState conversationState) { this.conversationMemory.setConversationState(conversationState); }
@Override public IResourceId create(ConversationMemorySnapshot content) throws ResourceStoreException { final String conversationId = storeConversationMemorySnapshot(content); return new IResourceId() { @Override public String getId() { return conversationId; } @Override public Integer getVersion() { return 0; } }; }