
admin.story.StoryDefinitionAnswersContainer.kt Maven / Gradle / Ivy
/*
* Copyright (C) 2017/2021 e-voyageurs technologies
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ai.tock.bot.admin.story
import ai.tock.bot.admin.answer.AnswerConfiguration
import ai.tock.bot.admin.answer.AnswerConfigurationType
import ai.tock.bot.admin.answer.AnswerConfigurationType.*
import ai.tock.bot.admin.answer.ScriptAnswerConfiguration
import ai.tock.bot.admin.bot.BotVersion
import ai.tock.bot.definition.StoryDefinition
import ai.tock.bot.engine.BotBus
import ai.tock.bot.engine.config.BotDefinitionWrapper
/**
* Contains list of [AnswerConfiguration].
*/
internal interface StoryDefinitionAnswersContainer {
/**
* The answers available.
*/
val answers: List
/**
* The type of answer configuration.
*/
val currentType: AnswerConfigurationType
fun findCurrentAnswer(): AnswerConfiguration? =
findAnswer(currentType)
/**
* Is there a current answer ?
*/
fun hasCurrentAnswer(): Boolean = findCurrentAnswer()?.hasAnswer() == true
fun findAnswer(type: AnswerConfigurationType): AnswerConfiguration? =
answers.firstOrNull { it.answerType == type }
fun storyDefinition(botDefinition: BotDefinitionWrapper, storyDefinitionConfiguration: StoryDefinitionConfiguration): StoryDefinition? =
when (currentType) {
script -> (findCurrentAnswer() as? ScriptAnswerConfiguration)
?.findBestVersion(BotVersion.getCurrentBotVersion(botDefinition.botId))
?.storyDefinition
builtin -> botDefinition.builtInStory(storyDefinitionConfiguration.storyId)
else -> null
}
fun findNextSteps(bus: BotBus, story: StoryDefinitionConfiguration): List = emptyList()
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy