Notifications de modifications pour les ressources Microsoft Teams à l’aide des ressources Microsoft Graph

Les notifications de modification pour les ressources Microsoft Teams à l’aide de Microsoft Graph vous permettent de vous abonner aux modifications d’une ressource (créer, mettre à jour et supprimer). Les notifications de modification fournissent un modèle à faible latence, ce qui vous permet de maintenir un abonnement. Vous pouvez également obtenir les données de ressource dans les notifications et éviter d’appeler l’API pour obtenir la charge utile.

Remarque

La durée maximale d’un abonnement est de 60 minutes. Toutefois, les abonnements peuvent être renouvelés jusqu’à ce que l’appelant ait l’autorisation d’accéder à la ressource.

Exemple de types de notification

Microsoft Teams prend en charge deux types de notifications de modifications :

  • Notification de modification pour suivre toutes les modifications liées à une ressource dans le locataire : Par exemple, vous pouvez vous abonner aux modifications apportées aux messages dans n’importe quel canal du locataire et être averti chaque fois qu’un message est créé, mis à jour ou supprimé dans n’importe quel canal du locataire. Ces notifications peuvent avoir des exigences de licence et de paiement, telles que des notifications de modification pour les messages et l’appartenance.

  • Notification de modification pour suivre toutes les modifications pour une ressource spécifique : Par exemple, vous pouvez vous abonner aux modifications apportées aux messages dans un canal particulier et recevoir une notification chaque fois qu’un message est créé, mis à jour ou supprimé.

Pour obtenir des détails sur les types de notifications de modifications pris en charge par ressource, voir Notifications de modifications Microsoft Graph.

Ressources prises en charge

Le tableau suivant répertorie les ressources Microsoft Teams qui prennent en charge les notifications de modification et leurs chemins de ressources correspondants. Appliquez le chemin d’accès aux ressources pour votre scénario comme spécifié lors de la création d’un abonnement. Le type de la charge utile du chemin de ressource est le type sous la colonne « Ressource » ou une collection de ce type.

Remarque

Les abonnements aux ressources marqués avec un astérisque (*) sont uniquement disponibles sur le point de /beta terminaison.

Ressources Chemins d'accès aux ressources pris en charge Les données de ressources peuvent être incluses dans les notifications
CallRecording Teams Tous les enregistrements d’un organization :communications/onlineMeetings/getAllRecordings
Tous les enregistrements d’une réunion spécifique : communications/onlineMeetings/{onlineMeetingId}/recordings
Enregistrement d’appel qui devient disponible dans une réunion organisée par un utilisateur spécifique : users/{userId}/onlineMeetings/getAllRecordings
Enregistrement d’appel qui devient disponible dans une réunion où une application Teams particulière est installée : appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings *
Oui
Teams callTranscript Toutes les transcriptions d’un organization :communications/onlineMeetings/getAllTranscripts
Toutes les transcriptions d’une réunion spécifique : communications/onlineMeetings/{onlineMeetingId}/transcripts
Transcription d’appel qui devient disponible dans une réunion organisée par un utilisateur spécifique : users/{userId}/onlineMeetings/getAllTranscripts
Transcription d’appel qui devient disponible dans une réunion où une application Teams particulière est installée : appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllTrancripts *
Oui
Canal Teams Modifications apportées aux canaux dans toutes les équipes :
/teams/getAllChannels
Modifications apportées au canal dans une équipe spécifique :
/teams/{id}/channels
Oui
Conversation Teams Modifications à n’importe quelle conversation dans le locataire :
/chats
Modification d’un utilisateur spécifique :
/chats/{id}
Modifications apportées à toute conversation dans le locataire où une application Teams particulière est installée :
/appCatalogs/teamsApps/{id}/installedToChats
Oui
chatmessage Teams Modification des messages de conversation dans tous les canaux de toutes les équipes :
/teams/getAllMessages
Modification des messages de conversation dans un canal spécifique :
/teams/{id}/channels/{id}/messages
Modification des messages de conversation dans toutes les conversations :
/chats/getAllMessages
Modification des messages de conversation dans une conversation spécifique :
/chats/{id}/messages
Les modifications apportées aux messages de conversation dans toutes les conversations d’un utilisateur particulier font partie des éléments suivants :
/users/{id}/chats/getAllMessages
Modifications apportées aux messages de conversation dans toutes les conversations du locataire où une application Teams particulière est installée :
/appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
Oui
conversationMember Teams Modifications apportées à l’appartenance d’une équipe spécifique :
/teams/{id}/members
Modifications apportées à l’appartenance d’une conversation spécifique :
/chats/{id}/members
Modifications apportées à l’appartenance de toutes les conversations :
/chats/getAllMembers
Modifications apportées à l’appartenance de tous les canaux d’une équipe spécifique :
teams/{id}/channels/getAllMembers
Modifications apportées à l’appartenance à toutes les conversations dans le locataire où une application Teams particulière est installée :
/appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
Modifications apportées à l’appartenance à tous les canaux sur le locataire :
teams/getAllChannels/getAllMembers
Oui
Équipe Teams Modifications apportées à n’importe quelle équipe du locataire :
/teams
Modification à un utilisateur spécifique :
/teams/{id}
Oui
Teams TeamsAppInstallation Modifications lorsqu’une application Teams particulière est installée, mise à niveau ou supprimée :
/appCatalogs/teamsApps/{teams-app-id}/installations
Oui

Charges utiles de notification

Vous pouvez obtenir la notification avec ou sans données de ressource, en fonction de votre abonnement. L’abonnement aux données de ressource vous permet d’obtenir la charge utile du message et la notification, ce qui élimine la nécessité de rappeler et d’obtenir le contenu.

Notifications avec des données de ressource

Pour les notifications avec des données de ressource, la charge utile se présente comme suit. Cette charge utile concerne une notification correspondant à la ressource de message de conversation. La notification réelle inclut les propriétés ressource et resourceData qui représentent la ressource qui a déclenché la notification.

{
    "value": [{
        "subscriptionId": "10493aa0-4d29-4df5-bc0c-ef742cc6cd7f",
        "changeType": "created",
        "clientState": "<<--SpecifiedClientState-->>",
        "subscriptionExpirationDateTime": "2021-02-02T10:30:34.9097561-08:00",
        "resource": "chats('19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces')/messages('1612289765949')",
        "resourceData": {
            "id": "1612289765949",
            "@odata.type": "#Microsoft.Graph.chatMessage",
            "@odata.id": "chats('19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces')/messages('1612289765949')"
        },
        "encryptedContent": {
            "data": "<<--EncryptedContent-->",
            "dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
            "encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
            "encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
        },
        "tenantId": "<<--TenantForWhichNotificationWasSent-->>"
    }],
    "validationTokens": ["<<--ValidationTokens-->>"]
}

Pour plus d’informations sur la validation des jetons et le déchiffrement de la charge utile, consultez Configurer des notifications de modification qui incluent des données de ressources.

La charge utile de la notification déchiffrée se présente comme suit. La charge utile déchiffrée de l’exemple précédent est conforme au schéma chatMessage. La charge utile est similaire à celle renvoyée par les opérations GET.

{
  "id": "1612289992105",
  "replyToId": null,
  "etag": "1612289992105",
  "messageType": "message",
  "createdDateTime": "2021-02-02T18:19:52Z",
  "lastModifiedDateTime": "2021-02-02T18:19:52.105Z",
  "lastEditedDateTime": null,
  "deletedDateTime": null,
  "subject": null,
  "summary": null,
  "chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces",
  "importance": "normal",
  "locale": "en-us",
  "webUrl": null,
  "from": {
    "application": null,
    "device": null,
    "user": {
      "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
      "displayName": "Ramjot Singh",
      "userIdentityType": "aadUser"
    },
    "conversation": null
  },
  "body": {
    "contentType": "text",
    "content": "test"
  },
  "channelIdentity": null,
  "attachments": [],
  "mentions": [],
  "policyViolation": null,
  "reactions": [],
  "replies": [],
  "hostedContents": []
}

Notifications sans les données de ressource

Les notifications sans les données de ressource vous donnent suffisamment d’informations pour passer des appels GET pour obtenir la ressource. Les abonnements aux notifications sans données de ressource ne nécessitent pas de certificat de chiffrement (car les données de ressource réelles ne sont pas envoyées).

La charge utile se présente comme suit. Cette charge utile concerne un message envoyé dans un canal.

{
  "subscriptionId": "9f9d1ed0-c9cc-42e7-8d80-a7fc4b0cda3c",
  "changeType": "created",
  "tenantId": "<<--TenantForWhichNotificationWasSent-->>",  
  "clientState": "<<--SpecifiedClientState-->>",
  "subscriptionExpirationDateTime": "2021-02-02T11:26:41.0537895-08:00",
  "resource": "teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2')/messages('1612293113399')",
  "resourceData": {
    "id": "1612293113399",
    "@odata.type": "#Microsoft.Graph.chatMessage",
    "@odata.id": "teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2')/messages('1612293113399')"
  }
}

L’exemple précédent montre une notification correspondant à une ressource de message de conversation. La notification réelle inclut les propriétés ressource et resourceData qui représentent la ressource qui a déclenché la notification. Les propriétés de Ressource et @odata.id peuvent être utilisées pour effectuer des appels vers Microsoft Graph afin d’obtenir la charge utile de la ressource.

Remarque

Les appels GET retournent toujours l’état actuel de la ressource. Si la ressource est modifiée entre le moment où la notification est envoyée et le moment où la ressource est récupérée, l’opération retourne la ressource mise à jour.