boolean occurredInAnyStep(IConversationMemory memory, String dataKey, ValueEvaluation valueEvaluation) { List<IData<String>> allLatestData = memory.getAllSteps().getAllLatestData(dataKey); return allLatestData.stream().anyMatch(latestData -> valueEvaluation.evaluate(latestData) == SUCCESS); }
@Override public ExecutionState execute(IConversationMemory memory, List<BehaviorRule> trace) { boolean success; List<List<IData<List<String>>>> allData = memory.getAllSteps().getAllData(BEHAVIOR_RULES_SUCCESS); if (allData != null) { final int actualTimesOccurred = countTimesOccurred(getAllBehaviorRules(allData)); boolean isMin = true; boolean isMax = true; if (minTimesOccurred != -1) { isMin = actualTimesOccurred >= minTimesOccurred; } if (maxTimesOccurred != -1) { isMax = actualTimesOccurred <= maxTimesOccurred; } success = isMin && isMax; } else { success = false; } if (success) { state = ExecutionState.SUCCESS; } else { state = ExecutionState.FAIL; } return state; }
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; }