Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
An event is a foundational concept in building agents — it represents something noteworthy happening either on Microsoft Teams or within your application. These events can originate from the user (e.g. installing or uninstalling your app, sending a message, submitting a form), or from your application server (e.g. startup, error in a handler).
The Teams SDK makes it easy to subscribe to these events and respond appropriately. You can register event handlers to take custom actions when specific events occur — such as logging errors, triggering workflows, or sending follow-up messages.
Here are the events that you can start building handlers for:
| Event Name | Description |
|---|---|
start |
Triggered when your application starts. Useful for setup or boot-time logging. |
signin |
Triggered during a sign-in flow via Teams. |
error |
Triggered when an unhandled error occurs in your app. Great for diagnostics. |
activity |
A catch-all for incoming Teams activities (messages, commands, etc.). |
activity.response |
Triggered when your app sends a response to an activity. Useful for logging. |
activity.sent |
Triggered when an activity is sent (not necessarily in response). |
| Event Name | Description |
|---|---|
start |
Triggered when your application starts. Useful for setup or boot-time logging. |
sign_in |
Triggered during a sign-in flow via Teams. |
error |
Triggered when an unhandled error occurs in your app. Great for diagnostics. |
activity |
Triggered for all incoming Teams activities (messages, commands, etc.). |
activity_response |
Triggered when your app sends a response to an activity. Useful for logging. |
activity_sent |
Triggered when an activity is sent (not necessarily in response). |
Note
Event handler registration uses @app.event("<event_name>") with an async function that receives an event object specific to the event type (e.g., ErrorEvent, ActivityEvent).
Example 1
We can subscribe to errors that occur in the app.
app.OnError((sender, @event) =>
{
// do something with the error
app.Logger.Info(@event.Exception.ToString());
});
@app.event("error")
async def handle_error(event: ErrorEvent):
"""Handle error events."""
print(f"Error occurred: {event.error}")
if hasattr(event, "context") and event.context:
print(f"Context: {event.context}")
app.event('error', ({ error }) => {
app.log.error(error);
// Or Alternatively, send it to an observability platform
});
Example 2
When an activity is received, log its JSON payload.
app.OnActivity((sender, @event) =>
{
app.Logger.Info(@event.Activity.ToString());
});
When an activity is received, log its payload.
@app.event("activity")
async def handle_activity(event: ActivityEvent):
"""Handle activity events."""
print(f"Activity received: {event.activity}")
When a user signs in using OAuth or SSO, use the graph api to fetch their profile and say hello.
import * as endpoints from '@microsoft/teams.graph-endpoints';
app.event('signin', async ({ activity, send, userGraph }) => {
const me = await userGraph.call(endpoints.me.get);
await send(`👋 Hello ${me.name}`);
});