Skip to main content

Add agent event handling

Agent events allow an embedded Strategy agent consumption page to communicate with the container page. You can register agent event handlers to track user interactions, trigger custom workflows, or synchronize your host application state.

Once you have embedded the agent page by using microstrategy.embeddingContexts.embedBotConsumptionPage(props), you can use embeddingContext.registerEventHandler(evtName, handler) to listen for events.

Agent event types

Use the AgentEventType enumeration in your application code to register handlers.

const AgentEventType = {
ON_QUESTION_SUBMITTED: "onQuestionSubmitted",
ON_ANSWER_RECEIVED: "onAnswerReceived",
ON_ERROR: "onError",
ON_CONVERSATION_SWITCH: "onConversationSwitch",
ON_NEW_CHAT: "onNewChat",
ON_THUMBS_UP: "onThumbsUp",
ON_THUMBS_DOWN: "onThumbsDown",
ON_FOLLOW_UP: "onFollowUp",
ON_SOURCE_CLICK: "onSourceClick",
ON_CHAT_DELETED: "onChatDeleted",
ON_CLEAR_HISTORY: "onClearHistory",
ON_CLEAR_ALL_CHATS: "onClearAllChats",
ON_ASK_AGAIN: "onAskAgain",
};

Register and remove handlers

Use registerEventHandler to bind a callback and removeEventHandler to unbind it.

const onQuestionSubmittedHandler = (content) => {
// Add your own logic here
console.log("Question submitted", content);
};

embeddingContext.registerEventHandler(
AgentEventType.ON_QUESTION_SUBMITTED,
onQuestionSubmittedHandler
);

// Later, when cleanup is needed:
embeddingContext.removeEventHandler(
AgentEventType.ON_QUESTION_SUBMITTED,
onQuestionSubmittedHandler
);

Events

The following sections describe the supported agent events.

onQuestionSubmitted

Event enumeration

AgentEventType.ON_QUESTION_SUBMITTED

Description

Raised when a user submits a question to the agent.

Content

Object containing the submitted question context.

Code example

embeddingContext.registerEventHandler(
AgentEventType.ON_QUESTION_SUBMITTED,
questionSubmittedHandler
);

Content example

{
"text": "hi",
"conversationId": "21A1AD8B96364095BDF92FC1E297C75A"
}

onAnswerReceived

Event enumeration

AgentEventType.ON_ANSWER_RECEIVED

Description

Raised when the agent receives an answer for a submitted question.

Content

Object containing answer metadata and answer body.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_ANSWER_RECEIVED, answerReceivedHandler);

Content example

{
"questionId": "B7CA92F04B9FAE8D941C3E9B7E0CD754:DC8E28DFF1C84F48AA4F56BA7368CFC4:1E4A24D905D14B469512A38513AC7469",
"answer": {
"text": "Hi, welcome back!"
}
}

onError

Event enumeration

AgentEventType.ON_ERROR

Description

Raised when the agent flow encounters an error.

Content

Object containing message and type.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_ERROR, errorHandler);

Content example

{
"message": "{\"message\":\"Oops. Something went wrong. Please try again.\",\"details\":\"\"}",
"type": "question_streaming_error"
}

onConversationSwitch

Event enumeration

AgentEventType.ON_CONVERSATION_SWITCH

Description

Raised when a user switches to another conversation.

Content

Object containing the current conversationId.

Code example

embeddingContext.registerEventHandler(
AgentEventType.ON_CONVERSATION_SWITCH,
conversationSwitchHandler
);

Content example

{
"conversationId": "1E4A24D905D14B469512A38513AC7469"
}

onNewChat

Event enumeration

AgentEventType.ON_NEW_CHAT

Description

Raised when a user starts a new chat.

Content

Object containing the newly created conversation identifier.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_NEW_CHAT, newChatHandler);

Content example

{
"conversationId": "40C259C9854C4AC1A6C4D73721769D18"
}

onThumbsUp

Event enumeration

AgentEventType.ON_THUMBS_UP

Description

Raised when a user gives positive feedback to an answer.

Content

Object containing messageId.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_THUMBS_UP, thumbsUpHandler);

Content example

{
"messageId": "B7CA92F04B9FAE8D941C3E9B7E0CD754:DC8E28DFF1C84F48AA4F56BA7368CFC4:1E4A24D905D14B469512A38513AC7469"
}

onThumbsDown

Event enumeration

AgentEventType.ON_THUMBS_DOWN

Description

Raised when a user gives negative feedback to an answer.

Content

Object containing messageId.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_THUMBS_DOWN, thumbsDownHandler);

Content example

{
"messageId": "B7CA92F04B9FAE8D941C3E9B7E0CD754:DC8E28DFF1C84F48AA4F56BA7368CFC4:1E4A24D905D14B469512A38513AC7469"
}

onFollowUp

Event enumeration

AgentEventType.ON_FOLLOW_UP

Description

Raised when a user clicks or sends a follow-up question.

Content

Object containing messageId.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_FOLLOW_UP, followUpHandler);

Content example

{
"messageId": "B7CA92F04B9FAE8D941C3E9B7E0CD754:DC8E28DFF1C84F48AA4F56BA7368CFC4:1E4A24D905D14B469512A38513AC7469"
}

onSourceClick

Event enumeration

AgentEventType.ON_SOURCE_CLICK

Description

Raised when a user clicks a source reference in an answer.

Content

Object containing the clicked source metadata.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_SOURCE_CLICK, sourceClickHandler);

Content example

{
"sourceId": "6703BC33A1F74D3895FAE1403EB0401D",
"name": "AUTO_MD.md",
"url": "https://..."
}

onChatDeleted

Event enumeration

AgentEventType.ON_CHAT_DELETED

Description

Raised when a user deletes a single chat conversation.

Content

Object containing the deleted conversation identifier.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_CHAT_DELETED, chatDeletedHandler);

Content example

{
"conversationId": "1E4A24D905D14B469512A38513AC7469"
}

onClearHistory

Event enumeration

AgentEventType.ON_CLEAR_HISTORY

Description

Raised when a user clears the history inside the active conversation.

Content

Object containing the affected conversation identifier.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_CLEAR_HISTORY, clearHistoryHandler);

Content example

{
"conversationId": "1E4A24D905D14B469512A38513AC7469"
}

onClearAllChats

Event enumeration

AgentEventType.ON_CLEAR_ALL_CHATS

Description

Raised when a user clears all chat conversations.

Content

Empty object.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_CLEAR_ALL_CHATS, clearAllChatsHandler);

Content example

{}

onAskAgain

Event enumeration

AgentEventType.ON_ASK_AGAIN

Description

Raised when a user triggers Ask Again on a previous question.

Content

Object containing messageId.

Code example

embeddingContext.registerEventHandler(AgentEventType.ON_ASK_AGAIN, askAgainHandler);

Content example

{
"messageId": "B7CA92F04B9FAE8D941C3E9B7E0CD754:DC8E28DFF1C84F48AA4F56BA7368CFC4:4C63C7442E4747D8AB74A96B2"
}

Best practices

  • Register handlers after embedBotConsumptionPage(props) resolves.
  • Remove handlers when your host view is unmounted or destroyed.
  • Keep handlers lightweight and push long-running work to async tasks.
  • Use onError to centralize fallback behavior and diagnostics.