Activates state if the user’s query matches with the given regular expression.

Learn more about regular expressions here.

state("state1") {
    activators {
        regex(".*")
        regex(Pattern.compile("[a-z]+"))
    }

    action {
        val pattern = activator.regex?.pattern
        val matcher = activator.regex?.matcher
    }
}

RegexActivator configuration

val helloWorldBot = BotEngine(
    scenario = HelloWorldScenario,
    activators = arrayOf(
        ...,
        RegexActivator,
        ...
    )
)

Matcher

Once a RegexActivator activates some state, a RegexActivatorContext instance becomes available through an activator.regex variable in the action block of this state.

state("state1") {
    activators {
        regex("[^\\d]*((?<number>\\d+).*)+")
    }

    action {
        val number = activator.regex?.group("number")
        reactions.say("Your number is $number")
    }
}

Use cases

Regular expressions are of course not such flexible and smart as a machine learning driven approaches like NLU engines. But in some cases it can be used to handle a strictly defined users’ queries like “/start” message that is sent from Telegram messenger each time the user clicks on “Start” button of the chatbot.