Reciba notificaciones de cambios en los equipos y canales mediante Microsoft Graph
Las notificaciones de cambio le permiten suscribirse a los cambios de pertenencia (crear, actualizar y eliminar) en un equipo o canal privado. Puede recibir notificaciones cada vez que se agregue, elimine o actualice un miembro en un equipo o en un canal privado. 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 equipo o canal . O bien, obtenga información sobre las notificaciones de cambio para otros recursos de Microsoft Teams.
Nota:
Si solicita una expiración de suscripciónDateTime que sea superior a 1 hora en el futuro, debe suscribirse a las notificaciones de ciclo de vida incluyendo una propiedad lifecycleNotificationUrl en la solicitud de suscripción. De lo contrario, se producirá un error en la solicitud de suscripción con el siguiente mensaje de error: lifecycleNotificationUrl es una propiedad necesaria para la creación de la suscripción en este recurso cuando el valor expirationDateTime se establece en mayor que 1 hora.
Suscribirse a los cambios en la pertenencia de un equipo determinado
Para obtener notificaciones de cambios para los cambios de pertenencia en un equipo determinado, suscríbase a /teams/{team-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) | TeamMember.Read.All, TeamMember.ReadWrite.All |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | TeamMember.Read.Group*, TeamMember.Read.All, TeamMember.ReadWrite.All |
Nota: Los permisos marcados con * se admiten como parte del consentimiento específico del recurso.
Ejemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/teams/{team-id}/members",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Suscribirse a los cambios de pertenencia en todos los equipos del inquilino
Para obtener notificaciones de cambio de los cambios de pertenencia en todos los equipos del inquilino, suscríbase a /teams/getAllMembers
. 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) | No admitida. |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | TeamMember.Read.All, TeamMember.ReadWrite.All |
Ejemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/teams/getAllMembers",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2022-08-10T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Suscribirse a los cambios de pertenencia en todos los canales del inquilino (versión preliminar)
Para obtener notificaciones de cambio para los cambios de pertenencia en todos los canales del inquilino, suscríbase a /teams/getAllChannels/getAllMembers
. Este recurso permite incluir datos de recursos en la notificación. Actualmente, solo se admiten canales privados. Esta suscripción solo está disponible en el punto de conexión beta.
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 | ChannelMember.Read.All, ChannelMember.ReadWrite.All |
Ejemplo
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/teams/getAllChannels/getAllMembers",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2022-08-10T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Suscribirse a los cambios de pertenencia en todos los canales privados y compartidos de un equipo determinado
Para obtener notificaciones de cambio de los cambios de pertenencia en todos los canales privados y compartidos de un equipo determinado, suscríbase a /teams/{team-id}/channels/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) | ChannelMember.Read.All. |
Delegado (cuenta personal de Microsoft) | No admitida. |
Aplicación | ChannelMember.Read.All |
Ejemplo
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted,updated",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/teams/{team-id}/channels/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 equipo.
{
"value": [{
"subscriptionId": "10493aa0-4d29-4df5-bc0c-ef742cc6cd7f",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-02-02T10:30:34.9097561-08:00",
"resource": "teams('ee0f5ae2-8bc6-4ae5-8466-7daeebbfa062')/members('ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk=')",
"resourceData": {
"id": "ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk=",
"@odata.type": "#Microsoft.Graph.aadUserConversationMember",
"@odata.id": "teams('ee0f5ae2-8bc6-4ae5-8466-7daeebbfa062')/members('ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk=')"
},
"encryptedContent": {
"data": "<<--EncryptedContent-->",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
La carga útil de los eventos de pertenencia al canal es similar a la carga útil anterior, excepto que la propiedad del recurso apunta a un miembro del canal en lugar de un miembro del equipo.
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.
{
"id": "/ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk=",
"roles": [
"owner"
],
"displayName": "John Doe",
"userId": "8b081ef6-4792-4def-b2c9-c363a1bf41d5",
"email": null
}
Notificaciones con datos de recursos
Las notificaciones sin datos de recursos le proporcionarán suficiente información para realizar llamadas GET y obtener el contenido del mensaje. Las suscripciones para notificaciones sin datos de recursos no requieren un certificado de cifrado (porque Microsoft Graph no envía los datos de recursos reales).
Para las notificaciones sin datos de recursos, la carga es similar a la siguiente. Esta carga es para un cambio de pertenencia en un equipo.
{
"subscriptionId": "9f9d1ed0-c9cc-42e7-8d80-a7fc4b0cda3c",
"changeType": "created",
"tenantId": "<<--TenantForWhichNotificationWasSent-->>",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-02-02T11:26:41.0537895-08:00",
"resource": "teams('ee0f5ae2-8bc6-4ae5-8466-7daeebbfa062')/members('ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk=')",
"resourceData": {
"id": "ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk",
"@odata.type": "#Microsoft.Graph.aadUserConversationMember",
"@odata.id": "teams('ee0f5ae2-8bc6-4ae5-8466-7daeebbfa062')/members('ZWUwZjVhZTItOGJjNi00YWU1LTg0NjYtN2RhZWViYmZhMDYyIyM3Mzc2MWYwNi0yYWM5LTQ2OWMtOWYxMC0yNzlhOGNjMjY3Zjk=')"
}
}
La carga útil de los eventos de pertenencia al canal es similar a la carga útil anterior, excepto que la propiedad del recurso apunta a un miembro del canal en lugar de un miembro del equipo.
Las propiedades recurso y @odata.id pueden usarse para realizar llamadas a Microsoft Graph y obtener la carga del mensaje. Las llamadas GET siempre devuelven el estado actual del mensaje. Si el mensaje cambia entre cuando se envía la notificación y cuando se recupera el mensaje, la operación devuelve el mensaje actualizado.
Contenido relacionado
- Notificaciones de cambios en Microsoft Graph
- Obtener notificaciones para equipos y canales con 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
- Obtener notificaciones de cambios para la pertenencia a chats mediante Microsoft Graph
- Introducción a la API de Microsoft Teams