-
Notifications
You must be signed in to change notification settings - Fork 39
Hooks
Vladislav Metelyagin edited this page Mar 19, 2021
·
2 revisions
Hooks can be used to intercept any phase of each request processing. This mechanism allows you to log, modify or completely interrupt a request.
You can handle different hooks right in the scenario:
val HelloWorldScenario = Scenario {
handle<BotRequestHook> {
// This handler will be invoked right after a new request was received
}
handle<BeforeProcessHook> {
// This handler will be invoked right before each request processing
}
handle<BeforeActionHook> {
// This handler be invoked right before each action block execution
}
handle<AfterActionHook> {
// This handler will be invoked right after each action block execution
}
handle<AfterProcessHook> {
// This handler will be invoked once a request processing is complete
}
handle<ActionErrorHook> {
// This handler will be invoked if action block crashed with an exception
}
}
You can also add handlers outside of scenario using BotEngine
instance:
val helloWorldBot = BotEngine(
scenario = HelloWorldScenario,
activators = arrayOf(
AlexaActivator,
dialogflowActivator,
RegexActivator,
BaseEventActivator,
CatchAllActivator
)
).apply {
hooks.addHookAction<BotRequestHook> {
...
}
}
Your handler can completely interrupt a request processing. Just throw a BotHookException this way:
Scenario {
handle<BotRequestHook> {
throw BotHookException("I'm on vacation and won't process any request!")
}
}