Obtenha notificações de alteração para chats usando o Microsoft Graph
As notificações de alteração permitem que você se inscreva para receber alterações (criar e atualizar) nos chats. Você pode ser notificado sempre que um chat for criado ou atualizado. Você também pode obter os dados do recurso nas notificações e, portanto, evitar chamar a API para obter o conteúdo.
Continue com este artigo sobre cenários para o recurso de chat . Ou descubra sobre notificações de alteração para outros recursos do Microsoft Teams.
Observação
Se você solicitar uma assinatura expirationDateTime com mais de 1 hora no futuro, você deverá assinar notificações de ciclo de vida incluindo uma propriedade lifecycleNotificationUrl em sua solicitação de assinatura. Caso contrário, sua solicitação de assinatura falhará com a seguinte mensagem de erro: lifecycleNotificationUrl é uma propriedade necessária para criação de assinatura nesse recurso quando o valor expirationDateTime for definido como maior que 1 hora.
Inscrever-se para alterações em qualquer chat a nível de locatário
Para obter notificações de alteração para todas as alterações (criar e atualizar) relacionadas a qualquer chat em um locatário, inscreva-se em /chats
. Este recurso oferece suporte a incluindo dados de recursos na notificação.
Permissões
Tipo de permissão | Permissões (da com menos para a com mais privilégios) |
---|---|
Delegado (conta corporativa ou de estudante) | Sem suporte. |
Delegado (conta pessoal da Microsoft) | Sem suporte. |
Aplicativo | Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All |
Exemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/chats",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Inscrever-se para alterações em um chat específico
Para obter notificações de alteração para todas as alterações relacionadas a um chat específico, inscreva-se em /chats/{id}
. Este recurso oferece suporte a incluindo dados de recursos na notificação.
Permissões
Tipo de permissão | Permissões (da com menos para a com mais privilégios) |
---|---|
Delegado (conta corporativa ou de estudante) | Chat.ReadBasic, Chat.Read, Chat.ReadWrite |
Delegado (conta pessoal da Microsoft) | Sem suporte. |
Aplicativo | ChatSettings.Read.Chat*, ChatSettings.ReadWrite.Chat*, Chat.Manage.Chat*, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All |
Observação: Permissões marcadas com * usam consentimento específico de recurso.
Exemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/chats/{id}",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Notificações com dados de recursos
Para notificações com dados de recursos, a carga se parece com a seguinte. Este conteúdo é para uma alteração de propriedade em um chat.
{
"value": [{
"subscriptionId": "352887e3-9be0-4b6f-a4e6-dec118d857db",
"changeType": "Created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-06-03T09:50:37.719033+00:00",
"resource": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')",
"resourceData": {
"id": "19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",
"@odata.type": "#microsoft.graph.chat",
"@odata.id": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')"
},
"EncryptedContent": {
"data": "<<--EncryptedContent-->>",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
}
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
Para obter detalhes sobre como validar tokens e descriptografar a carga útil, consulte Definir notificações de alteração que incluem dados de recursos.
A carga de notificação descriptografada parece com a seguinte. O conteúdo está de acordo com o esquema de chats. A carga é semelhante à devolvida pelas operações GET.
{
"id": "19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",
"topic": null,
"createdDateTime": "2021-06-03T14:25:04+05:30",
"lastUpdatedDateTime": "2021-06-03T14:25:04.387Z",
"chatType": "oneOnOne",
"members": [
{
"userId": "976f4b31-fd01-4e0b-9178-29cc40c14438",
"email": null,
"tenantId": "2432b57b-0abd-43db-aa7b-16eadd115d34",
"id": "MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyM5NzZmNGIzMS1mZDAxLTRlMGItOTE3OC0yOWNjNDBjMTQ0Mzg=",
"roles": [],
"displayName": null,
"visibleHistoryStartDateTime": "1970-01-01T00:00:00Z",
"user": null
},
{
"userId": "ee723d3d-22d0-4394-9c32-5764d68f4672",
"email": null,
"tenantId": "2432b57b-0abd-43db-aa7b-16eadd115d34",
"id": "MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyNlZTcyM2QzZC0yMmQwLTQzOTQtOWMzMi01NzY0ZDY4ZjQ2NzI=",
"roles": [],
"displayName": null,
"visibleHistoryStartDateTime": "1970-01-01T00:00:00Z",
"user": null
}
],
"messages": [],
"installedApps": [],
"tabs": [],
"permissionGrants": [],
"operations": []
}
Assinar alterações em qualquer chat em um locatário em que um aplicativo do Teams está instalado
Para obter notificações de alteração para todas as alterações relacionadas a qualquer chat em um locatário em que um aplicativo específico do Teams está instalado, assine /appCatalogs/teamsApps/{teams-app-id}/installedToChats
. Este recurso oferece suporte a incluindo dados de recursos na notificação.
Observação: esta API tem requisitos de licenciamento e pagamento. Ele dá suporte ao parâmetro
model=B
consulta. Se nenhum modelo for especificado, o modo de avaliação será usado.
Permissões
Tipo de permissão | Permissões (da com menos para a com mais privilégios) |
---|---|
Delegado (conta corporativa ou de estudante) | Sem suporte. |
Delegado (conta pessoal da Microsoft) | Sem suporte. |
Aplicativo | Chat.ReadBasic.WhereInstalled, Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled |
Exemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/appCatalogs/teamsApps/386bbcdb-1e1c-4f3f-b7d0-ad7b9ea6cf7c/installedToChats",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Notificações sem dados de recursos
O conteúdo a seguir descreve as informações enviadas na solicitação de notificações sem dados de recursos. Este conteúdo específico significa que um novo chat foi criado.
{
"subscriptionId": "8d85051d-779d-45bc-be92-e433f0a5d8ac",
"changeType": "Created",
"tenantId": "<<--TenantForWhichNotificationWasSent-->>",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-06-03T10:26:09.8959595+00:00",
"resource": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')",
"resourceData": {
"id": "19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces",
"@odata.type": "#microsoft.graph.chat",
"@odata.id": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')"
}
}
O recurso e a propriedades @odata.id pode ser usado para fazer chamadas para o Microsoft Graph para obter o conteúdo dos detalhes do chat. As chamadas GET sempre retornam o estado atual dos detalhes do chat. Se os detalhes do chat foram atualizados entre quando a notificação é enviada e quando os detalhes do chat são recuperados, a operação retornará os detalhes do chat atualizado.
Conteúdo relacionado
- Notificações de alteração do Microsoft Graph
- Obter notificações de alteração para equipes e canais usando o Microsoft Graph
- Receba notificações de alteração de membros em equipes e canais usando o Microsoft Graph
- Obter notificações de alteração para mensagens nos canais e bate-papos do Teams usando o Microsoft Graph
- Obtenha as notificações de alteração para associação de chat o usando o Microsoft Graph
- Visão geral da API do Microsoft Teams
- Alterar a equipe de notificações ou o exemplo do canal C#
- Alterar a equipe de notificações ou o exemplo de Node.js de canal
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de