Recevoir des notifications de modification pour les mises à jour d’événements d’appel de réunion Microsoft Teams
Les notifications de modification dans Microsoft Graph vous permettent de vous abonner à l’appel démarré, à l’appel terminé et à la liste mise à jour pour les réunions en ligne Microsoft Teams. Les notifications de modification vous offrent un modèle à faible latence en vous permettant de conserver un abonnement. Vous pouvez également obtenir les données de ressource dans les notifications et ainsi éviter d’appeler l’API pour obtenir la charge utile.
Un abonnement a une période d’expiration maximale de 3 jours. Pour conserver l’abonnement pendant plus de cette période, une demande de renouvellement d’abonnement doit être effectuée. Pour plus d’informations, consultez Mettre à jour l’abonnement. Un utilisateur peut également attendre l’expiration de l’abonnement et créer un nouvel abonnement avec la même ressource de réunion.
Cette ressource prend en charge les notifications avec des données de ressource. Pour plus d’informations sur la configuration des notifications avec des données de ressources, consultez Configurer des notifications de modification qui incluent des données de ressource.
Autorisations
Type d’autorisation | Autorisations (de celle qui offre le plus de privilèges à celle qui en offre le moins) | Versions prises en charge |
---|---|---|
Déléguée (compte professionnel ou scolaire) | Non prise en charge. | Non prise en charge. |
Déléguée (compte Microsoft personnel) | Non prise en charge. | Non prise en charge. |
Application | OnlineMeetings.Read.All, OnlineMeetings.ReadWrite.All | bêta |
S’abonner à des événements d’appel de réunion en ligne
Pour obtenir des notifications de modification pour les événements d’appel d’une réunion, abonnez-vous à , où joinWebUrl
est la valeur encodée HTTP de l’URL de participation à /communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents
la réunion.
Par exemple, le joinWebUrl
dans l’URL suivante doit être acquis pour une réunion en ligne.
https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZmYwZTEyYjctZjA5MS00OTkzLWJhNzEtYzFiZDVjNGE0OGFj%40thread.v2/0?context=%7b%22Tid%22%3a%22909c6581-5130-43e9-88f3-fcb3582cde37%22%2c%22Oid%22%3a%22048c94fb-dda6-48b8-9fc8-6740ee418fb9%22%7d
Pour parquer un abonnement, l’argument doit être encodé en HTTP et utilisé comme joinWebUrl
dans la propriété de ressource, comme illustré dans l’exemple suivant.
https%3A%2F%2Fteams.microsoft.com%2Fl%2Fmeetup-join%2F19%253ameeting_ZmYwZTEyYjctZjA5MS00OTkzLWJhNzEtYzFiZDVjNGE0OGFj%2540thread.v2%2F0%3Fcontext%3D%257b%2522Tid%2522%253a%2522909c6581-5130-43e9-88f3-fcb3582cde37%2522%252c%2522Oid%2522%253a%2522048c94fb-dda6-48b8-9fc8-6740ee418fb9%2522%257d
Remarque
Remplacez par {JoinWebUrl}
la valeur encodée HTTP réelle lorsque vous indiquez la ressource. La valeur JoinWebURL de la réunion est incluse dans la propriété joinWebUrl de la ressource onlineMeeting ou dans le client Teams pour une réunion.
Exemple de charge utile d’abonnement
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "communications/onlineMeetings(joinWebUrl='https%3A%2F%2Fteams.microsoft.com%2Fl%2Fmeetup-join%2F19%253ameeting_ZmYwZTEyYjctZjA5MS00OTkzLWJhNzEtYzFiZDVjNGE0OGFj%2540thread.v2%2F0%3Fcontext%3D%257b%2522Tid%2522%253a%2522909c6581-5130-43e9-88f3-fcb3582cde37%2522%252c%2522Oid%2522%253a%2522048c94fb-dda6-48b8-9fc8-6740ee418fb9%2522%257d')/meetingCallEvents",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2021-02-01T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Notifications avec des données de ressources chiffrées
{
"value": [{
"subscriptionId": "{Subscription id}",
"clientState": "{secret client state}",
"changeType": "updated",
"tenantId": "{Organization/Tenant id}",
"resource": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"subscriptionExpirationDateTime": "2022-02-28T00:00:00.0000000Z",
"resourceData": {
"@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"@odata.type": "#microsoft.graph.callevent",
"id": "{notificationId}'"
},
"organizationId": "{Organization/Tenant id}",
"encryptedContent": {
"data": "{Encrypted content}",
"dataSignature": "{Encrypted data signature}",
"dataKey": "{Encrypted data key for encrypting content}",
"encryptionCertificateId": "{User specified id of encryption certificate}",
"encryptionCertificateThumbprint": "{Encrpytion certification thumbprint}"
}
}],
"validationTokens": ["{Validation Tokens}"]
}
Pour plus d’informations sur la validation des jetons et le déchiffrement de la charge utile, consultez Configurer des notifications de modification comprenant des données de ressource.
Types de notifications d’événements
Voici les événements de réunion pris en charge :
- callStarted : événements pour le début de l’appel de réunion.
- callEnded : événements pour la fin de l’appel de réunion.
- rosterUpdated : événements pour quand un participant rejoint et quitte l’appel ou la salle d’attente.
- L’événement rosterUpdated contient une collection de modifications apportées aux participants à l’appel de réunion dans participants@delta. Cette collection illustre les modifications apportées aux participants de l’utilisateur dans la liste des appels de réunion. Les participants avec la propriété removedState représentent les participants qui ont quitté la collection. Pour plus d’informations sur les participants, consultez Participant .
Exemples de charge utile déchiffrée
CallStarted
{
"@odata.type":"#microsoft.graph.callevent",
"@odata.id":"communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"id":"{notificationId}'",
"eventType":"callStarted",
"eventDateTime":"2022-02-28T00:00:00.0000000Z",
}
CallEnded
{
"@odata.type":"#microsoft.graph.callevent",
"@odata.id":"communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"id":"{notificationId}",
"eventType":"callEnded",
"eventDateTime":"2022-02-28T00:00:00.0000000Z",
}
RosterUpdated : le participant rejoint la modalité d’appel ou de lobby
{
"@odata.type": "#microsoft.graph.callevent",
"@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"id": "{notificationId}",
"eventType": "rosterUpdated",
"eventDateTime": "2022-02-28T00:00:00.0000000Z",
"participants@delta": [
{
"info": {
"identity": {
"user": {
"id": "f3ce5e01-0724-43c7-ae4d-80ca18703a96",
"displayName": "A user roster update in the call",
"tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
}
}
},
"isInLobby": false,
"id": "e1018298-976a-4956-93e8-f58e43b0016c"
},
{
"info": {
"identity": {
"user": {
"id": "e8bbbe0e-6e3d-42db-9082-213abbe8ee5c",
"displayName": "User roster update in the lobby of the call",
"tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
}
}
},
"isInLobby": true,
"id": "a7cc3ddb-a469-410d-8057-44dba3b0c073"
}
]
}
RosterUpdated : le participant entre dans un état inactif (pas dans la salle d’attente ou l’appel)
{
"@odata.type": "#microsoft.graph.callevent",
"@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"id": "{notificationId}",
"eventType": "rosterUpdated",
"eventDateTime": "2022-02-28T00:00:00.0000000Z",
"participants@delta": [
{
"info": {
"identity": {
"user": {
"id": "f3ce5e01-0724-43c7-ae4d-80ca18703a96",
"displayName": "A user change within the meeting call",
"tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
}
}
},
"isInLobby": false,
"removedState": {
"reason": "Participant has entered an inactive state in the roster."
},
"id": "e1018298-976a-4956-93e8-f58e43b0016c"
}
]
}
RosterUpdated : le participant quitte l’appel
{
"@odata.type": "#microsoft.graph.callevent",
"@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
"id": "{notificationId}",
"eventType": "rosterUpdated",
"eventDateTime": "2022-02-28T00:00:00.0000000Z",
"participants@delta": [
{
"info": {
"identity": {
"user": {
"id": "e98eb11c-8385-445e-8b19-4a2f169ac5bc",
"displayName": "User that is leaving the call",
"tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
}
}
},
"isInLobby": false,
"removedState": {
"reason": "Participant has left the meeting call."
},
"id": "347040dd-aa51-4ada-8a44-510c65a3a2d3"
}
]
}
Contenu connexe
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour