Obtener notificaciones de cambios para la pertenencia a chats mediante Microsoft Graph
Las notificaciones de cambios le permiten suscribirse a los cambios (crear y eliminar) en la pertenencia a chats. Puede recibir una notificación cada vez que se agregue o quite un recurso conversationMember de un chat. También puede obtener los datos de recursos en las notificaciones y, por lo tanto, evitar llamar a la API para obtener la carga.
Continúe con este artículo sobre escenarios para el recurso conversationMember en el contexto de chat . O bien, obtenga información sobre las notificaciones de cambio para otros recursos de Microsoft Teams.
Suscribirse a los cambios en la pertenencia de cualquier chat en el nivel de espacio empresarial
Para obtener notificaciones de cambios para los cambios de pertenencia en cualquier chat de un espacio empresarial, suscríbase a /chats/getAllMembers
. Este recurso permite incluir datos de recursos en la notificación.
Nota: Esta API tiene requisitos de licencia y pago. Admite parámetros de consulta
model=A
ymodel=B
. Si no se especifica ningún modelo, se usará el modo de evaluación.
Permisos
Tipo de permiso | Permisos (de menos a más privilegiados) |
---|---|
Delegado (cuenta profesional o educativa) | No admitida. |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All. |
Ejemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/chats/getAllMembers",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Suscribirse a los cambios en la pertenencia de un chat determinado
Para obtener notificaciones de cambios para los cambios de pertenencia en un chat determinado, suscríbase a /chats/{id}/members
. Este recurso permite incluir datos de recursos en la notificación.
Permisos
Tipo de permiso | Permisos (de menos a más privilegiados) |
---|---|
Delegado (cuenta profesional o educativa) | ChatMember.Read, ChatMember.ReadWrite, Chat.ReadBasic, Chat.Read, Chat.ReadWrite |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | ChatMember.Read.Chat*, Chat.Manage.Chat*, ChatMember.Read.All, ChatMember.ReadWrite.All, Chat.ReadBasic.All, Chat.Read.All, Chat.ReadWrite.All |
Nota: Los permisos marcados con * usan un consentimiento específico del recurso.
Ejemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/chats/{id}/members",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Suscribirse a los cambios en la pertenencia a cualquier chat en un inquilino donde esté instalada una aplicación de Teams (versión preliminar)
Para obtener notificaciones de cambio de los cambios de pertenencia en cualquier chat en el inquilino donde esté instalada una aplicación específica de Teams, suscríbase a /appCatalogs/teamsApps/{teams-app-id}/installedToChats/getAllMembers
. Este recurso permite incluir datos de recursos en la notificación.
Nota. Este tipo de recurso está actualmente en versión preliminar.
Nota: Esta API tiene requisitos de licencia y pago. Admite el parámetro de consulta
model=B
. Si no se especifica ningún modelo, se usará el modo de evaluación.
Permisos
Tipo de permiso | Permisos (de menos a más privilegiados) |
---|---|
Delegado (cuenta profesional o educativa) | No admitida. |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | ChatMember.Read.WhereInstalled, ChatMember.ReadWrite.WhereInstalled, Chat.ReadBasic.WhereInstalled, Chat.Read.WhereInstalled, Chat.ReadWrite.WhereInstalled |
Ejemplo
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/appCatalogs/teamsApps/386bbcdb-1e1c-4f3f-b7d0-ad7b9ea6cf7c/installedToChats/getAllMembers",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Notificaciones con datos de recursos
Para las notificaciones con datos de recursos, la carga es similar a la siguiente. Esta carga es para un cambio de pertenencia en un chat.
{
"value": [{
"subscriptionId": "c0125ef2-7a87-4e94-aa71-b995510f369b",
"changeType": "Created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-06-03T11:04:58.5537601+00:00",
"resource": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')/members('MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=')",
"resourceData": {
"id": "MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=",
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"@odata.id": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')/members('MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=')"
},
"EncryptedContent": {
"data": "<<--EncryptedContent-->>",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
Para obtener más información sobre cómo validar tokens y descifrar la carga, consulte Configurar notificaciones de cambio que incluyan datos de recursos.
La carga de notificación descifrada es similar a la siguiente. La carga se ajusta al esquema de aaduserconversationmember. La carga es similar a la devuelta por las operaciones GET.
{
"userId": "2fc60663-19a2-4aa4-852c-f7ba4e90ada2",
"email": null,
"tenantId": "2432b57b-0abd-43db-aa7b-16eadd115d34",
"id": "MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=",
"roles": [
"Owner"
],
"displayName": null,
"visibleHistoryStartDateTime": "1970-01-01T00:00:00Z",
"user": null
}
Notificaciones con datos de recursos
La carga siguiente describe la información enviada en la solicitud de notificaciones sin datos de recursos. Esta carga concreta significa que se ha agregado un usuario a un chat.
{
"subscriptionId": "cae901f1-ad1d-41b1-95b7-37029ed327bf",
"changeType": "Created",
"tenantId": "<<--TenantForWhichNotificationWasSent-->>",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-06-03T10:58:54.7656077+00:00",
"resource": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')/members('MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=')",
"resourceData": {
"id": "MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=",
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"@odata.id": "chats('19:1273a016-201d-4f95-8083-1b7f99b3edeb_976f4b31-fd01-4e0b-9178-29cc40c14438@unq.gbl.spaces')/members('MCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOToxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWJfOTc2ZjRiMzEtZmQwMS00ZTBiLTkxNzgtMjljYzQwYzE0NDM4QHVucS5nYmwuc3BhY2VzIyMyZmM2MDY2My0xOWEyLTRhYTQtODUyYy1mN2JhNGU5MGFkYTI=')"
}
}
Las propiedades recurso y @odata.id pueden usarse para realizar llamadas a Microsoft Graph y obtener la carga de los detalles del miembro del chat. Las llamadas GET siempre devolverán el estado actual de los detalles del miembro del chat. Si los detalles del miembro del chat han cambiado entre el momento en que se envía la notificación y el momento en que se recuperaron los detalles del miembro del chat, la operación devolverá los detalles actualizados del miembro del chat.
Ver también
- Notificaciones de cambios en Microsoft Graph
- Obtener notificaciones para equipos y canales con Microsoft Graph
- Reciba notificaciones de cambios en los equipos y canales mediante Microsoft Graph
- Obtener notificaciones de cambio de mensajes en canales y chats de Teams con Microsoft Graph
- Obtener notificaciones de cambios para los chats mediante Microsoft Graph
- Introducción a la API de Microsoft Teams