Partager via


Utilisation des API de messagerie Microsoft Teams dans Microsoft Graph

Microsoft Graph fournit un ensemble complet d’API Microsoft Teams qui vous permettent d’effectuer des opérations sur les messages Teams. Cet article décrit les principaux éléments de schéma d’API Teams et fournit une vue d’ensemble des API à utiliser en fonction de scénarios généraux. Pour plus d’informations sur les API Teams dans Microsoft Graph, consultez Utiliser microsoft API Graph pour travailler avec Teams.

schéma chatMessage

Le type de ressource chatMessage représente les messages dans les conversations et les canaux Teams. Cette section décrit les éléments du schéma chatMessage .

Note: Les exemples de cette section montrent uniquement les éléments de schéma appropriés et non la charge utile du message entier.

pièces jointes

Le type de ressource chatMessageAttachment représente les entités qui peuvent être référencées à partir d’un chatMessage. Ces entités incluent des fichiers, des onglets, des cartes, des réunions ou d’autres messages. Les éléments eux-mêmes peuvent se trouver ailleurs. Par exemple, les fichiers peuvent être stockés dans SharePoint. Les sections suivantes décrivent les types possibles de pièces jointes sur un objet chatMessage .

carte pièce jointe

Les cartes représentent des éléments visuels soutenus par un schéma prédéfini. Teams prend en charge les cartes définies par Bot Framework en plus des types de carte suivants :

  • Extrait de code ou espace réservé : définissez contentType surapplication/vnd.microsoft.card.codesnippet
  • Carte d’annonce : définissez contentType surapplication/vnd.microsoft.card.announcement
  • carte du composant Microsoft Loop : définissez contentType surapplication/vnd.microsoft.card.fluidEmbedCard

Pour les cartes, la propriété contentType est définie sur le type de carte et la propriété content contient le json sérialisé pour le carte.

Note: Les aspects de cartes tels que les images peuvent faire référence à des ressources externes ou hébergées par Teams en tant que chatMessageHostedContent.

L’exemple suivant montre le schéma d’une pièce jointe carte adaptative. Cette carte contient des images hébergées par Teams.

    "attachments": [
        {
            "id": "74d20c7f34aa4a7fb74e2b30004247c5",
            "contentType": "application/vnd.microsoft.card.adaptive",
            "contentUrl": null,
            "content": "{  \"type\": \"AdaptiveCard\",  \"body\": [    {      \"items\": [        {          \"columns\": [            {              \"width\": \"auto\",              \"items\": [                {                  \"size\": \"medium\",                  \"url\": \"https://graph.microsoft.com/beta/teams/68a3e365-f7d9-4a56-b499-24332a9cc572/channels/19:0b50940236084d258c97b21bd01917b0@thread.skype/messages/1596694346004/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1hcGkuYXNtLnNreXBlLmNvbS92MS9vYmplY3RzLzAtd3VzLWQyLTUxZDYxNGE5MDQ5ZTU4MjFlMTRmMGI2NmExNmVlNzhlL3ZpZXdzL2ltZ28=/$value\",                  \"height\": \"auto\",                  \"type\": \"Image\"                },                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"SHADES\",                  \"weight\": \"bolder\",                  \"type\": \"TextBlock\"                }              ],              \"type\": \"Column\"            },            {              \"width\": \"stretch\",              \"items\": [                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"08/31/2019 19:30:00\",                  \"type\": \"TextBlock\"                },                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"Final\",                  \"spacing\": \"None\",                  \"type\": \"TextBlock\"                },                {                  \"horizontalAlignment\": \"center\",                  \"size\": \"extraLarge\",                  \"text\": \"40 - 7\",                  \"type\": \"TextBlock\"                }              ],              \"spacing\": \"Medium\",              \"separator\": true,              \"type\": \"Column\"            },            {              \"width\": \"auto\",              \"items\": [                {                  \"horizontalAlignment\": \"center\",                  \"size\": \"medium\",                  \"url\": \"https://graph.microsoft.com/beta/teams/68a3e365-f7d9-4a56-b499-24332a9cc572/channels/19:0b50940236084d258c97b21bd01917b0@thread.skype/messages/1596694346004/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1hcGkuYXNtLnNreXBlLmNvbS92MS9vYmplY3RzLzAtd3VzLWQyLWM4NjgwMjMzMzcyMzc2MmQ0MWEyY2QxMGVhMWI4ZGRhL3ZpZXdzL2ltZ28=/$value\",                  \"height\": \"auto\",                  \"type\": \"Image\"                },                {                  \"horizontalAlignment\": \"center\",                  \"text\": \"SKINS\",                  \"weight\": \"bolder\",                  \"type\": \"TextBlock\"                }              ],              \"spacing\": \"Medium\",              \"separator\": true,              \"type\": \"Column\"            }          ],          \"type\": \"ColumnSet\"        }      ],      \"type\": \"Container\"    }  ],  \"speak\": \"The Seattle Seahawks beat the Carolina Panthers 40-7\",  \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",  \"version\": \"1.2\"}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ]

Pour les messages créés par une application Teams, par exemple via des extensions de messagerie, la propriété teamsAppId contient l’ID de l’application qui a envoyé le message.

L’exemple suivant montre le schéma d’une pièce jointe carte adaptative lorsque le message a été envoyé par une application Teams.

    "attachments": [
        {
            "id": "f60e7358497741f5bdb5fa7f101fe425",
            "contentType": "application/vnd.microsoft.card.adaptive",
            "contentUrl": null,
            "content": "{  \"type\": \"AdaptiveCard\",  \"body\": [    {      \"items\": [        {          \"items\": [],          \"type\": \"Container\"        },        {          \"altText\": \"Awesome\",          \"horizontalAlignment\": \"center\",          \"url\": \"https://dev.praise.myanalytics.cdn.office.net/2024.1.31.2/assets/emojis/Trophy_Icon.png\",          \"width\": \"82px\",          \"height\": \"auto\",          \"spacing\": \"small\",          \"type\": \"Image\"        },        {          \"size\": \"large\",          \"text\": \"Awesome\",          \"weight\": \"lighter\",          \"wrap\": true,          \"spacing\": \"large\",          \"type\": \"TextBlock\"        },        {          \"size\": \"large\",          \"text\": \"Test User 1\",          \"weight\": \"bolder\",          \"wrap\": true,          \"spacing\": \"none\",          \"type\": \"TextBlock\"        },        {          \"size\": \"small\",          \"text\": \"From Test User 2\",          \"wrap\": true,          \"spacing\": \"extraLarge\",          \"type\": \"TextBlock\"        },        {          \"items\": [],          \"spacing\": \"small\",          \"type\": \"Container\"        }      ],      \"backgroundImage\": {        \"url\": \"https://dev.praise.myanalytics.cdn.office.net/2024.1.31.2/assets/themes/CornflowerGradient.png\"      },      \"type\": \"Container\"    },    {      \"columns\": [        {          \"width\": \"stretch\",          \"items\": [            {              \"text\": \"**[Review your praise history](https://teams.microsoft.com/l/entity/57e078b5-6c0e-44a1-a83f-45f75b030d4a)**\",              \"wrap\": true,              \"spacing\": \"small\",              \"type\": \"TextBlock\"            }          ],          \"type\": \"Column\"        },        {          \"width\": \"auto\",          \"items\": [            {              \"horizontalAlignment\": \"right\",              \"text\": \"**[Send praise](https://teams.microsoft.com/l/task/d832a33f-28c2-4969-8ad0-4fee681dc5b4)**\",              \"spacing\": \"small\",              \"type\": \"TextBlock\"            }          ],          \"type\": \"Column\"        }      ],      \"spacing\": \"small\",      \"type\": \"ColumnSet\"    }  ],  \"speak\": \"Praise card sent from Test User 2 to Test User 1. Awesome, with message \",  \"version\": \"1.2\"}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": "d832a33f-28c2-4969-8ad0-4fee681dc5b4"
        }
    ]

Note: Microsoft Graph prend uniquement en charge les cartes dont l’action OuvrirUrl est définie. Les autres actions telles que ShowCard ne sont pas prises en charge. Microsoft Graph autorise la lecture des messages publiés par des bots qui comportent d’autres actions.

L’exemple suivant montre le schéma d’un composant Loop sous la forme de deux pièces jointes.

    "attachments": [
        {
            "id": "b21e256a-8581-45cf-ae05-8bb998360bcc",
            "contentType": "application/vnd.microsoft.card.fluidEmbedCard",
            "contentUrl": null,
            "content": "{\r\n  \"componentUrl\": \"https://teamsgraph-my.sharepoint.com/:fl:/g/personal/sumanac_teamsgraph_onmicrosoft_com/EQnofOQM0MpOoDaRIvw-pS8Bfsj_WDFuanBBXnjDAD-w3g?nav=cz0lMkZwZXJzb25hbCUyRnN1bWFuYWNfdGVhbXNncmFwaF9vbm1pY3Jvc29mdF9jb20mZD1iIWVUcmxYX19jN2t5eW9GSFhJdG8yTDI4bmtnV2EtOXhEa244SVBOdGZFYnlxandPblkwdE9TcFVldkh6dWtBV1ImZj0wMUU2TzQ0WFlKNUI2T0lER1FaSkhLQU5VUkVMNkQ1SkpQJmM9JTJGJmZsdWlkPTEmYT1UZWFtcyZwPSU0MGZsdWlkeCUyRmxvb3AtcGFnZS1jb250YWluZXI%3D\",\r\n  \"sourceType\": \"Compose\"\r\n}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": "FluidEmbedCard"
        },
        {
            "id": "placeholderCard",
            "contentType": "application/vnd.microsoft.card.codesnippet",
            "contentUrl": null,
            "content": "{}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": "FLUID_PLACEHOLDER_CARD"
        }
    ],

pièce jointe

Lorsqu’un objet pièce jointe fait référence à un fichier, il contient des informations sur le fichier, y compris le lien permettant d’ouvrir le fichier. Le fichier lui-même se trouve dans un magasin accessible comme SharePoint. Lorsqu’un chatMessage a une pièce jointe de type fichier, la valeur de la propriété contentType sur la ressource pièce jointe est définie sur reference, et la propriété contentUrl contient l’URL du fichier.

Note: L’URL SharePoint est le lien qui ouvre le fichier ; il ne s’agit pas de l’URL Microsoft Graph. Toutefois, les appelants peuvent utiliser l’API des éléments partagés d’accès pour obtenir des informations sur le contenu du fichier.

L’exemple suivant montre le schéma d’une pièce jointe.

    "attachments": [
        {
            "id": "924D1F74-E0D2-4927-8A67-15ECEF455527",
            "contentType": "reference",
            "contentUrl": "https://testing.sharepoint.com/sites/Samples/Shared Documents/General/color.png",
            "content": null,
            "name": "color.png",
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ],

pièce jointe du message transféré

Un objet pièce jointe contient un message transféré qui a été transféré à une conversation. Pour les pièces jointes de message, la propriété id contient l’ID du message transféré. La propriété content contient plus de détails sur le message ; par exemple, le contexte du message d’origine et les détails de l’expéditeur d’origine. Pour les pièces jointes de message, la propriété contentType est définie sur forwardedMessageReference.

L’exemple suivant montre le schéma d’une pièce jointe de message transféré.

    "attachments": [
        {
            "id": "1727881360458",
            "contentType": "forwardedMessageReference",
            "contentUrl": null,
            "content": "{\"originalMessageId\":\"1727881360458\",\"originalMessageContent\":\"\\n<p>hello</p>\\n\",\"originalConversationId\":\"19:97641583cf154265a237da28ebbde27a@thread.v2\",\"originalSentDateTime\":\"2024-10-02T15:02:40.458+00:00\",\"originalMessageSender\":{\"application\":null,\"device\":null,\"user\":{\"userIdentityType\":\"aadUser\",\"tenantId\":\"2432b57b-0abd-43db-aa7b-16eadd115d34\",\"id\":\"28c10244-4bad-4fda-993c-f332faef94f0\",\"displayName\":null}}}",
            "name": null,
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ],

pièce jointe à la réunion

Lorsqu’une réunion est planifiée dans un canal, un message contenant les détails de la réunion est publié dans le canal. Une pièce jointe de réunion représente cet objet et inclut les détails de la réunion. La propriété id contient l’ID de la réunion, et la propriété content inclut des détails sur l’organisateur de la réunion et l’ID Exchange de la réunion. Vous pouvez utiliser l’ID Exchange pour rechercher la réunion à l’aide des API de calendrier. La propriété contentType est définie sur meetingReference pour les pièces jointes de réunion.

L’exemple suivant montre le schéma d’une pièce jointe carte adaptative.

    "attachments": [
        {
            "id": "1628156567881",
            "contentType": "meetingReference",
            "contentUrl": null,
            "content": "{\"exchangeId\":\"AAMkAGU2NzgzNDQ3LWFkMTctNGY2MC05ZjM1LWFkOTYxZWZhYTY2MgBGAAAAAADFwPNVvpzXRqmCO5F6qAKtBwB89fWKTP8MSaPLNsJWtozvAAAAAAENAAB89fWKTP8MSaPLNsJWtozvAAFg-8IoAAA=\",\"organizerId\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\"}",
            "name": "Testing channel meeting",
            "thumbnailUrl": null
        }
    ],

pièce jointe de message

Un objet pièce jointe contient un message lorsqu’une conversation inclut une réponse à un message spécifique. Pour les pièces jointes de message, la propriété id contient l’ID du message. La propriété content contient plus de détails sur le message ; par exemple, le texte d’aperçu du message et l’expéditeur. Pour les pièces jointes de message, la propriété contentType est définie sur messageReference.

L’exemple suivant montre le schéma d’une pièce jointe de message.

    "attachments": [
        {
            "id": "1622853091207",
            "contentType": "messageReference",
            "contentUrl": null,
            "content": "{\"messageId\":\"1622853091207\",\"messagePreview\":\"Testing unread read status\",\"messageSender\":{\"application\":null,\"device\":null,\"user\":{\"userIdentityType\":\"aadUser\",\"id\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\",\"displayName\":\"Alex\"}}}",
            "name": null,
            "thumbnailUrl": null
        }
    ],

tabulation en pièce jointe

Lorsqu’un objet pièce jointe fait référence à un onglet hébergé dans le contexte actuel, la propriété contentType a tabReferencela valeur , la propriété id est définie sur l’ID de l’onglet et la propriété name est définie sur le nom de l’onglet. Ce scénario s’applique souvent lorsque des onglets sont récemment ajoutés.

L’exemple suivant montre le schéma d’une pièce jointe à onglet.

"attachments": [
        {
            "id": "tab::d64ea8d0-8b63-4f53-9bf6-806648176968",
            "contentType": "tabReference",
            "contentUrl": null,
            "content": null,
            "name": "Bing",
            "thumbnailUrl": null,
            "teamsAppId": null
        }
    ],

corps

La propriété body d’un objet chatMessage représente le corps du message. La propriété body peut faire référence à d’autres éléments du schéma, tels que des mentions ou des pièces jointes. Le contenu peut être text ou html, comme spécifié par la propriété contentType du type de ressource itemBody .

Le schéma chatMessage prend en charge les éléments non HTML suivants que Teams prend également en charge :

  • at : référence à un chatMessageMention qui représente les détails d’un utilisateur, d’une application, d’un canal, d’une équipe ou d’une balise qui est @mentioned.
  • attachment : représente la position d’une référence de pièce jointe.
  • systemEventMessage : lorsque la propriété content de la ressource itemBody est définie sur <systemEventMessage/>, le message représente un événement spécial. Pour plus d’informations, consultez Obtenir des messages système.
  • emoji : lorsque le corps du message contient un emoji, l’élément $"<emoji id="IdOfTheEmoji" alt="AlternateRepresentationOfEmoji" title="TitleOfEmoji"></emoji>" représente les propriétés d’un emoji :
    • id : ID de l’emoji.
    • alt : autre représentation de l’emoji ; par exemple, Unicode.
    • title : titre de l’emoji.
  • customemoji : lorsque le corps du message contient un emoji personnalisé, l’élément $"<customemoji id="IdOfTheCustomEmoji" alt="AlternateRepresentationOfCustomEmoji" source="HostedContentOfCustomEmoji"></customemoji>" représente les propriétés d’un customemoji :
    • id : ID de l’emoji personnalisé.
    • alt : autre représentation de l’emoji personnalisé ; par exemple, le nom de l’emoji personnalisé.
    • source : contenu hébergé de l’emoji personnalisé associé au message.
  • codeblock : lorsque le corps du message contient un bloc de code, l’élément "<codeblock class=\"Json\"><code>Hello world</code></codeblock>" représente les propriétés d’un bloc de code.

Exemple : message indiquant qu’une @mentions équipe

    "body": {
        "contentType": "html",
        "content": "<div><div><at id=\"0\">WebhookTesting</at>&nbsp;Hello team</div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "WebhookTesting",
            "mentioned": {
                "application": null,
                "device": null,
                "user": null,
                "tag": null,
                "conversation": {
                    "id": "68a3e365-f7d9-4a56-b499-24332a9cc572",
                    "displayName": "WebhookTesting",
                    "conversationIdentityType": "team"
                }
            }
        }
    ],

Exemple : Un message avec une pièce jointe

    "body": {
        "contentType": "html",
        "content": "Scheduled a meeting<attachment id=\"1628156567881\"></attachment>"
    },
    "attachments": [
        {
            "id": "1628156567881",
            "contentType": "meetingReference",
            "contentUrl": null,
            "content": "{\"exchangeId\":\"AAMkAGU2NzgzNDQ3LWFkMTctNGY2MC05ZjM1LWFkOTYxZWZhYTY2MgBGAAAAAADFwPNVvpzXRqmCO5F6qAKtBwB89fWKTP8MSaPLNsJWtozvAAAAAAENAAB89fWKTP8MSaPLNsJWtozvAAFg-8IoAAA=\",\"organizerId\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\"}",
            "name": "Testing channel meeting",
            "thumbnailUrl": null
        }
    ],

Exemple : un message avec un événement système

    "body": {
        "contentType": "html",
        "content": "<systemEventMessage/>"
    },
    "channelIdentity": {
        "teamId": "68a3e365-f7d9-4a56-b499-24332a9cc572",
        "channelId": "19:0b50940236084d258c97b21bd01917b0@thread.skype"
    },
    "attachments": [],
    "mentions": [],
    "reactions": [],
    "eventDetail": {
        "@odata.type": "#microsoft.graph.conversationMemberRoleUpdatedEventMessageDetail",
        "conversationMemberRoles": [],
        "conversationMemberUser": {
            "id": "c4aefc8e-f890-4aa6-b586-6cce899ff7f8",
            "displayName": null,
            "userIdentityType": "aadUser"
        },
        "initiator": {
            "application": null,
            "device": null,
            "user": {
                "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
                "displayName": null,
                "userIdentityType": "aadUser"
            }
        }
    }

Exemple : Un message avec un emoji

{
    "body": {
        "contentType": "html",
        "content": "<p><emoji id=\"smile\" alt=\"🙂\" title=\"Smile\"></emoji></p>"
    }
}

Exemple : Un message avec un emoji personnalisé

{
    "body": {
        "contentType": "html",
        "content": "<p><customemoji id=\"dGVzdHNjOzAtd3VzLWQyLTdiNWRkZGQ2ZGVjMDNkYzIwNTgxY2NkYTE1MmEyZTM4\" alt=\"testsc\" source=\"https://graph.microsoft.com/beta/chats/19:bcf84b15c2994a909770f7d05bc4fe16@thread.v2/messages/1706638496169/hostedContents/aWQ9LHR5cGU9MSx1cmw9aHR0cHM6Ly91cy1jYW5hcnkuYXN5bmNndy50ZWFtcy5taWNyb3NvZnQuY29tL3YxL29iamVjdHMvMC13dXMtZDItN2I1ZGRkZDZkZWMwM2RjMjA1ODFjY2RhMTUyYTJlMzgvdmlld3MvaW1ndDJfYW5pbQ==/$value\"></customemoji></p>"
    }
}

Exemple : Message avec un bloc de code

Note: Les blocs de code en surbrillance ne sont pas pris en charge lorsqu’un message contenant un bloc de code est envoyé à l’aide de microsoft API Graph.

{
    "body": {
        "contentType": "html",
        "content": "\n<codeblock class=\"\"><code>Hello world</code></codeblock>"
    }
}

Exemple : message avec un bloc de code avec une mise en surbrillance spécifique à la langue

{
    "body": {
        "contentType": "html",
        "content": "<p>&nbsp;</p>\n\n<codeblock class=\"Json\"><code>{<br> &nbsp;&nbsp; <span class=\"hljs-function\">\"body\"</span>:&nbsp;{<br> &nbsp;&nbsp; <span class=\"hljs-function\">\"contentType\"</span>:&nbsp;<span class=\"hljs-string\">\"html\"</span>,<br> &nbsp;&nbsp; <span class=\"hljs-function\">\"content\"</span>:&nbsp;<span class=\"hljs-string\">\"&lt;codeblock&gt;&lt;code&gt;Hello&nbsp;world&lt;/code&gt;&lt;/codeblock&gt;\"</span><br> &nbsp;&nbsp; }<br>}</code></codeblock>\n<p>&nbsp;</p>"
    }
}

channelIdentity

Si un chatMessage est envoyé dans un canal, la propriété channelIdentity contient des détails sur le canal. Cela inclut l’ID du canal et de l’équipe. Cette propriété est en lecture seule.

L’exemple suivant montre le schéma d’un channelIdentity dans un message.

    "channelIdentity": {
        "teamId": "68a3e365-f7d9-4a56-b499-24332a9cc572",
        "channelId": "19:0b50940236084d258c97b21bd01917b0@thread.skype"
    },

chatId

Si un chatMessage est envoyé dans une conversation, la propriété chatId contient l’ID de la conversation. Cette propriété est en lecture seule.

L’exemple suivant montre le schéma d’un chatId.

"chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",

createdDateTime

La propriété createdDateTime représente l’heure à laquelle le message a été créé sur le serveur. Ce timestamp peut être différent de l’heure à laquelle le message a été envoyé par l’appelant. Le serveur enregistre uniquement l’horodatage côté serveur. Cette propriété est en lecture seule ; Toutefois, il peut être écrit lorsque vous importez des messages à partir d’un système externe.

deletedDateTime

Si un chatMessage est supprimé, la propriété deletedDateTime contient l’heure à laquelle le message a été supprimé. Cette propriété est en lecture seule.

Note: Les messages supprimés ne sont pas toujours retournés par toutes les API. Les notifications de modification retournent toujours des notifications de message supprimé si le changeType de l’abonnement inclut deleted.

etag

La propriété etag représente la version du message. Toute modification apportée au message (y compris les réactions et les modifications) modifie la valeur etag du message. Cette propriété est en lecture seule.

eventDetail

Si elle est présente, la propriété eventDetails représente les détails d’un événement qui s’est produit dans une conversation, un canal ou une équipe . par exemple, l’ajout de nouveaux membres. Pour les messages d’événement, la propriété messageType de chatMessage est définie sur systemEventMessage. Pour plus d’informations, consultez Obtenir des messages système.

from

La propriété from représente l’expéditeur du message. Microsoft Teams prend en charge les types d’expéditeurs suivants.

  • Utilisateurs d’ID Entra : utilisateurs disposant d’un ID Entra valide. Cela inclut entra ID externe invités et utilisateursd’accès externe.

    L’exemple suivant montre la propriété from pour un message envoyé par un utilisateur d’ID Entra.

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
            "displayName": "Alex Wilber",
            "userIdentityType": "aadUser"
        }
    },
    
  • Invités anonymes : utilisateurs qui rejoignent une réunion à l’aide d’un lien de participation. Ces utilisateurs fournissent un nom d’affichage lorsqu’ils rejoignent la réunion. Ils n’ont pas d’identité persistante dans Microsoft 365.

    L’exemple suivant montre la propriété from pour un message envoyé par un invité anonyme.

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "8578568e393e4ffe8763e0b7c3da01fe",
            "displayName": "Anon (Guest)",
            "userIdentityType": "anonymousGuest"
        }
    },
    
  • Utilisateurs de compte Microsoft personnels : utilisateurs qui utilisent leur compte Microsoft personnel pour se connecter à Teams.

    L’exemple suivant montre la propriété from pour un message envoyé par un invité anonyme.

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "d78f5bc88c39f6b8",
            "displayName": "TFL 1017",
            "userIdentityType": "personalMicrosoftAccountUser"
        }
    },
    
  • Utilisateurs Skype : utilisateurs Skype (pour les consommateurs). Pour plus d’informations, consultez Interopérabilité de Teams et Skype.

    L’exemple suivant montre la propriété from pour un message envoyé par un utilisateur Skype.

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "alex1122",
            "displayName": "Alex",
            "userIdentityType": "skypeUser"
        }
    },
    
  • Utilisateurs locaux de Skype Entreprise : utilisateurs qui utilisent l’offre locale Skype Entreprise. Pour plus d’informations, consultez Teams et Skype Entreprise coexistence et interopérabilité.

    L’exemple suivant montre la propriété from pour un message envoyé par un utilisateur skype entreprise local.

    "from": {
        "application": null,
        "device": null,
        "user": {
            "id": "b0eddfe2-659b-437d-b289-cf55c8b3bb1d",
            "displayName": "Alex",
            "userIdentityType": "onPremiseAadUser"
        }
    },
    
  • Bots : bots conversationnels créés via le Microsoft Bot Framework.

    L’exemple suivant montre la propriété from pour un message envoyé par un bot.

    "from": {
        "device": null,
        "user": null,
        "application": {
            "id": "358f0194-6b0e-4dd3-af35-c24fe8a9ec87",
            "displayName": "Flow",
            "applicationIdentityType": "bot"
        }
    }
    
  • Webhooks sortants : les webhooks sortants permettent aux développeurs de créer une solution économique similaire aux bots. Pour plus d’informations, consultez Créer des webhooks sortants.

    L’exemple suivant montre la propriété from pour un message envoyé par un bot.

    "from": {
        "device": null,
        "user": null,
        "application": {
            "id": "22e50a9b-80cc-4eab-a092-ce64796d28d7",
            "displayName": "Custom bot",
            "applicationIdentityType": "outgoingWebhook"
        }
    }
    
  • Connecteurs pour les groupes Microsoft 365 : les connecteurs permettent de publier un message unidirectionnel dans Teams. Pour plus d’informations, consultez Créer des connecteurs pour Groupes Microsoft 365.

    L’exemple suivant montre la propriété from pour un message provenant d’un connecteur Office 365.

    "from": {
        "device": null,
        "user": null,
        "application": {
            "id": "4c6cfc6e-cf78-44e8-87fd-bbb0efcad6a2",
            "displayName": "Bing News",
            "applicationIdentityType": "office365Connector"
        }
    }
    
  • Email : Teams autorise l’envoi d’e-mails aux canaux. Lorsque l’utilisateur n’est pas connu, l’identité de l’expéditeur est affichée en tant qu’utilisateur de messagerie avec les détails de l’e-mail utilisé pour envoyer le message.

    L’exemple suivant montre la propriété from pour un message envoyé par un utilisateur de messagerie.

    "from": {
            "application": null,
            "device": null,
            "user": {
                "@odata.type": "#microsoft.graph.teamworkUserIdentity",
                "id": "testemailuser@outlook.com",
                "displayName": "Test User",
                "userIdentityType": "emailUser"
            }
        }
    
  • Azure Communication Services’utilisateur : si un message est envoyé par un utilisateur Azure Communication Services, les détails de l’identité de l’expéditeur sont représentés dans le champ from.

    L’exemple suivant montre la propriété from d’un envoi d’e-mail à partir d’un utilisateur Azure Communication Services.

    "from": {
        "application": null,
        "device": null,
        "user": {
            "@odata.type": "#microsoft.graph.teamworkUserIdentity",
            "id": "8:acs:a04d09ad-aaa9-4e25-90de-475594b0fb52_00000006-96d3-711c-6a0b-343a0d000eb4",
            "displayName": null,
            "userIdentityType": "azureCommunicationServicesUser"
        }
    }
    

Cette propriété est en lecture seule ; Toutefois, vous pouvez y écrire lorsque vous importez des messages à partir d’un système externe.

Note: Le nom d’affichage n’est pas toujours présent.

id

La propriété id contient un ID unique qui représente le message. Cette propriété est en lecture seule.

Note: L’ID est unique uniquement dans une étendue spécifique, telle qu’une conversation ou un canal. Différents messages entre les conversations et les canaux peuvent avoir le même ID.

importance

La propriété importance représente l’importance du message. Les valeurs possibles sont les suivantes :

  • normal
  • haut
  • urgent

L’exemple suivant montre un message dont l’importance est élevée.

"importance": "high",

lastEditedDateTime

La propriété lastEditedDateTime représente l’horodatage lorsque le message a été modifié par l’utilisateur. Cela est représenté dans l’interface utilisateur Teams avec l’indicateur Edited . Elle est définie sur null si le message n’a jamais été modifié.

lastModifiedDateTime

La propriété lastModifiedDateTime représente l’horodatage de la dernière modification du message. Cela inclut les modifications telles que les réactions. Les propriétés eTag et lastModifiedDateTime lorsqu’un message est modifié.

mentions

La propriété mentions représente les utilisateurs, les applications (bots, webhooks), les canaux, les équipes ou les balises qui sont @mentioned.

Exemple : message indiquant qu’un @mentions autre utilisateur

    "body": {
        "contentType": "html",
        "content": "<div><div><div><div><at id=\"0\">Alex</at>&nbsp;Test123</div></div></div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "Alex",
            "mentioned": {
                "application": null,
                "device": null,
                "conversation": null,
                "tag": null,
                "user": {
                    "id": "c27c1b19-3904-4822-9813-4f6bdaab2eae",
                    "displayName": "Alex",
                    "userIdentityType": "aadUser"
                }
            }
        }
    ],

Exemple : message indiquant qu’un @mentions bot

    "body": {
        "contentType": "html",
        "content": "<div><div><at id=\"0\">Power Automate</at> Learn more&nbsp;</div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "Power Automate",
            "mentioned": {
                "device": null,
                "user": null,
                "conversation": null,
                "tag": null,
                "application": {
                    "id": "358f0194-6b0e-4dd3-af35-c24fe8a9ec87",
                    "displayName": "Power Automate",
                    "applicationIdentityType": "bot"
                }
            }
        }
    ],

Exemple : message indiquant qu’une @mentions équipe

    "body": {
        "contentType": "html",
        "content": "<div><div><at id=\"0\">WebhookTesting</at>&nbsp;Hello team</div></div>"
    },
    "mentions": [
        {
            "id": 0,
            "mentionText": "WebhookTesting",
            "mentioned": {
                "application": null,
                "device": null,
                "user": null,
                "tag": null,
                "conversation": {
                    "id": "68a3e365-f7d9-4a56-b499-24332a9cc572",
                    "displayName": "WebhookTesting",
                    "conversationIdentityType": "team"
                }
            }
        }
    ],

Note:@mentions peut également apparaître à l’intérieur des cartes.

messageType

La propriété messageType représente le type de message. Les valeurs possibles sont les suivantes :

  • message : représente les messages envoyés par les utilisateurs et les applications.
  • systemEventMessage : représente les messages envoyés par Teams avec des détails sur différents événements tels que l’ajout de membres ou la suppression de canaux. Pour plus d’informations, consultez Obtenir des messages système.

Les valeurs suivantes ne sont pas actuellement utilisées :

  • dactylographie
  • chatEvent

onBehalfOf

La propriété onBehalfOf représente l’attribution de l’utilisateur pour les messages envoyés par un bot pour le compte d’un utilisateur. Pour plus d’informations, consultez Attribution d’utilisateurs pour les messages de bots.

L’exemple suivant montre un message envoyé par un bot pour le compte d’un utilisateur.

"from": {
        "device": null,
        "user": null,
        "application": {
            "id": "8a34cb8d-65dc-44e2-8375-a2261d1f2a4b",
            "displayName": "PolicyMaker",
            "applicationIdentityType": "bot"
        }
    },
    "onBehalfOf": {
        "application": null,
        "device": null,
        "user": {
            "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
            "displayName": "Alex Wilber",
            "userIdentityType": "aadUser"
        }
    },

policyViolation

Si un message enfreint les stratégies de protection contre la perte de données (DLP) définies par le locataire, un message PATCH peut être appelé avec les détails de la stratégie qui a été violée. Cela masque le message de l’interface utilisateur Teams. La propriété policyViolation représente les détails de la stratégie qui a été violée, ainsi que l’action.

L’exemple suivant montre un message qui a été bloqué en raison d’une stratégie.

    "body": {
        "contentType": "text",
        "content": ""
    },
    "policyViolation": {
        "dlpAction": "blockAccess",
        "justificationText": null,
        "userAction": "none",
        "verdictDetails": "none",
        "policyTip": null
    },

réactions

La propriété reactions représente les réactions d’autres utilisateurs sur le message, telles que les « J’aime ». Chaque élément représente des informations sur la réaction et l’utilisateur qui a réagi.

L’exemple suivant montre un message avec des réactions.

Note: Le nom d’affichage n’est pas toujours présent dans la propriété utilisateur .

{
    "reactions": [
        {
            "reactionType": "💯",
            "displayName": "Hundred points",
            "createdDateTime": "2022-01-18T23:41:57.573Z",
            "user": {
                "application": null,
                "device": null,
                "user": {
                    "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
                    "displayName": null,
                    "userIdentityType": "aadUser"
                }
            }
        }
    ]
}

L’exemple suivant montre un message avec une réaction personnalisée.

Remarque :

  • Les réactions personnalisées sont disponibles uniquement sur le point de /beta terminaison.
  • Le nom d’affichage n’est pas toujours présent pour l’utilisateur.
{
    "reactions": [
        {
            "reactionType": "custom",
            "displayName": "microsoft_teams",
            "reactionContentUrl": "https://graph.microsoft.com/beta/chats/19:bcf84b15c2994a909770f7d05bc4fe16@thread.v2/messages/1706763669648/hostedContents/aWQ9MC13dXMtZDExLTc3ZmI2NmY4MTMwMGI2OGEzYzRkOWUyNmU1YTc5ZmMyLHR5cGU9MSx1cmw9/$value",
            "createdDateTime": "2024-02-14T22:07:02.288Z",
            "user": {
                "application": null,
                "device": null,
                "user": {
                    "@odata.type": "#microsoft.graph.teamworkUserIdentity",
                    "id": "28c10244-4bad-4fda-993c-f332faef94f0",
                    "displayName": null,
                    "userIdentityType": "aadUser"
                }
            }
        }
    ]
}

replyToId

La propriété replyToId représente l’ID du message auquel un message est une réponse dans une chaîne de réponse. Cette propriété est définie uniquement pour les messages de canal. Cette propriété est en lecture seule.

Note: Pour répondre aux messages d’une conversation, une référence de message est utilisée.

sujet

La propriété subject contient l’objet du message. Cela est valide uniquement pour les messages envoyés dans un canal.

webUrl

La propriété webUrl contient une URL qui pointe vers le message dans l’interface utilisateur Teams. Cette URL ouvre le message directement dans l’interface utilisateur Teams dans un navigateur.

Choix de l’API appropriée pour votre scénario

Le choix de l’API appropriée est essentiel pour vous permettre de créer la meilleure expérience possible. L’utilisation du bon ensemble d’API vous permet également de récupérer des données sans limiter.

Les API de messagerie dans Microsoft Graph se répartissent en trois :

  • API qui mappent à l’interface utilisateur Teams. Toutes les modifications sont immédiatement visibles.
  • API qui exportent des données axées sur les utilisateurs et les équipes. Toute modification peut prendre jusqu’à 24 heures pour être disponible.
  • Modifiez les API basées sur les notifications pour recevoir une notification en temps réel.

API alignées sur l’interface utilisateur Teams

Les API qui s’alignent sur l’interface utilisateur Teams fonctionnent de la même façon que l’interface utilisateur Teams. Ces API sont conçues pour des synchronisations ponctuelles afin d’obtenir des messages dans un contexte spécifique. Ces API sont très performantes et toutes les modifications (messages envoyés, modifiés ou supprimés) sont immédiatement visibles.

Voici les API alignées sur l’interface utilisateur Teams :

En outre, les API suivantes agissent avec ces API pour servir des scénarios spécifiques, tels que la récupération d’instances spécifiques ou la modification de l’ordre de traversée.

API pour l’exportation de données à partir de Teams

Les API qui exportent des données fonctionnent généralement à une granularité plus élevée que les API alignées sur l’interface utilisateur. Ces API se concentrent sur l’extraction d’une grande quantité de données. La synchronisation des données et leur mise à disposition par le biais de ces API peut prendre un certain temps (jusqu’à 24 heures dans certains cas).

Les API suivantes appartiennent à cette catégorie :

API en temps réel

Les API en temps réel permettent à un appelant d’être averti dès qu’une modification est apportée (message envoyé, modifié, supprimé, etc.). Ces API sont adaptées aux applications en temps réel telles que le rendu de messages en dehors de l’interface utilisateur teams. En outre, ces API permettent la création d’abonnements et, par conséquent, la réception d’une grande quantité de données sans limitation. Pour plus d’informations, consultez Notifications de modification pour les channles et les conversations.