Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Microsoft Graph fornece um conjunto abrangente de APIs do Microsoft Teams que lhe permitem realizar operações em mensagens do Teams. Este artigo descreve os principais elementos de esquema da API do Teams e fornece uma descrição geral das APIs a utilizar com base em cenários de alto nível. Para obter mais detalhes sobre as APIs do Teams no Microsoft Graph, consulte Utilizar o Microsoft API do Graph para trabalhar com o Teams.
chatMessage schema (esquema chatMessage)
O tipo de recurso chatMessage representa mensagens em chats e canais do Teams. Esta secção descreve os elementos do esquema chatMessage .
Nota: Os exemplos nesta secção mostram apenas os elementos de esquema relevantes e não o payload completo da mensagem.
anexos
O tipo de recurso chatMessageAttachment representa entidades que podem ser referenciadas a partir de um chatMessage. Estas entidades incluem ficheiros, separadores, cartões, reuniões ou outras mensagens. Os próprios itens podem estar localizados noutro local. Por exemplo, os ficheiros podem ser armazenados no SharePoint. As secções seguintes descrevem os possíveis tipos de anexos num objeto chatMessage .
anexo card
Os cartões representam elementos visuais apoiados por um esquema predefinido. O Teams suporta os cartões definidos pelo Bot Framework para além dos seguintes tipos de card:
- Fragmento de código ou marcador de posição - Definir contentType como
application/vnd.microsoft.card.codesnippet - Card de Anúncios - Definir contentType definido como
application/vnd.microsoft.card.announcement - Microsoft Loop componente card - Definir contentType definido como
application/vnd.microsoft.card.fluidEmbedCard
Para cartões, a propriedade contentType está definida para o tipo de card e a propriedade content contém o json serializado para o card.
Nota: Aspetos de cartões como imagens podem referir-se a recursos externos ou recursos alojados pelo Teams como chatMessageHostedContent.
O exemplo seguinte mostra o esquema de um anexo de card adaptável. Este card tem imagens alojadas pelo 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
}
]
Para mensagens criadas por uma aplicação do Teams, por exemplo, através de extensões de mensagens, a propriedade teamsAppId contém o ID da aplicação que enviou a mensagem.
O exemplo seguinte mostra o esquema de um anexo de card adaptável quando a mensagem foi enviada por uma aplicação do 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"
}
]
Nota: O Microsoft Graph só suporta cartões com a ação OpenUrl definida. Outras ações, como ShowCard , não são suportadas. O Microsoft Graph permite que as mensagens publicadas por bots que têm outras ações sejam lidas.
O exemplo seguinte mostra o esquema de um componente Loop como dois anexos.
"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"
}
],
anexo de ficheiro
Quando um objeto de anexo se refere a um ficheiro, contém informações sobre o ficheiro, incluindo a ligação para abrir o ficheiro. O próprio ficheiro está localizado num arquivo acessível, como o SharePoint. Quando um chatMessage tem um ficheiro de tipo de anexo, o valor da propriedade contentType no recurso de anexo é definido como referencee a propriedade contentUrl contém o URL do ficheiro.
Nota: O URL do SharePoint é a ligação que abre o ficheiro; não é o URL do Microsoft Graph. No entanto, os autores de chamadas podem utilizar a API de itens partilhados de acesso para obter as informações sobre o conteúdo do ficheiro.
O exemplo seguinte mostra o esquema de um anexo de ficheiro.
"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
}
],
anexo de mensagem reencaminhada
Um objeto de anexo contém uma mensagem reencaminhada que foi reencaminhada para uma conversa. Para anexos de mensagens, a propriedade ID contém o ID da mensagem reencaminhada. A propriedade content contém mais detalhes sobre a mensagem; por exemplo, o contexto da mensagem original e o detalhe original do remetente. Para anexos de mensagens, a propriedade contentType está definida como forwardedMessageReference.
O exemplo seguinte mostra o esquema de um anexo de mensagem reencaminhado.
"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
}
],
anexo da reunião
Quando uma reunião é agendada num canal, é publicada uma mensagem com os detalhes da reunião no canal. Um anexo de reunião representa este objeto e inclui os detalhes da reunião. A propriedade ID contém o ID da reunião e a propriedade de conteúdo inclui detalhes sobre o organizador da reunião e o ID do Exchange da reunião. Pode utilizar o ID do Exchange para procurar a reunião com as APIs de calendário. A propriedade contentType está definida como meetingReference para anexos de reunião.
O exemplo seguinte mostra o esquema de um anexo de card adaptável.
"attachments": [
{
"id": "1628156567881",
"contentType": "meetingReference",
"contentUrl": null,
"content": "{\"exchangeId\":\"AAMkAGU2NzgzNDQ3LWFkMTctNGY2MC05ZjM1LWFkOTYxZWZhYTY2MgBGAAAAAADFwPNVvpzXRqmCO5F6qAKtBwB89fWKTP8MSaPLNsJWtozvAAAAAAENAAB89fWKTP8MSaPLNsJWtozvAAFg-8IoAAA=\",\"organizerId\":\"8ea0e38b-efb3-4757-924a-5f94061cf8c2\"}",
"name": "Testing channel meeting",
"thumbnailUrl": null
}
],
anexo de mensagem
Um objeto de anexo contém uma mensagem quando uma conversa inclui uma resposta a uma mensagem específica. Para anexos de mensagens, a propriedade ID contém o ID da mensagem. A propriedade content contém mais detalhes sobre a mensagem; por exemplo, o texto e o remetente da pré-visualização da mensagem. Para anexos de mensagens, a propriedade contentType está definida como messageReference.
O exemplo seguinte mostra o esquema de um anexo de mensagem.
"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
}
],
anexo do separador
Quando um objeto de anexo se refere a um separador alojado no contexto atual, a propriedade contentType é definida como tabReference, a propriedade ID é definida como o ID do separador e a propriedade name é definida como o nome do separador. Este cenário aplica-se frequentemente quando os separadores são adicionados recentemente.
O exemplo seguinte mostra o esquema de um anexo de separador.
"attachments": [
{
"id": "tab::d64ea8d0-8b63-4f53-9bf6-806648176968",
"contentType": "tabReference",
"contentUrl": null,
"content": null,
"name": "Bing",
"thumbnailUrl": null,
"teamsAppId": null
}
],
corpo
A propriedade body de um objeto chatMessage representa o corpo da mensagem. A propriedade body pode referir-se a outros elementos no esquema, como menções ou anexos. O conteúdo pode ser text ou html, conforme especificado pela propriedade contentType do tipo de recurso itemBody .
O esquema chatMessage suporta os seguintes elementos não HTML que o Teams também suporta:
- em - Uma referência a um chatMessageMention que representa os detalhes de um utilizador, aplicação, canal, equipa ou etiqueta que é @mentioned.
- attachment - Representa a posição de uma referência de anexo.
- systemEventMessage - Quando a propriedade de conteúdo do recurso itemBody está definida como
<systemEventMessage/>, a mensagem representa um evento especial. Para obter mais informações, veja Obter mensagens do sistema. - emoji - Quando o corpo da mensagem contém um emoji, o
$"<emoji id="IdOfTheEmoji" alt="AlternateRepresentationOfEmoji" title="TitleOfEmoji"></emoji>"elemento representa as propriedades de um emoji:- ID - O ID do emoji.
- alt - Uma representação alternativa para o emoji; por exemplo, Unicode.
- title - Um título para o emoji.
- customemoji - Quando o corpo da mensagem contém um emoji personalizado, o
$"<customemoji id="IdOfTheCustomEmoji" alt="AlternateRepresentationOfCustomEmoji" source="HostedContentOfCustomEmoji"></customemoji>"elemento representa as propriedades de um customemoji:- ID - O ID do emoji personalizado.
- alt - Uma representação alternativa para o emoji personalizado; por exemplo, o nome do emoji personalizado.
- source - O conteúdo alojado do emoji personalizado associado à mensagem.
- codeblock - Quando o corpo da mensagem contém um bloco de código, o
"<codeblock class=\"Json\"><code>Hello world</code></codeblock>"elemento representa as propriedades de um bloco de código.
Exemplo: uma mensagem a informar que @mentions uma equipa
"body": {
"contentType": "html",
"content": "<div><div><at id=\"0\">WebhookTesting</at> 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"
}
}
}
],
Exemplo: uma mensagem com um anexo
"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
}
],
Exemplo: uma mensagem com um evento do sistema
"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"
}
}
}
Exemplo: uma mensagem com um emoji
{
"body": {
"contentType": "html",
"content": "<p><emoji id=\"smile\" alt=\"🙂\" title=\"Smile\"></emoji></p>"
}
}
Exemplo: uma mensagem com um emoji personalizado
{
"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>"
}
}
Exemplo: uma mensagem com um bloco de código
Nota: Os blocos de código realçados não são suportados quando uma mensagem com um bloco de código é enviada através do microsoft API do Graph.
{
"body": {
"contentType": "html",
"content": "\n<codeblock class=\"\"><code>Hello world</code></codeblock>"
}
}
Exemplo: uma mensagem com um bloco de código com realce específico de idioma
{
"body": {
"contentType": "html",
"content": "<p> </p>\n\n<codeblock class=\"Json\"><code>{<br> <span class=\"hljs-function\">\"body\"</span>: {<br> <span class=\"hljs-function\">\"contentType\"</span>: <span class=\"hljs-string\">\"html\"</span>,<br> <span class=\"hljs-function\">\"content\"</span>: <span class=\"hljs-string\">\"<codeblock><code>Hello world</code></codeblock>\"</span><br> }<br>}</code></codeblock>\n<p> </p>"
}
}
channelIdentity
Se for enviado um chatMessage num canal, a propriedade channelIdentity contém detalhes sobre o canal. Isto inclui o ID do canal e a equipa. Essa propriedade é somente leitura.
O exemplo seguinte mostra o esquema de um channelIdentity numa mensagem.
"channelIdentity": {
"teamId": "68a3e365-f7d9-4a56-b499-24332a9cc572",
"channelId": "19:0b50940236084d258c97b21bd01917b0@thread.skype"
},
chatId
Se um chatMessage for enviado numa conversa, a propriedade chatId contém o ID da conversa. Essa propriedade é somente leitura.
O exemplo seguinte mostra o esquema de um chatId.
"chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",
createdDateTime
A propriedade createdDateTime representa a hora em que a mensagem foi criada no servidor. Este carimbo de data/hora pode ser diferente do momento em que a mensagem foi enviada pelo autor da chamada. O servidor apenas regista o carimbo de data/hora do lado do servidor. Esta propriedade é só de leitura; no entanto, pode ser escrita quando importa mensagens de um sistema externo.
deletedDateTime
Se um chatMessage for eliminado, a propriedade deletedDateTime contém a hora em que a mensagem foi eliminada. Essa propriedade é somente leitura.
Nota: As mensagens eliminadas nem sempre são devolvidas por todas as APIs. As notificações de alteração devolvem sempre notificações de mensagens eliminadas se o changeType da subscrição incluir
deleted.
etag
A propriedade etag representa a versão da mensagem. Quaisquer alterações à mensagem (incluindo reações e edições) alteram o valor etag da mensagem. Essa propriedade é somente leitura.
eventDetail
Se estiver presente, a propriedade eventDetails representa os detalhes de um evento que ocorreu numa conversa, num canal ou numa equipa; por exemplo, a adição de novos membros. Para mensagens de evento, a propriedade messageType do chatMessage está definida como systemEventMessage. Para obter mais informações, veja Obter mensagens do sistema.
from
A propriedade from representa o remetente da mensagem. O Microsoft Teams suporta os seguintes tipos de remetente.
Entra ID utilizadores – utilizadores com uma Entra ID válida. Isto inclui o Entra ID externa convidados e utilizadores de acesso externo.
O exemplo seguinte mostra a propriedade de uma mensagem enviada por um utilizador Entra ID.
"from": { "application": null, "device": null, "user": { "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2", "displayName": "Alex Wilber", "userIdentityType": "aadUser" } },Convidados anónimos – utilizadores que participam numa reunião através de uma ligação de participação. Estes utilizadores fornecem um nome a apresentar quando participam na reunião. Não têm identidade persistente no Microsoft 365.
O exemplo seguinte mostra a propriedade from de uma mensagem enviada por um convidado anónimo.
"from": { "application": null, "device": null, "user": { "id": "8578568e393e4ffe8763e0b7c3da01fe", "displayName": "Anon (Guest)", "userIdentityType": "anonymousGuest" } },Utilizadores pessoais da conta Microsoft – utilizadores que utilizam a respetiva conta Microsoft pessoal para iniciar sessão no Teams.
O exemplo seguinte mostra a propriedade from de uma mensagem enviada por um convidado anónimo.
"from": { "application": null, "device": null, "user": { "id": "d78f5bc88c39f6b8", "displayName": "TFL 1017", "userIdentityType": "personalMicrosoftAccountUser" } },Utilizadores do Skype – utilizadores do Skype (para consumidores). Para obter mais informações, consulte Interoperabilidade do Teams e skype.
O exemplo seguinte mostra a propriedade de uma mensagem enviada por um utilizador do Skype.
"from": { "application": null, "device": null, "user": { "id": "alex1122", "displayName": "Alex", "userIdentityType": "skypeUser" } },Utilizadores do Skype para Empresas no local – utilizadores que utilizam a oferta do Skype para Empresas no local. Para obter mais informações, consulte Teams e Skype for Business coexistência e interoperabilidade.
O exemplo seguinte mostra a propriedade de uma mensagem enviada por um utilizador do Skype para empresas no local.
"from": { "application": null, "device": null, "user": { "id": "b0eddfe2-659b-437d-b289-cf55c8b3bb1d", "displayName": "Alex", "userIdentityType": "onPremiseAadUser" } },Bots - Bots de conversação criados através do Microsoft Bot Framework.
O exemplo seguinte mostra a propriedade from de uma mensagem enviada por um bot.
"from": { "device": null, "user": null, "application": { "id": "358f0194-6b0e-4dd3-af35-c24fe8a9ec87", "displayName": "Flow", "applicationIdentityType": "bot" } }Webhooks de saída – os webhooks de envio permitem que os programadores criem uma solução de baixo custo semelhante aos bots. Para obter mais informações, consulte Criar webhooks de envio.
O exemplo seguinte mostra a propriedade from de uma mensagem enviada por um bot.
"from": { "device": null, "user": null, "application": { "id": "22e50a9b-80cc-4eab-a092-ce64796d28d7", "displayName": "Custom bot", "applicationIdentityType": "outgoingWebhook" } }Conectores para grupos do Microsoft 365 – os conectores permitem publicar mensagens unidirecionais no Teams. Para obter mais informações, veja Criar conectores para Grupos do Microsoft 365.
O exemplo seguinte mostra a propriedade from de uma mensagem de um conector Office 365.
"from": { "device": null, "user": null, "application": { "id": "4c6cfc6e-cf78-44e8-87fd-bbb0efcad6a2", "displayName": "Bing News", "applicationIdentityType": "office365Connector" } }Email – o Teams permite que os e-mails sejam enviados para canais. Quando o utilizador não é conhecido, a identidade do remetente é apresentada como um utilizador de e-mail com os detalhes do e-mail utilizado para enviar a mensagem.
O exemplo seguinte mostra a propriedade de uma mensagem enviada por um utilizador de e-mail.
"from": { "application": null, "device": null, "user": { "@odata.type": "#microsoft.graph.teamworkUserIdentity", "id": "testemailuser@outlook.com", "displayName": "Test User", "userIdentityType": "emailUser" } }Serviços de Comunicação do Azure utilizador – se uma mensagem for enviada por um utilizador Serviços de Comunicação do Azure, os detalhes de identidade do remetente são representados no campo de origem.
O exemplo seguinte mostra a propriedade de um e-mail enviado a partir de um utilizador Serviços de Comunicação do Azure.
"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" } }
Esta propriedade é só de leitura; no entanto, pode escrever no mesmo quando importar mensagens de um sistema externo.
Nota: O nome a apresentar nem sempre está presente.
id
A propriedade ID contém um ID exclusivo que representa a mensagem. Essa propriedade é somente leitura.
Nota: O ID é exclusivo apenas dentro de um âmbito específico, como um chat ou canal. Diferentes mensagens em conversas e canais podem ter o mesmo ID.
importância
A propriedade importância representa a importância da mensagem. Veja a seguir os valores possíveis:
- normal
- high
- urgente
O exemplo seguinte mostra uma mensagem com a importância definida como elevada.
"importance": "high",
lastEditedDateTime
A propriedade lastEditedDateTime representa o carimbo de data/hora quando a mensagem foi editada pelo utilizador. Isto é representado na IU do Teams com o sinalizador Edited . Está definido como null se a mensagem nunca tiver sido editada.
lastModifiedDateTime
A propriedade lastModifiedDateTime representa o carimbo de data/hora da última modificação da mensagem. Isto inclui alterações como reações. As propriedades eTag e lastModifiedDateTime quando uma mensagem é modificada.
menções
A propriedade de menções representa utilizadores, aplicações (bots, webhooks), canais, equipas ou etiquetas que são @mentioned.
Exemplo: uma mensagem a informar que @mentions outro utilizador
"body": {
"contentType": "html",
"content": "<div><div><div><div><at id=\"0\">Alex</at> 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"
}
}
}
],
Exemplo: uma mensagem a indicar que @mentions um bot
"body": {
"contentType": "html",
"content": "<div><div><at id=\"0\">Power Automate</at> Learn more </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"
}
}
}
],
Exemplo: uma mensagem a informar que @mentions uma equipa
"body": {
"contentType": "html",
"content": "<div><div><at id=\"0\">WebhookTesting</at> 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"
}
}
}
],
Nota:@mentions também pode aparecer dentro de cartões.
messageType
A propriedade messageType representa o tipo de mensagem. Veja a seguir os valores possíveis:
- message - Representa mensagens enviadas por utilizadores e aplicações.
- systemEventMessage – representa mensagens enviadas pelo Teams com detalhes sobre vários eventos, como adicionar membros ou eliminar canais. Para obter mais informações, veja Obter mensagens do sistema.
Os seguintes valores não estão atualmente a ser utilizados:
- a escrever
- chatEvent
onBehalfOf
A propriedade onBehalfOf representa a atribuição do utilizador para mensagens enviadas por um bot em nome de um utilizador. Para obter mais informações, veja Atribuição de utilizadores para mensagens de bots.
O exemplo seguinte mostra uma mensagem enviada por um bot em nome de um utilizador.
"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
Se uma mensagem violar quaisquer políticas de prevenção de perda de dados (DLP) definidas pelo inquilino, um PATCH de mensagem pode ser invocado com os detalhes da política que foi violada. Esta ação oculta a mensagem da IU do Teams. A propriedade policyViolation representa os detalhes da política que foi violada, juntamente com a ação.
O exemplo seguinte mostra uma mensagem que foi bloqueada devido à política.
"body": {
"contentType": "text",
"content": ""
},
"policyViolation": {
"dlpAction": "blockAccess",
"justificationText": null,
"userAction": "none",
"verdictDetails": "none",
"policyTip": null
},
reactions
A propriedade reações representa reações de outros utilizadores na mensagem, como gostos. Cada elemento representa informações sobre a reação e o utilizador que reagiu.
O exemplo seguinte mostra uma mensagem com reações.
Nota: O nome a apresentar nem sempre está presente na propriedade do utilizador .
{
"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"
}
}
}
]
}
O exemplo seguinte mostra uma mensagem com uma reação personalizada.
Observação:
- As reações personalizadas só estão disponíveis no
/betaponto final.- O nome a apresentar nem sempre está presente para o utilizador.
{
"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
A propriedade replyToId representa o ID da mensagem à qual uma mensagem é uma resposta numa cadeia de resposta. Esta propriedade só está definida para mensagens de canal. Essa propriedade é somente leitura.
Nota: Para responder a mensagens numa conversa, é utilizada a referência de mensagens.
assunto
A propriedade do assunto contém o assunto da mensagem. Isto é válido apenas para mensagens enviadas num canal.
webUrl
A propriedade webUrl contém um URL que aponta para a mensagem na IU do Teams. Este URL abre a mensagem diretamente na IU do Teams num browser.
Escolher a API certa para o seu cenário
Escolher a API certa é essencial para criar a melhor experiência possível. A utilização do conjunto certo de APIs também garante que obtém dados sem atingir a limitação.
As APIs de mensagens no Microsoft Graph enquadram-se em três:
- APIs que mapeiam para a IU do Teams. Todas as alterações são imediatamente visíveis.
- APIs que exportam dados focados em utilizadores e equipas. Todas as alterações podem demorar até 24 horas a estarem disponíveis.
- Altere as APIs baseadas em notificações para receber notificações em tempo real.
APIs alinhadas com a IU do Teams
As APIs alinhadas com a IU do Teams funcionam de forma semelhante à forma como a IU do Teams funciona. Estas APIs são criadas de vez em quando para obter mensagens num contexto específico. Estas APIs têm um elevado desempenho e todas as alterações (mensagens enviadas, editadas ou eliminadas) são imediatamente visíveis.
Seguem-se as APIs alinhadas com a IU do Teams:
- Listar mensagens em um chat
- Listar mensagens em um canal
- Listar respostas a uma mensagem num canal
- Enviar mensagem numa conversa
- Enviar mensagem num canal
- Responder a uma mensagem em um canal
- Listar hostedContents associados a uma mensagem
- Obter hostedContent associado a uma mensagem
Além disso, as seguintes APIs atuam juntamente com estas APIs para servir cenários específicos, como obter instâncias específicas ou alterar a ordem do percurso.
- Obter uma mensagem ou resposta num canal ou chat
- Sincronização contínua com /delta para mensagens de canal
APIs para exportar dados do Teams
Normalmente, as APIs que exportam dados funcionam com uma granularidade mais elevada do que as APIs alinhadas com IU. Estas APIs concentram-se em permitir a obtenção de uma grande quantidade de dados. Poderá demorar algum tempo (até 24 horas em determinados casos) para que os dados sejam sincronizados e disponibilizados através destas APIs.
As seguintes APIs enquadram-se nesta categoria:
APIs em tempo real
As APIs em tempo real permitem que um autor da chamada seja notificado assim que for efetuada uma alteração (mensagem enviada, editada, eliminada, etc.). Estas APIs são adequadas para aplicações em tempo real, como a composição de mensagens fora da IU do Teams. Além disso, estas APIs permitem a criação de subscrições e, por conseguinte, a receção de uma grande quantidade de dados sem atingir a limitação. Para obter mais informações, consulte Alterar notificações de channles e chats.