Partager via


Exporter du contenu avec les API d’exportation Microsoft Teams

Les API d’exportation Teams vous permettent d’exporter des messages 1:1, des conversations de groupe, des conversations de réunion et des messages de canal à partir de Microsoft Teams. Si votre organization doit exporter des messages Microsoft Teams, vous pouvez les extraire à l’aide des API d’exportation Teams. Message de conversation représente un message de conversation individuel au sein d’un canal ou d’une conversation. Le message de conversation peut être un message de conversation racine ou faire partie d’un fil de réponse défini par la propriété replyToId dans le message de conversation.

Voici quelques exemples sur la façon dont vous pouvez utiliser ces API d’exportation :

  • Exemple 1 : Si vous avez activé Microsoft Teams dans votre organization et que vous souhaitez exporter tous les messages Microsoft Teams à ce jour par programmation en passant la plage de dates pour un utilisateur ou une équipe donné.

  • Exemple 2 : Si vous souhaitez exporter par programmation tous les messages d’utilisateur ou d’équipe quotidiennement en fournissant une plage de dates. Les API d’exportation peuvent récupérer tous les messages créés ou mis à jour au cours de la plage de dates donnée.

  • Exemple 3 : Si vous souhaitez exporter par programmation les liens vers les enregistrements de réunion Teams pour un organisateur de réunion donné, puis télécharger les enregistrements réels.

  • Exemple 4 : Si vous souhaitez exporter par programmation les liens vers les transcriptions de réunion Teams pour un organisateur de réunion donné, puis télécharger les transcriptions réelles.

Qu’est-ce qui est pris en charge par les API d’exportation Teams ?

  • Exportation en bloc du message Teams : Les API d’exportation Teams prennent en charge jusqu’à 200 RPS par application par locataire et 600 RPS pour une application. Avec ces limites, vous devriez être en mesure d’exporter en bloc des messages Teams.

  • Contexte de l’application : pour appeler Microsoft Graph, votre application doit acquérir un jeton d’accès à partir du Plateforme d'identités Microsoft. Le jeton d’accès contient des informations sur votre application et les autorisations dont elle dispose pour les ressources et les API disponibles via Microsoft Graph. Pour obtenir un jeton d’accès, votre application doit être inscrite auprès du Plateforme d'identités Microsoft et être autorisée par un utilisateur ou un administrateur à accéder aux ressources Microsoft Graph dont elle a besoin.

    Si vous êtes déjà familiarisé avec l’intégration d’une application à l’Plateforme d'identités Microsoft pour obtenir des jetons, consultez la section Étapes suivantes pour obtenir des informations et des exemples spécifiques à Microsoft Graph.

  • Environnement hybride : Les API d’exportation prennent en charge les messages envoyés par les utilisateurs approvisionnés sur un environnement hybride (Exchange local et Teams). Tous les messages envoyés par les utilisateurs configurés pour un environnement hybride sont accessibles à l’aide des API d’exportation.

  • Messages supprimés par l’utilisateur : Les messages supprimés par les utilisateurs du client Teams sont accessibles à l’aide des API d’exportation jusqu’à 21 jours à compter de la suppression.

  • Pièces jointes de message : Les API d’exportation incluent les liens vers les pièces jointes qui sont envoyées dans le cadre des messages. À l’aide des API d’exportation, vous pouvez récupérer les fichiers joints dans les messages.

  • Réactions: Les API d’exportation prennent en charge les réactions initiées par un utilisateur sur un message Teams. Les réactions actuellement prises en charge sont cœur, colère, like, triste, surpris, et rire. En plus des réactions, l’API d’exportation prend également en charge l’historique des modifications des réactions, qui inclut les modifications et les mises à jour apportées à une réaction sur un message.

  • Messages de canal partagés : Les API d’exportation prennent en charge la capture de messages à partir d’un canal partagé.

  • Équipes supprimées : L’API d’exportation prend en charge la capture des messages à partir de teams supprimés et de canaux standard, privés et partagés supprimés.

  • Utilisateurs supprimés : l’API d’exportation prend en charge la capture des messages pour les utilisateurs supprimés jusqu’à 30 jours à compter de la suppression de l’utilisateur. Pour trouver la liste des utilisateurs supprimés, consultez Éléments supprimés.

  • Propriétés du message de conversation : Reportez-vous à la liste complète des propriétés prises en charge par les API d’exportation Teams.

  • Messages de contrôle : L’API d’exportation prend en charge la capture des messages de contrôle en plus des messages générés par l’utilisateur. Les messages de contrôle sont des messages générés par le système qui s’affichent sur le client Teams et contiennent des informations importantes telles que « L’utilisateur A a ajouté l’utilisateur B à la conversation et a partagé tout l’historique de conversation » avec l’horodatage. Les messages système permettent à l’appelant d’avoir des insights sur les événements qui se sont produits dans une équipe, un canal ou une conversation. Reportez-vous à la liste des messages de contrôle actuellement pris en charge par l’API d’exportation.

Remarque

Les messages de contrôle liés aux réunions ne sont actuellement pas pris en charge par l’API d’exportation.

Qu’est-ce qui n’est pas pris en charge par les API d’exportation Teams ?

  • Teams Copilot Interactions & Microsoft 365 Chat : l’API d’exportation ne prend pas en charge les messages d’interaction de l’utilisateur vers Copilot et les messages de conversation Microsoft 365 envoyés par le bot.

Comment accéder aux API d’exportation Teams

  • L’exemple 1 est une requête simple permettant de récupérer tous les messages d’un utilisateur ou d’une équipe sans filtre :

    GET https://graph.microsoft.com/v1.0/users/{id}/chats/getAllMessages
    
    GET https://graph.microsoft.com/v1.0/teams/{id}/channels/getAllMessages
    
  • L’exemple 2 est un exemple de requête pour récupérer tous les messages d’un utilisateur ou d’une équipe en spécifiant des filtres de date et d’heure et les 50 premiers messages :

    GET https://graph.microsoft.com/v1.0/users/{id}/chats/getAllMessages?$top=50&$filter=lastModifiedDateTime gt 2020-06-04T18:03:11.591Z and lastModifiedDateTime lt 2020-06-05T21:00:09.413Z
    
    GET https://graph.microsoft.com/v1.0/teams/{id}/channels/getAllMessages?$top=50&$filter=lastModifiedDateTime gt 2020-06-04T18:03:11.591Z and lastModifiedDateTime lt 2020-06-05T21:00:09.413Z
    
  • L’exemple 3 est un exemple de requête pour récupérer les liens vers tous les enregistrements de réunions Teams disponibles d’un utilisateur. Le filtrage de plage de dates est pris en charge. Le filtre TOP n est pris en charge comme pour les messages de conversation :

    GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllRecordings?$filter=MeetingOrganizer/User/Id eq ‘{id}’
    
    GET  https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllRecordings(meetingOrganizerUserId='{userId}',startDateTime={startDateTime},endDateTime={endDateTime})
    
  • L’exemple 4 est un exemple de requête pour récupérer les liens vers toutes les transcriptions de réunions Teams disponibles d’un utilisateur. Le filtrage de plage de dates est pris en charge. Le filtre TOP n est pris en charge comme pour les messages de conversation :

    GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizer/User/Id eq ‘{id}’
    
    GET https://graph.microsoft.com/v1.0/users/{id}/onlineMeetings/getAllTranscripts(meetingOrganizerUserId='{userId}',startDateTime={startDateTime},endDateTime={endDateTime})
    

Remarque

L’API retourne la réponse avec le lien de page suivante en cas de résultats multiples. Pour obtenir le jeu de résultats suivant, appelez simplement GET sur l’URL à partir de @odata.nextlink. Si @odata.nextlink n’est pas présent ou null, tous les messages sont récupérés.

Remarque

Il n’est pas garanti que l’ordre des messages dans la réponse soit trié par dateheure, comme createdDateTime ou lastModifiedDateTime.

Prérequis pour accéder aux API d’exportation Teams

  • Les API Microsoft Teams dans Microsoft Graph qui accèdent à des données sensibles sont considérées comme des API protégées. Vous pouvez appeler ces API tant que les conditions d’accès sans utilisateur sont remplies.

  • Les autorisations d’application sont utilisées par les applications qui s’exécutent sans utilisateur connecté ; les autorisations d’application ne peuvent être approuvées que par un administrateur. Les autorisations suivantes sont nécessaires :

    • Chat.Read.All : permet d’accéder à tous les messages de conversation 1:1, de conversation de groupe et de conversation de réunion

    • ChannelMessage.Read.All : active l’accès à tous les messages de canal

    • User.Read.All : permet d’accéder à la liste des utilisateurs d’un locataire

    • OnlineMeetingTranscript.Read.All : permet d’accéder aux transcriptions pour toutes les réunions Teams planifiées 1 :n

    • OnlineMeetingRecording.Read.All : permet d’accéder aux enregistrements pour toutes les réunions Teams planifiées 1 :n

Conditions de licence pour les API d’exportation Teams

L’API d’exportation prend en charge les scénarios de sécurité et de conformité (S+C) et d’utilisation générale via un paramètre de requête de modèle. Les scénarios S+C (modèle A) incluent une capacité amorçage et nécessitent un abonnement E5 et les scénarios d’utilisation générale (modèle B) sont disponibles pour tous les abonnements et sont consommés uniquement. Pour plus d’informations sur la capacité amorçage et les frais de consommation, consultez Conditions de licence et de paiement pour les API Microsoft Graph Teams.

Pour les API bêta, il n’existe actuellement aucune application de licence ou d’utilisation du modèle A ou du modèle B. Toutefois, cela est susceptible de changer à l’avenir.

Scénarios S+C/Model A

Limités aux applications exécutant des fonctions de sécurité et/ou de conformité, les utilisateurs doivent disposer de licences E5 spécifiques pour utiliser cette fonctionnalité et recevoir une capacité de départ. La capacité amorçage est par utilisateur, calculée par mois et agrégée au niveau du locataire. Pour une utilisation au-delà de la capacité amorçage, les propriétaires d’applications sont facturés pour la consommation d’API. Le modèle A peut uniquement accéder aux messages des utilisateurs disposant d’une licence E5 affectée.

Nom du partenaire Solution de partenaire
logo de smarsh Archivage et conformité microsoft Teams
Capture d’écran du logo de Proofpoint. Proofpoint Content Capture pour Microsoft Teams

Scénarios d’utilisation générale/modèle B

Disponible pour tous les scénarios non liés à S+C, il n’y a pas de licence requise ou de capacité amorçage. Lorsque les compteurs de consommation deviennent disponibles, les propriétaires d’applications sont facturés pour tous les appels d’API mensuels.

Les partenaires suivants sont certifiés. Votre entreprise peut choisir de travailler avec n’importe quelle combinaison de ces partenaires au sein de votre entreprise.

Nom du partenaire Solution de partenaire
logo de rubrik Sauvegarde et récupération Microsoft Teams
logo de veeam Sauvegarde et récupération Microsoft Teams

Étapes suivantes

Si vous êtes un fournisseur qui cherche à rejoindre le programme de certification, remplissez ce formulaire à l’étape suivante. Si vous devez fournir plus de contexte et de détails, envoyez un e-mail à l’équipe de l’écosystème MS Teams (TeamsCategoryPartner@microsoft.com).

Mode d’évaluation (par défaut)

Aucune déclaration de modèle n’autorise l’accès aux API avec une utilisation limitée pour chaque application demandant à des fins d’évaluation.

Représentation JSON

  1. L’exemple suivant est une représentation JSON de la ressource de conversation :

    Espace de noms : microsoft.graph

    {
     "id": "string (identifier)",
     "replyToId": "string (identifier)",
     "from": {"@odata.type": "microsoft.graph.identitySet"},
     "etag": "string",
     "messageType": "string",
     "createdDateTime": "string (timestamp)",
     "lastModifiedDateTime": "string (timestamp)",
     "deletedDateTime": "string (timestamp)",
     "subject": "string",
     "from": {
                 "application": null,
                 "device": null,
                 "conversation": null,
                 "user": {
    
                     "id": \[{"@odata.type": "microsoft.graph.user"}\],
                     "displayName": "User Name",
    
                     "userIdentityType": "aadUser"                }
             },
     "body": {"@odata.type": "microsoft.graph.itemBody"},
     "summary": "string",
    
     "chatId": \[{"@odata.type": "microsoft.graph.chat"}\]
    
     "attachments": \[{"@odata.type": "microsoft.graph.chatMessageAttachment"}\],
     "mentions": \[{"@odata.type": "microsoft.graph.chatMessageMention"}\],
     "importance": "string",
     "locale": "string",
     }
    

    Remarque

    Pour plus d’informations sur la ressource chatMessage, consultez l’article type de ressource chatMessage .

  2. L’exemple suivant est une représentation JSON de la ressource d’enregistrement :

    Espace de noms : microsoft.graph

    {
     "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(meetingRecording)", 
     "@odata.count": 2, 
     "@odata.nextLink": "https://graph.microsoft.com/v1.0/users('{userId}')/onlineMeetings/getAllRecordings?$filter=MeetingOrganizer%2fUser%2fId+eq+%27{userId}%27&$skiptoken=MSMjMCMjTkNaYVNIQjVVbXRPYWxaV1dscGFWVGg1V2pOb1IxUXpRWGxrUm1oTFVrWmtTV1ZyYkhwUlZVWm9UMWR3VEdWWGRFTlJWVVpDVVZFOVBRPT0%3d", 
     "value":
       [ 
         { 
          "@odata.type": "#microsoft.graph.meetingRecording", 
          "id": "6263af16-b660-41d0-a17b-83fbd15a39c7", 
          "meetingId": "MSoxMjczYTAxNi0yMDFkRLTmOTUtODA5My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1BBXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy", 
          "meetingOrganizerId": "{userId}", 
          "createdDateTime": "2022-08-03T20:43:36.2573447Z", 
          "recordingContentUrl":    "https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy/recordings/MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh/content" 
         }, 
         { 
          "@odata.type": "#microsoft.graph.meetingRecording", 
          "id": "{recordingId}", 
          "meetingId": "{meetingId}", 
          "meetingOrganizerId": "{userId}", 
          "createdDateTime": "2022-08-03T20:44:11.2635254Z", 
          "recordingContentUrl": " https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/{meetingId}/recordings/{recordingId}/content" 
          },
        ] 
       }
    

    Où :

    • <id> représente un enregistrement unique.

    • <meetingId> représente un identificateur de réunion ou d’appel.

    • <meetingOrganizer/user/id> représente l’organisateur de la réunion.

    • <createdDateTime> indique l’heure de début de la réunion.

    • <recordingContentUrl> value indique l’URL du contenu de l’enregistrement.

    • Les enregistrements sont au format MP4.

    • La taille moyenne du contenu d’enregistrement lui-même est d’environ 350 Mo sur disque, selon les moyennes que nous constatons pour les réunions qui sont comprises entre 30 et 60 minutes.

    • Il n’est pas garanti que les résultats soient triés par createdDateTime. Toutefois, dans le cas où plusieurs enregistrements sont présents pour une seule réunion, ils partagent la même meetingId valeur. En outre, les entrées des enregistrements multiples sont correctement séquencées pour la réunion en question.

    • Les résultats sont assurés d’être présents uniquement une fois que les enregistrements de réunion associés sont disponibles. En d’autres termes, aucune interrogation supplémentaire pour la disponibilité n’est requise par l’appelant.

    • La pagination dans les résultats sera prise en charge selon les modèles actuels dans l’API d’exportation Teams. La pagination sera prise en charge via la présence d’une @oData.nextLink propriété dans la réponse. La propriété nextLink contient une skipToken valeur, comme indiqué ci-dessous. Si aucun n’est skipToken présent, cela signifie qu’il n’y a plus de résultats à récupérer dans le lot actuel :

      Demande Réponse @nextLink Commentaires
      /getAllRecordings Nombre : 10 ?skipToken=ABC Requête initiale sans skipToken
      /getAllRecordings?skipToken=ABC Nombre : 10 ?skipToken=DEF SkipToken retourné, demande d’obtention de la page suivante
      /getAllRecordings?skipToken=DEF Nombre : 7 Pas skipToken, plus de données disponibles
    • $top Le paramètre sera également pris en charge selon les modèles actuels dans l’API d’exportation Teams.

    • DeltaToken pour activer les scénarios de suivi et de synchronisation des modifications est pris en charge. Pour obtenir une vue d’ensemble et des exemples de requêtes delta existantes, consultez Utiliser une requête delta pour suivre les modifications apportées aux données Microsoft Graph.

    • L’API suivante peut être utilisée pour obtenir le contenu d’enregistrement réel du sélectionné userIdmeetingId et recordingId qui a été obtenu dans la réponse de l’API GETgetAllRecordings. Elle retourne le contenu de l’enregistrement :

    GET users('{userId}')/onlineMeetings('{meetingId}')/recordings('{recordingId}')/content 
    
  3. L’exemple suivant est une représentation JSON de la ressource de transcription :

    Espace de noms : microsoft.graph

    {
      "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(callTranscript)",  
      "@odata.count": 2, 
      "@odata.nextLink": "https://graph.microsoft.com/v1.0/users('{userId}')/onlineMeetings/getAllTranscripts?$filter=MeetingOrganizer%2fUser%2fId+eq+%27{userId}%27&$skiptoken=MSMjMCMjTkNaYVNIQjVVbXRPYWxaV1dscGFWVGg1V2pOb1IxUXpRWGxrUm1oTFVrWmtTV1ZyYkhwUlZVWm9UMWR3VEdWWGRFTlJWVVpDVVZFOVBRPT0%3d",  
      "value":
        [ 
          { 
           "@odata.type": "#microsoft.graph.callTranscript", 
           "id": "MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh", 
           "meetingId": "MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy", 
           "meetingOrganizerId": "{userId}", 
           "transcriptContentUrl": "https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/MSoxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWIqMCoqMTk6bWVldGluZ19aR1F3WTJZNE9XTXROekppWlMwME1XWTRMVGc0TWpBdE1ERXdOV1kzWlRsak9UTXlAdGhyZWFkLnYy/transcripts/MSMjMCMjMGFjNmUwZTgtYmZjYy00NDQxLTk2MGYtZjllNjVhNjI0NzBh/content", 
          "createdDateTime": "2022-08-03T20:43:36.6248355Z" 
          }, 
          { 
           "@odata.type": "#microsoft.graph.callTranscript", 
           "id": "{transcriptId}", 
           "meetingId": "{meetingId}", 
           "meetingOrganizerId": "{userId}", 
           "transcriptContentUrl": "https://graph.microsoft.com/v1.0/users/{userId}/onlineMeetings/{meetingId}/transcripts/{transcriptId}/content",   
           },
         ] 
        }
    

    Où :

    • <id> représente un enregistrement unique.

    • <meetingId> représente un identificateur de réunion ou d’appel.

    • <meetingOrganizer/user/id> représente l’organisateur de la réunion.

    • <createdDateTime> indique l’heure de début de la réunion.

    • <transcriptContentUrl> value indique l’URL du contenu de la transcription.

    • Le contenu de la transcription, par défaut, sera au format VTT. Toutefois, à l’aide d’une valeur d’en-tête Accept de application/vnd.openxmlformats-officedocument.wordprocessingml.document, le format DOCX peut également être obtenu.

    • La taille moyenne du contenu de la transcription proprement dite au format JSON/VTT est d’environ 300 Ko, selon les moyennes que nous constatons pour les réunions comprises entre 30 et 60 minutes.

    • Il n’est pas garanti que les résultats soient triés par createdDateTime. Toutefois, dans le cas où plusieurs enregistrements sont présents pour une seule réunion, ils partagent la même meetingId valeur. En outre, les entrées des enregistrements multiples seront correctement séquencées pour la réunion en question.

    • Les résultats sont assurés d’être présents uniquement une fois que les enregistrements de réunion associés sont disponibles. En d’autres termes, aucune interrogation supplémentaire pour la disponibilité n’est requise par l’appelant.

    • La pagination dans les résultats sera prise en charge selon les modèles actuels dans l’API d’exportation Teams. La pagination sera prise en charge via la présence d’une @oData.nextLink propriété dans la réponse. La nextLink propriété contient une skipToken valeur, comme indiqué ci-dessous. Si aucun n’est skipToken présent, cela signifie qu’il n’y a plus de résultats à récupérer dans le lot actuel :

      Demande Réponse @nextLink Commentaires
      /getAllTranscripts Nombre : 10 ?skipToken=ABC Requête initiale sans skipToken
      /getAllTranscripts?skipToken=ABC Nombre : 10 ?skipToken=DEF SkipToken retourné, demande d’obtention de la page suivante
      /getAllTranscripts?skipToken=DEF Nombre : 7 Pas skipToken, plus de données disponibles
    • $top Le paramètre sera également pris en charge selon les modèles actuels dans l’API d’exportation Teams.

    • DeltaToken pour activer les scénarios de suivi et de synchronisation des modifications est pris en charge. Pour obtenir une vue d’ensemble et des exemples de requêtes delta existantes, consultez Utiliser une requête delta pour suivre les modifications apportées aux données Microsoft Graph.

    • L’API suivante peut être utilisée pour obtenir le contenu de transcription réel des userId, meetingId et transcriptId sélectionnés qui ont été obtenus dans la réponse de l’API GET getAllTranscripts. Elle retourne le contenu de l’enregistrement.

    GET users('{userId}')/onlineMeetings('{meetingId}')/transcripts('{transcriptId}')/content
    

Pour plus d’informations, consultez Utiliser les API Graph pour extraire la transcription.

Exporter des filtres d’API

L’API d’exportation hébergée sur le service Graph Teams obtient tous les messages utilisateur de la boîte aux lettres utilisateur Substrate à l’aide users/{userId}/chats/getAllMessagesde . L’API d’exportation récupère les messages envoyés et reçus pour un utilisateur, ce qui entraîne l’exportation de messages en double lors de l’appel de l’API pour tous les utilisateurs du fil de conversation.

L’API d’exportation a des paramètres de filtre qui permettent d’optimiser les messages retournés pour un thread de conversation. L’API GET prend en charge de nouveaux paramètres de filtre qui permettent d’extraire des messages en fonction des messages d’événement utilisateur, bot, application et système envoyés. Le paramètre filter prend en charge les messages envoyés par les éléments suivants :

  • utilisateurs (plusieurs ID d’utilisateur pris en charge dans la même demande)

  • applications (bots, connecteurs, etc.)

  • utilisateurs anonymes

  • utilisateurs fédérés (utilisateurs d’accès externe)

  • messages d’événement système (messages de contrôle)

Ces paramètres font partie du de la requête $filter. Si aucun de ces paramètres n’est présent dans la requête, les messages de tous les utilisateurs présents dans les conversations utilisateur spécifiées sont retournés.

Les scénarios de filtrage pris en charge sont les suivants :

$filter=from/application/applicationIdentityType eq '<appType>' (bots/tenantBots/connectors, etc.)  
  
$filter=from/user/id eq '<oid>' (any number of id filters)  
  
$filter=from/user/userIdentityType eq 'anonymousGuest'  
  
$filter=from/user/userIdentityType eq 'federatedUser' (guest/external)  
  
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/id eq '<oid>' (sent by app or userid)  
  
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/userIdentityType eq 'anonymousGuest' (sent by app or anonymous)  

$filter=from/application/applicationIdentityType eq '<appType>' or from/user/userIdentityType eq 'federatedUser' (sent by app or federated)  
  
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/userIdentityType eq 'anonymousGuest' or from/user/userIdentityType eq 'federatedUser' (sent by app, anonymous or federated)  
  
$filter=from/user/id eq '<oid>' or from/user/userIdentityType eq 'anonymousGuest' (sent by any number of userid or anonymous)  
  
$filter=from/user/id eq '<oid>' or from/user/userIdentityType eq 'federatedUser' (sent by any number of userid or federated)  

$filter=from/application/applicationIdentityType eq '<appType>' or from/user/id eq '<oid>' or from/user/userIdentityType eq 'anonymousGuest' or from/user/userIdentityType eq 'federatedUser' (sent by any number of userid or federated or anonymous)
 
$filter=from/application/applicationIdentityType eq '<appType>' or from/user/id eq '<oid>' or from/user/userIdentityType eq 'anonymousGuest' or from/user/userIdentityType eq 'federatedUser' (sent by any number of userid or federated or anonymous) or messsageType eq 'systemEventMessage'

(<any of the previous filters>) and (lastModifiedDateTime+gt+<date>+and+lastModifiedDateTime+lt+<date>)  
  • La requête retourne les messages envoyés par l’utilisateur spécifié, le cas from/user/id eq ‘{oid}’ échéant.

  • La requête retourne les messages envoyés par les utilisateurs fédérés qui font partie des conversations utilisateur, le cas échéant from/user/userIdentityType eq ‘federatedUser’ .

  • la requête retourne les messages envoyés par le type d’application spécifié, le from/application/applicationIdenitytyType eq '{appType}' cas échéant.

  • la requête retourne les messages envoyés par le système, le cas échéant messageType eq 'systemEventMessage'

Ces paramètres peuvent être combinés entre eux à l’aide des opérateurs OR ainsi qu’en les combinant avec le lastModifiedDateTime$filter paramètre .