Event handlers
Event handlers are functions that respond to events in a conversation. Your agent can respond to four event types:| Handler | When it runs | Common use case |
|---|---|---|
onMessage | A user sends a message in the conversation | Process the message and reply |
onAction | A user clicks a button or selects a value in an interactive card | Handle form submissions, button clicks, dropdown selections |
onReaction | A user adds or removes a reaction | Capture feedback or trigger a follow-up |
onResolve | The conversation is marked as resolved | Clean up state, log analytics, or send a summary |
onMessage handler receives the user’s message, passes conversation context to an LLM or custom function, and sends the response back through Novu.
Context object
Each event handler receives a context object with the information needed to understand the current event and respond. Depending on the event type, it can include:- The incoming message
- The current conversation state and metadata
- The resolved subscriber (when available)
- Recent conversation history
- Provider information
- Platform-specific details, such as thread or channel identifiers
- Methods for replying, updating metadata, triggering workflows, or resolving the conversation
Event handling flow
When a user messages your agent:Novu maps the thread
Novu maps the provider thread to a conversation and resolves the platform user to a subscriber, when possible.
Handler passes context to agent logic
Your handler passes the message and conversation context to your agent logic.
onMessage
onMessage fires every time a user sends a message in a conversation with your agent.
Handling attachments
Inbound messages can include file attachments when the platform supports them. Novu normalizes files intomessage.attachments with short-lived signed URLs. Keep in mind:
- Download attachment URLs promptly inside your handler.
- Signed links are valid for 15 minutes.
- Inbound attachments are limited to 25 MB per file.
onAction
onAction fires when a user clicks a button or selects a value in an interactive card. See Interactive cards.
onReaction
onReaction fires when a user adds or removes an emoji reaction on a message.
onResolve
onResolve fires when the conversation is marked as resolved via ctx.resolve() or the resolve signal.
Related
Reply
Send plain text, markdown, attachments, and interactive cards.
Edit sent messages
Update a message in place after sending it with
ReplyHandle.Connect your first agent
Walk through a full support-bot handler file.