Écoute des événements

Un événement est un concept fondamental dans la création d’agents : il représente quelque chose d’important qui se produit sur Microsoft Teams ou au sein de votre application. Ces événements peuvent provenir de l’utilisateur (par exemple, l’installation ou la désinstallation de votre application, l’envoi d’un message, l’envoi d’un formulaire) ou de votre serveur d’applications (par exemple, démarrage, erreur dans un gestionnaire).

Organigramme montrant les activités Teams et les événements de connexion atteignant le serveur d’applications, qui envoie les événements entrants et sortants à un gestionnaire d’événements enregistré avec app.event().

Le SDK Teams facilite la souscription à ces événements et y répond de manière appropriée. Vous pouvez inscrire les gestionnaires d’événements pour effectuer des actions personnalisées lorsque des événements spécifiques se produisent, tels que la journalisation d’erreurs, le déclenchement de workflows ou l’envoi de messages de suivi.

Voici les événements pour lesquels vous pouvez commencer à créer des gestionnaires :

Nom de l'événement Description
start Déclenché au démarrage de votre application. Utile pour la journalisation au moment de l’installation ou du démarrage.
sign_in Déclenché lors d’un flux de connexion via Teams.
error Déclenché lorsqu’une erreur non gérée se produit dans votre application. Idéal pour les diagnostics.
activity Déclenché pour toutes les activités Teams entrantes (messages, commandes, etc.).
activity_response Déclenché lorsque votre application envoie une réponse à une activité. Utile pour la journalisation.
activity_sent Déclenché lorsqu’une activité est envoyée (pas nécessairement dans une réponse).

Remarque

L’inscription du gestionnaire d’événements utilise @app.event("<event_name>") une fonction asynchrone qui reçoit un objet d’événement spécifique au type d’événement (par exemple, ErrorEventActivityEvent).

Nom de l'événement Description
start Déclenché au démarrage de votre application. Utile pour la journalisation au moment de l’installation ou du démarrage.
signin Déclenché lors d’un flux de connexion via Teams.
error Déclenché lorsqu’une erreur non gérée se produit dans votre application. Idéal pour les diagnostics.
activity Fourre-tout pour les activités Teams entrantes (messages, commandes, etc.).
activity.response Déclenché lorsque votre application envoie une réponse à une activité. Utile pour la journalisation.
activity.sent Déclenché lorsqu’une activité est envoyée (pas nécessairement dans une réponse).

Exemple 1

Nous pouvons nous abonner aux erreurs qui se produisent dans l’application.

@app.event("error")
async def handle_error(event: ErrorEvent):
    print(f"Error occurred: {event.error}")
    # Or alternatively, send it to an observability platform
app.event('error', ({ error }) => {
  app.log.error(error);
  // Or Alternatively, send it to an observability platform
});

Exemple 2

Lorsqu’un utilisateur se connecte à l’aide OAuth de ou SSO, utilisez l’API Graph pour récupérer son profil et dire bonjour.

from microsoft_teams.graph import get_graph_client

graph = app.add_oauth_flow("graph")

@graph.on_signin
async def handle_signin(event: SignInEvent):
    client = get_graph_client(event.token_response.token)
    me = await client.me.get()
    await event.activity_ctx.send(f"👋 Hello {me.display_name}")

Conseil

L’événement à l’échelle sign_in de l’application se déclenche pour chaque connexion. Pour ne réagir qu’à un seul, utilisez le gestionnaire de @flow.on_signin son flux comme indiqué ci-dessus. Consultez Authentifier les utilisateurs dans Microsoft Teams.

Lorsqu’un utilisateur se connecte à l’aide de OAuth ou SSO, utilisez l’API Graph pour récupérer son profil et dire bonjour.

import { Client as GraphClient } from '@microsoft/teams.graph';
import * as endpoints from '@microsoft/teams.graph-endpoints';

const graph = app.addOAuthFlow('graph');

graph.onSignInComplete(async (ctx, token) => {
  const client = new GraphClient({ token: () => token.token }, { baseUrlRoot: app.graphBaseUrl });
  const me = await client.call(endpoints.me.get);
  await ctx.send(`👋 Hello ${me.displayName}`);
});

Conseil

L’événement à l’échelle signin de l’application se déclenche pour chaque connexion. Pour ne réagir qu’à une seule, utilisez le rappel de onSignInComplete son flux comme indiqué ci-dessus. Consultez Authentifier les utilisateurs dans Microsoft Teams.