Cet article a été traduit à partir de l’anglais pour votre marché. Quel est votre niveau de satisfaction par rapport à la qualité de la langue utilisée?
S’abonne à une application d’écouteur afin de recevoir des notifications de modification lorsque le type demandé de modifications se produit au niveau de la ressource spécifiée dans Microsoft Graph.
La création d’un abonnement nécessite un accès en lecture à la ressource. Par exemple, pour recevoir des notifications de modification sur les messages, votre application a besoin de l’autorisation Mail.Read.
En fonction du type de ressource et d’autorisation(délégué ou application) demandé, l’autorisation spécifiée dans le tableau suivant est la moins requise privilégiée pour appeler cette API. Pour en savoir plus, notamment sur les mesures de prudence avant de choisir des autorisations, recherchez les autorisations dans Autorisations.
callRecording communications/onlineMeetings/getAllRecordings Tous les enregistrements d’un organization.
Non prise en charge.
Non prise en charge.
OnlineMeetingRecording.Read.All
callRecording communications/onlineMeetings/{onlineMeetingId}/recordings Tous les enregistrements d’une réunion spécifique.
OnlineMeetingRecording.Read.All
Non prise en charge.
OnlineMeetingRecording.Read.All
callRecording users/{userId}/onlineMeetings/getAllRecordings Enregistrement d’appel qui devient disponible dans une réunion organisée par un utilisateur spécifique.
OnlineMeetingRecording.Read.All
Non prise en charge.
OnlineMeetingRecording.Read.All
callTranscript communications/onlineMeetings/getAllTranscripts Toutes les transcriptions d’un organization.
Non prise en charge.
Non prise en charge.
OnlineMeetingTranscript.Read.All
callTranscript communications/onlineMeetings/{onlineMeetingId}/transcripts Toutes les transcriptions d’une réunion spécifique.
OnlineMeetingTranscript.Read.All
Non prise en charge.
OnlineMeetingTranscript.Read.All
callTranscript users/{userId}/onlineMeetings/getAllTranscripts Transcription d’appel qui devient disponible dans une réunion organisée par un utilisateur spécifique.
OnlineMeetingTranscript.Read.All
Non prise en charge.
OnlineMeetingTranscript.Read.All
canal (/teams/getAllChannels : tous les canaux d'une organisation)
conversation /appCatalogs/teamsApps/{id}/installedToChats Toutes les conversations dans un organization où une application Teams particulière est installée.
chatMessage (/teams/getAllMessages--tous les messages de canal dans l’organisation)
Non pris en charge
Non pris en charge
Chat.Read.All
chatMessage (/users/{id}/chats/getAllMessages : messages de conversation pour toutes les conversations dont fait partie un utilisateur particulier)
Chat.Read, Chat.ReadWrite
Non pris en charge
Chat.Read.All, Chat.ReadWrite.All
chatMessage /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages Messages de conversation pour toutes les conversations dans un organization où une application Teams particulière est installée.
conversationMember /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers Membres de conversation pour toutes les conversations dans un organization où une application Teams particulière est installée.
Nous vous recommandons d’utiliser les autorisations décrites dans le tableau précédent. En raison de restrictions de sécurité, les abonnements Microsoft Graph ne prennent pas en charge les autorisations d’accès en écriture lorsque seules des autorisations d’accès en lecture sont nécessaires.
Les abonnements chatMessage peuvent être spécifiés pour inclure des données de ressource. S’il est spécifié pour inclure des données de ressource (ncludeResourceData défini sur true), le chiffrement est nécessaire. La création de l’abonnement échoue si un encryptionCertificate n’est pas spécifié pour ces abonnements.
Utilisez l’en-tête Prefer: include-unknown-enum-members de requête pour obtenir les valeurs suivantes dans chatMessagemessageTypeevolvable enum : systemEventMessage for /teams/{id}/channels/{id}/messages et /chats/{id}/messages resource.
Remarque
/teams/getAllMessages, /chats/getAllMessages, /me/chats/getAllMessages, /users/{id}/chats/getAllMessageset /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages sont des API limitées ; les modèles de paiement et les exigences de licence peuvent s’appliquer.
/teams/getAllMessages et /chats/getAllMessages prennent en charge à la fois les model=A modèles de paiement et model=B , /me/chats/getAllMessages, /users/{id}/chats/getAllMessageset /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages prennent uniquement model=Ben charge .
Si vous ne spécifiez pas de modèle de paiement dans votre requête, le mode d’évaluation par défaut est utilisé.
Remarque
Pour ajouter ou modifier un modèle de paiement pour une ressource abonnée d’une notification de modification, vous devez créer un abonnement aux notifications de modification avec le nouveau modèle de paiement . La mise à jour d’une notification de modification existante ne fonctionne pas.
conversationMember
Les abonnements conversationMember peuvent être spécifiés pour inclure des données de ressources. S’il est spécifié pour inclure des données de ressource (ncludeResourceData défini sur true), le chiffrement est nécessaire. La création de l’abonnement échoue si un encryptionCertificate n’est pas spécifié.
Remarque
/teams/getAllMembers, /chats/getAllMemberset /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers sont des API limitées ; les modèles de paiement et les exigences de licence peuvent s’appliquer.
/teams/getAllMemberset /chats/getAllMembers prennent en charge les model=A modèles de paiement et .model=B/appCatalogs/teamsApps/{id}/installedToChats/getAllMembers prend uniquement model=Ben charge .
Si vous ne spécifiez pas de modèle de paiement dans votre requête, le mode d’évaluation par défaut est utilisé.
Remarque
Pour ajouter ou modifier un modèle de paiement pour une ressource abonnée d’une notification de modification, vous devez créer un abonnement aux notifications de modification avec le nouveau modèle de paiement . La mise à jour d’une notification de modification existante ne fonctionne pas.
équipe, canal et conversation
Les abonnements d’équipe, de canal et de conversation peuvent être spécifiés pour inclure des données de ressources. S’il est spécifié pour inclure des données de ressource (ncludeResourceData défini sur true), le chiffrement est nécessaire. La création de l’abonnement échoue si un encryptionCertificate n’est pas spécifié.
Vous pouvez utiliser le paramètre de chaîne de requête notifyOnUserSpecificProperties lorsque vous vous abonnez à des modifications dans une conversation particulière ou au niveau de l’utilisateur. Lorsque vous définissez le paramètre de chaîne de requête notifyOnUserSpecificPropertiestrue sur lors de la création de l’abonnement, deux types de charges utiles sont envoyés à l’abonné. Un type contient des propriétés spécifiques à l’utilisateur, et l’autre est envoyé sans elles. Pour plus d’informations, consultez Obtenir des notifications de modification pour les conversations à l’aide de Microsoft Graph.
Pour ajouter ou modifier un modèle de paiement pour une ressource abonnée d’une notification de modification, vous devez créer un abonnement aux notifications de modification avec le nouveau modèle de paiement . La mise à jour d’une notification de modification existante ne fonctionne pas.
Exemple de requête
Spécifiez model le paramètre de requête dans la propriété de ressource dans le corps de la requête.
Des limitations supplémentaires s’appliquent aux abonnements sur les éléments OneDrive. Les limitations s’appliquent à la création, ainsi que de la gestion des abonnements (prise, la mise à jour et suppression d’abonnements).
Sur un OneDrive personnel, vous pouvez vous abonner au dossier racine ou à tout sous-dossier de ce lecteur. Sur OneDrive pour les entreprises, vous pouvez vous abonner uniquement au dossier racine. Les notifications de modification sont envoyées pour les types demandés de modifications sur le dossier concerné, ou n’importe quel fichier ou dossier, ou d’autres instances driveItem dans leur hiérarchie. Vous ne pouvez pas vous abonner à des instances drive ou driveItem qui ne sont pas des dossiers, tels que des fichiers individuels.
OneDrive Entreprise et SharePoint prennent en charge l’envoi de notifications d’événements de sécurité sur un driveItem. Pour vous abonner à ces événements, ajoutez l’en-tête prefer:includesecuritywebhooks à votre demande de création d’abonnement. Une fois l’abonnement créé, vous recevez des notifications lorsque les autorisations sur un élément changent. Cette fonctionnalité est applicable à SharePoint et OneDrive Entreprise, mais pas aux comptes OneDrive consommateurs.
contact, événement et message
Vous pouvez vous abonner aux modifications apportées aux ressources decontact, d’événements, ou de messages d’Outlook.
La création et la gestion (obtention, mise à jour et suppression) d’un abonnement nécessitent une étendue de lecture de la ressource. Par exemple, pour recevoir des notifications de modification sur les messages, votre application a besoin de l’autorisation Mail Read. Les notifications de modification Outlook prennent en charge les étendues d’autorisation déléguées et d’application. Notez les limitations suivantes :
L’autorisation déléguée permet de s'abonner à des articles dans des dossiers qui se trouvent uniquement dans la boîte aux lettres de l'utilisateur connecté. Par exemple, vous ne pouvez pas utiliser l’autorisation déléguée Calendars.Read pour vous abonner à des événements dans la boîte aux lettres d’un autre utilisateur.
Pour vous abonner afin de modifier les notifications de contacts, d’événements ou de messages dans Outlook dans dossierspartagés ou délégués:
Permet de s’abonner aux modifications d’éléments dans un dossier ou une boîte aux lettres de l’autorisation d’application correspondante n’importe quel utilisateur dans le client.
N’utilisez pas les autorisations de partage Outlook (Contacts.Read.Shared, Calendars.Read.Shared, Mail.Read.Shared et leurs équivalents en lecture/écriture), car elles ne prennent pas en charge l’abonnement aux notifications de modification sur les éléments des dossiers partagés ou délégués.
Dans le corps de la demande, fournissons une représentation JSON de l’objet d’abonnement.
Réponse
En cas de réussite, cette méthode renvoie le code de réponse 201 Created et un objet abonnement dans le corps de la réponse.
Pour plus d’informations sur le retour des erreurs, voir Réponses aux erreurs.
Exemple
Demande
L’exemple suivant montre une demande d’envoi d’une notification de modification lorsque l’utilisateur reçoit un nouvel e-mail.
// Code snippets are only available for the latest version. Current version is 5.x// Dependenciesusing Microsoft.Graph.Models;
var requestBody = new Subscription
{
ChangeType = "created",
NotificationUrl = "https://webhook.azurewebsites.net/api/send/myNotifyClient",
Resource = "me/mailFolders('Inbox')/messages",
ExpirationDateTime = DateTimeOffset.Parse("2016-11-20T18:23:45.9356913Z"),
ClientState = "secretClientValue",
LatestSupportedTlsVersion = "v1_2",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharpvar result = await graphClient.Subscriptions.PostAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
Subscription subscription = new Subscription();
subscription.setChangeType("created");
subscription.setNotificationUrl("https://webhook.azurewebsites.net/api/send/myNotifyClient");
subscription.setResource("me/mailFolders('Inbox')/messages");
OffsetDateTime expirationDateTime = OffsetDateTime.parse("2016-11-20T18:23:45.9356913Z");
subscription.setExpirationDateTime(expirationDateTime);
subscription.setClientState("secretClientValue");
subscription.setLatestSupportedTlsVersion("v1_2");
Subscription result = graphClient.subscriptions().post(subscription);
# Code snippets are only available for the latest version. Current version is 1.xfrom msgraph import GraphServiceClient
from msgraph.generated.models.subscription import Subscription
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = Subscription(
change_type = "created",
notification_url = "https://webhook.azurewebsites.net/api/send/myNotifyClient",
resource = "me/mailFolders('Inbox')/messages",
expiration_date_time = "2016-11-20T18:23:45.9356913Z",
client_state = "secretClientValue",
latest_supported_tls_version = "v1_2",
)
result = await graph_client.subscriptions.post(request_body)
Dans le corps de la demande, fournissez une représentation JSON de l’objet abonnement.
Les champs clientState et latestSupportedTlsVersion sont facultatifs.
Comportement de l’abonnement en double
Les abonnements en double ne sont pas autorisés. Lorsqu’une demande d’abonnement contient les mêmes valeurs pour changeType et resource qu’un abonnement existant, la requête échoue avec un code 409 Conflictd’erreur HTTP et le message Subscription Id <> already exists for the requested combinationd’erreur .
Exemples de ressources
Les valeurs valides pour la propriété de ressource de l’abonnement sont les suivantes :
Remarque : les chemins d’accès commençant par me peuvent également être utilisés avec users/{id} au lieu de me pour cibler un utilisateur spécifique au lieu de l’utilisateur actuel.
Réponse
L’exemple suivant illustre la réponse.
Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.
Validation du point de terminaison de notification
L’abonnement de point de terminaison de notification (spécifié dans la propriéténotificationUrl) doit être capable de répondre à une demande de validation comme décrit dans Configurer les notifications pour les modifications dans les données utilisateur. Si la validation échoue, la demande pour créer l’abonnement renvoie une erreur 400 de Requête incorrecte.
Rejoignez la série de rencontres pour créer des solutions d’IA évolutives basées sur des cas d’utilisation réels avec d’autres développeurs et experts.