@Override public IConversation startConversation(final String userId, final Map<String, Context> context, IPropertiesHandler propertiesHandler, final IConversation.IConversationOutputRenderer outputProvider) throws LifecycleException, IllegalAccessException { Conversation conversation = new Conversation(executablePackages, new ConversationMemory(botId, botVersion, userId), propertiesHandler, outputProvider); conversation.init(context); return conversation; }
public IConversationStep startNextStep() { return startNextStep(null); }
@Override public void redoLastStep() { if (!isRedoAvailable()) { throw new IllegalStateException(); } previousSteps.push(currentStep); currentStep = (IWritableConversationStep) redoCache.pop(); }
public static IConversationMemory convertConversationMemorySnapshot(ConversationMemorySnapshot snapshot) { ConversationMemory conversationMemory = new ConversationMemory(snapshot.getConversationId(), snapshot.getBotId(), snapshot.getBotVersion(), snapshot.getUserId()); conversationMemory.setConversationState(snapshot.getConversationState()); conversationMemory.getConversationProperties().putAll(snapshot.getConversationProperties()); List<IConversationMemory.IConversationStep> redoSteps = iterateRedoCache(snapshot.getRedoCache()); for (IConversationMemory.IConversationStep redoStep : redoSteps) { conversationMemory.getRedoCache().add(redoStep); } List<ConversationMemorySnapshot.ConversationStepSnapshot> conversationSteps = snapshot.getConversationSteps(); for (int i = 0; i < conversationSteps.size(); i++) { ConversationOutput conversationOutput = snapshot.getConversationOutputs().get(i); ConversationMemorySnapshot.ConversationStepSnapshot conversationStepSnapshot = conversationSteps.get(i); if (i > 0) { conversationMemory.startNextStep(conversationOutput); } for (ConversationMemorySnapshot.PackageRunSnapshot packageRunSnapshot : conversationStepSnapshot.getPackages()) { for (ConversationMemorySnapshot.ResultSnapshot resultSnapshot : packageRunSnapshot.getLifecycleTasks()) { Data data = new Data(resultSnapshot.getKey(), resultSnapshot.getResult(), resultSnapshot.getPossibleResults(), resultSnapshot.getTimestamp(), resultSnapshot.isPublic()); conversationMemory.getCurrentStep().storeData(data); } } } return conversationMemory; }
@Override public void undoLastStep() { if (!isUndoAvailable()) { throw new IllegalStateException(); } redoCache.push(currentStep); currentStep = (IWritableConversationStep) previousSteps.pop(); }
setConversationState(ConversationState.IN_PROGRESS); ((ConversationMemory) conversationMemory).startNextStep(); var contextData = createContextData(contexts); addContextToConversationOutput(conversationMemory.getCurrentStep(), contextData);