Handlers
Handlers are event-driven pre-processors that intercept system events before they reach your Conversational Flows.
The Pipeline's First Layer
Each Handler is a small node graph – the first layer of the Pipeline, running before any Conversational Flow executes. Because every event passes through its matching Handler on every turn, this is where you enforce cross-cutting rules – like language detection – once, instead of repeating them inside every flow.
How Handlers Work
When a system event occurs (a user sends a message, a conversation starts, a face is detected), the corresponding Handler fires first. The Handler can:
- Inspect the event – e.g., detect the language of the user's text
- Modify context – e.g., accept or reject a language change, store a variable
- Decide what happens next – either pass control to the Conversational Flows (
Continue Processing) or stop processing entirely (Abandon Processing)
This flow runs on every event, every time, before any flow logic runs. If a Handler does not end with Continue Processing, the event is dropped and no flow is triggered.
The Five Handlers
| Handler | Event | Common Uses |
|---|---|---|
| On User Input | Every message sent by the user | Language detection, input pre-processing, variable checks |
| On Language Change | STT detects a different language | Accept or reject the language switch |
| On conversation-start | A new conversation session begins | Initialize variables, activate greeting flow |
| On conversation-stop | Conversation session ends | Cleanup, logging, final webhooks |
| On face-detected | (Kiosk) Camera detects a human face | Trigger greeting before user speaks |
Handler-Specific Nodes
Handlers use a distinct subset of nodes designed for pre-processing. The available nodes differ slightly between Handlers – for example, On Language Change has Accept Language Change and Reject Language Change, while On User Input has Detect Text Language.
See each Handler's page for the exact nodes available. General-purpose nodes (Check Variable, Store Variable, Route by Signal, Intent Matcher, etc.) are available in all Handlers.
Viewing and Editing a Handler
Click any Handler name in the left sidebar to open it on the canvas. The Handler's flow starts at a Signal Handler node (the entry point), which you connect to the rest of the logic.
Every Handler must end with one of:
- Continue Processing – Hand off to Conversational Flows
- Abandon Processing – Drop the event; no flow is triggered
- Activate Flow – Hand off to a specific flow (rather than general routing based on core logic as is with Continue Processing)
If a Handler has no path to Continue Processing, the event is always dropped. Make sure every branch in your Handler has an explicit outcome.