@Override public void storeData(IData data) { store.put(data.getKey(), data); }
@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 List<Expression> extractContextProperties(List<IData<Context>> contextDataList) { List<Expression> ret = new LinkedList<>(); contextDataList.forEach(contextData -> { String contextKey = contextData.getKey(); Context context = contextData.getResult(); String key = contextKey.substring((CONTEXT_IDENTIFIER + ":").length()); if (key.startsWith(PROPERTIES_IDENTIFIER) && context.getType().equals(Context.ContextType.expressions)) { ret.addAll(expressionProvider.parseExpressions(context.getValue().toString())); } }); return ret; }
public static Map<String, Object> prepareContext(List<IData<Context>> contextDataList) { Map<String, Object> dynamicAttributesMap = new HashMap<>(); contextDataList.forEach(contextData -> { Context context = contextData.getResult(); Context.ContextType contextType = context.getType(); if (contextType.equals(Context.ContextType.object) || contextType.equals(Context.ContextType.string)) { String dataKey = contextData.getKey(); dynamicAttributesMap.put(dataKey.substring(dataKey.indexOf(":") + 1), context.getValue()); } }); return dynamicAttributesMap; } }
private void storeContextQuickReplies(IWritableConversationStep currentStep, List<IData<Context>> contextDataList) { contextDataList.forEach(contextData -> { String contextKey = contextData.getKey(); Context context = contextData.getResult(); String key = contextKey.substring((CONTEXT_IDENTIFIER + ":").length()); if (key.startsWith(QUICK_REPLIES_IDENTIFIER) && context.getType().equals(Context.ContextType.object)) { String contextQuickReplyKey = CONTEXT_IDENTIFIER + ":" + QUICK_REPLIES_IDENTIFIER + ":"; String quickRepliesKey = "context"; if (contextKey.contains(contextQuickReplyKey)) { quickRepliesKey = contextKey.substring(contextQuickReplyKey.length()); } if (context.getType().equals(Context.ContextType.object)) { List<QuickReply> quickReplies = convertMapToObjects((List<Map<String, String>>) context.getValue()); storeQuickReplies(currentStep, quickReplies, quickRepliesKey); } } }); }
Map<String, Object> contextMap) { outputDataList.forEach(output -> { String outputKey = output.getKey(); TemplateMode templateMode = outputKey.startsWith(KEY_OUTPUT) ? TemplateMode.TEXT : null; if (templateMode == null) {
for (IData<Context> contextDatum : contextData) { Context context = contextDatum.getResult(); if (contextDatum.getKey().equals(CONTEXT + ":" + contextKey)) { switch (context.getType()) { case expressions:
private static ConversationMemorySnapshot.ConversationStepSnapshot iterateConversationStep(IConversationMemory.IConversationStep conversationStep) { ConversationMemorySnapshot.ConversationStepSnapshot conversationStepSnapshot = new ConversationMemorySnapshot.ConversationStepSnapshot(); if (!conversationStep.isEmpty()) { ConversationMemorySnapshot.PackageRunSnapshot packageRunSnapshot = new ConversationMemorySnapshot.PackageRunSnapshot(); conversationStepSnapshot.getPackages().add(packageRunSnapshot); for (IData data : conversationStep.getAllElements()) { ConversationMemorySnapshot.ResultSnapshot resultSnapshot = new ConversationMemorySnapshot.ResultSnapshot(data.getKey(), data.getResult(), data.getPossibleResults(), data.getTimestamp(), data.isPublic()); packageRunSnapshot.getLifecycleTasks().add(resultSnapshot); } } return conversationStepSnapshot; }
private void templatingQuickReplies(IConversationMemory memory, List<IData<List<QuickReply>>> quickReplyDataList, Map<String, Object> contextMap) { quickReplyDataList.forEach(quickReplyData -> { List<QuickReply> quickReplies = quickReplyData.getResult(); List<QuickReply> preTemplatedQuickReplies = copyQuickReplies(quickReplies); quickReplies.forEach(quickReply -> { try { String preTemplatedValue = quickReply.getValue(); String postTemplatedValue = templatingEngine.processTemplate(preTemplatedValue, contextMap); quickReply.setValue(postTemplatedValue); String preTemplatedExpressions = quickReply.getExpressions(); String postTemplatedExpressions = templatingEngine.processTemplate(preTemplatedExpressions, contextMap); quickReply.setExpressions(postTemplatedExpressions); } catch (ITemplatingEngine.TemplateEngineException e) { log.error(e.getLocalizedMessage(), e); } }); templateData(memory, quickReplyData, quickReplyData.getKey(), preTemplatedQuickReplies, quickReplies); memory.getCurrentStep().addConversationOutputList(KEY_QUICK_REPLIES, quickReplies); }); }