Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Уведомления об изменениях позволяют подписаться на изменения членства (создание, обновление и удаление) в частном или общем канале. Вы можете получать уведомления при добавлении, удалении или обновлении участника в частном или общем канале. Кроме того, вы можете получать данные ресурсов в уведомлениях и, следовательно, избегать вызова API, чтобы получить полезные данные.
Перейдите к этой статье о сценариях для ресурса conversationMember в контексте канала . Вы также можете узнать об уведомлениях об изменениях для других ресурсов Microsoft Teams.
Примечание.
Если вы запрашиваете срок действия подпискиDateTime , который будет составлять более одного часа в будущем, необходимо подписаться на уведомления о жизненном цикле, включив свойство lifecycleNotificationUrl в запрос подписки. В противном случае запрос подписки завершается сбоем со следующим сообщением об ошибке: lifecycleNotificationUrl is a required property for subscription creation on this resource when the expirationDateTime value is set to greater than 1 hour.
Подписка на изменения членства во всех каналах в клиенте (предварительная версия)
Чтобы получать уведомления об изменениях членства во всех каналах клиента, подпишитесь на /teams/getAllChannels/getAllMembers. Этот ресурс поддерживает включение данных ресурса в уведомление. В настоящее время поддерживаются только частные каналы. Эта подписка доступна только в конечной точке бета-версии.
Разрешения
| Тип разрешения | Разрешения (в порядке повышения привилегий) |
|---|---|
| Делегированные (рабочая или учебная учетная запись) | Не поддерживается. |
| Делегированные (личная учетная запись Майкрософт) | Не поддерживается. |
| Приложение | ChannelMember.Read.All, ChannelMember.ReadWrite.All |
Пример
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}"
}
Подписка на изменения членства во всех частных и общих каналах определенной команды
Чтобы получать уведомления об изменениях членства во всех частных и общих каналах в определенной команде, подпишитесь на /teams/{team-id}/channels/getAllMembers. Этот ресурс поддерживает включение данных ресурса в уведомление.
Примечание. К этому API применяются требования лицензирования и оплаты. Он поддерживает параметры запроса
model=Aиmodel=B. Если модель не указана, будет использоваться режим оценки.
Разрешения
| Тип разрешения | Разрешения (в порядке повышения привилегий) |
|---|---|
| Делегированное (рабочая или учебная учетная запись) | ChannelMember.Read.All, ChannelMember.ReadWrite.All |
| Делегированное (личная учетная запись Майкрософт) | Не поддерживается. |
| Приложение | ChannelMember.Read.All, ChannelMember.ReadWrite.All |
Пример 1. Подписка на изменения для получения уведомлений о прямом членстве для частных и общих каналов
В следующем запросе показано, как подписаться на изменения, чтобы получать прямые уведомления о членстве для частных и общих каналов.
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}"
}
Уведомления с данными ресурсов
Для уведомлений с данными ресурсов полезные данные выглядят следующим образом. Полезные данные для добавления участника в общий или частный канал.
{
"value": [{
"subscriptionId": "755a93bc-85bb-4da4-ade4-7d325bc8eecb",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-02-02T10:30:34.9097561-08:00",
"resource": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/members('MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==')",
"resourceData": {
"id": "MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==",
"@odata.type": "#Microsoft.Graph.aadUserConversationMember",
"@odata.id": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/members('MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==')"
},
"encryptedContent": {
"data": "<<--EncryptedContent-->",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
В предыдущей полезных данных показаны события членства в канале, в которых свойство ресурса ссылается на участника канала.
Дополнительные сведения о проверке маркеров и расшифровке полезных данных см. в статье Настройка уведомлений об изменениях, включающих данные ресурсов.
Расшифрованные полезные данные уведомления выглядят следующим образом. Полезные данные соответствуют схеме aadUserConversationMember . Полезные данные похожи на результаты, возвращаемые операциями GET.
{
"id": "MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==",
"roles": [
"owner"
],
"displayName": "Test user",
"userId": "8b081ef6-4792-4def-b2c9-c363a1bf41d5",
"email": null,
"tenantId": "10eda0c8-cb50-4390-8751-488c29218b02"
}
Уведомления без данных ресурса
Уведомления без данных ресурса предоставляют достаточно информации для выполнения вызовов GET для получения содержимого членства. Для подписок на уведомления без данных ресурса не требуется сертификат шифрования (так как Microsoft Graph не отправляет фактические данные ресурса).
Для уведомлений без данных ресурса полезные данные выглядят следующим образом. Эти полезные данные используются для изменения членства в частном или общем канале.
{
"subscriptionId": "9f9d1ed0-c9cc-42e7-8d80-a7fc4b0cda3c",
"changeType": "created",
"tenantId": "<<--TenantForWhichNotificationWasSent-->>",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-02-02T11:26:41.0537895-08:00",
"resource": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/members('MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==')",
"resourceData": {
"id": "MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==",
"@odata.type": "#Microsoft.Graph.aadUserConversationMember",
"@odata.id": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/members('MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==')"
}
}
Свойства ресурса и @odata.id можно использовать для вызовов Microsoft Graph для получения полезных данных для участника канала.
Пример 2. Подписка на изменения для получения оповещений о непрямом членстве для общих каналов с помощью параметров запроса
Следующие параметры запроса в запросе подписки позволяют получать уведомления как для прямых, так и для косвенных обновлений членства.
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?notifyOnIndirectMembershipUpdate=true&suppressNotificationWhenSharedUnsharedWithTeam=true",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2019-09-19T11:00:00.0000000Z",
"clientState": "{secretClientState}"
}
Уведомления с данными ресурсов
Для уведомлений с данными ресурсов полезные данные выглядят следующим образом. Эти полезные данные используются для добавления участника в команду, с которой предоставляется общий доступ к каналу.
{
"value": [{
"subscriptionId": "755a93bc-85bb-4da4-ade4-7d325bc8eecb",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2025-07-16T10:30:34.9097561-08:00",
"resource": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/allMembers('MCMjNCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxYjAzMWEwNy1mM2FkLTQ3YmYtYTYyOS04MWM5NmViYWFkNmZfMTk6bFJaSEw1Vnd2WnMwWE4yb3JUbjdEbGluSkRFVGtnU1ZUSFhiRExVRUtmMDFAdGhyZWFkLnRhY3YyIyMxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWI=')",
"resourceData": {
"id": "MCMjNCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxYjAzMWEwNy1mM2FkLTQ3YmYtYTYyOS04MWM5NmViYWFkNmZfMTk6bFJaSEw1Vnd2WnMwWE4yb3JUbjdEbGluSkRFVGtnU1ZUSFhiRExVRUtmMDFAdGhyZWFkLnRhY3YyIyMxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWI=",
"@odata.type": "#Microsoft.Graph.aadUserConversationMember",
"@odata.id": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/allMembers('MCMjNCMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxYjAzMWEwNy1mM2FkLTQ3YmYtYTYyOS04MWM5NmViYWFkNmZfMTk6bFJaSEw1Vnd2WnMwWE4yb3JUbjdEbGluSkRFVGtnU1ZUSFhiRExVRUtmMDFAdGhyZWFkLnRhY3YyIyMxMjczYTAxNi0yMDFkLTRmOTUtODA4My0xYjdmOTliM2VkZWI=')"
},
"encryptedContent": {
"data": "<<--EncryptedContent-->",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
В полезных данных уведомления о непрямом членстве в предыдущем канале свойство ресурса указывает на конечную точку List allMembers , а не на конечную точку members .
Дополнительные сведения о проверке маркеров и расшифровке полезных данных см. в статье Настройка уведомлений об изменениях, включающих данные ресурсов.
Расшифрованные полезные данные уведомления выглядят следующим образом. Полезные данные соответствуют схеме aadUserConversationMember . Полезные данные похожи на результаты, возвращаемые операциями GET. Полезные данные аналогичны тем, которые возвращает конечная точка List allMembers .
{
"@microsoft.graph.originalSourceMembershipUrl": "tenants/('10eda0c8-cb50-4390-8751-488c29218b02')teams('1b031a07-f3ad-47bf-a629-81c96ebaad6f')/members/('MCMjMSMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxYjAzMWEwNy1mM2FkLTQ3YmYtYTYyOS04MWM5NmViYWFkNmYjIzEyNzNhMDE2LTIwMWQtNGY5NS04MDgzLTFiN2Y5OWIzZWRlYg==')",
"id": "MCMjMyMjMjQzMmI1N2ItMGFiZC00M2RiLWFhN2ItMTZlYWRkMTE1ZDM0IyMxOTpsUlpITDVWd3ZaczBYTjJvclRuN0RsaW5KREVUa2dTVlRIWGJETFVFS2YwMUB0aHJlYWQudGFjdjIjIzU5YjViYzY5LWNhNzMtNGZmZC1hMmUwLTg4YTc5MTE1ZDEzYg==",
"roles": [],
"displayName": "Test user",
"userId": "8b081ef6-4792-4def-b2c9-c363a1bf41d5",
"email": null,
"tenantId": "10eda0c8-cb50-4390-8751-488c29218b02"
}
Заметка @microsoft.graph.originalSourceMembershipUrl показывает исходный источник добавленного элемента и может использоваться для выполнения вызовов Microsoft Graph для получения полезных данных участника в команде. Свойство в примере показывает, что участник добавляется в команду, с которой предоставляется общий доступ к каналу. Это свойство доступно только для оповещений о непрямом членстве. Свойства ресурса и @odata.id можно использовать для вызовов Microsoft Graph для получения полезных данных для прямого участника канала.
Примечание.
- Уведомления о непрямом членстве доступны только при подписке на команду, владеющую общим каналом.
- При подписке на изменения для получения прямых и косвенных уведомлений для общих каналов рекомендуется получать уведомления с ресурсом. Этот подход позволяет использовать заметку @microsoft.graph.originalSourceMembershipUrl для выявления прямых или косвенных изменений членства.
- Когда подписчик получает уведомление об удалении участника, используйте API канала: doesUserHaveAccess , чтобы убедиться, что доступ пользователя был фактически отозван.
Подписка на изменения, когда определенный канал предоставляется команде или не предоставляет общий доступ к ней
Подписчики могут получать уведомления об изменениях, когда определенный канал предоставляется команде или не предоставляет общий доступ.
Разрешения
| Тип разрешения | Разрешения (в порядке повышения привилегий) |
|---|---|
| Делегированное (рабочая или учебная учетная запись) | ChannelMember.Read.All, ChannelMember.ReadWrite.All |
| Делегированное (личная учетная запись Майкрософт) | Не поддерживается. |
| Приложение | ChannelMember.Read.All, ChannelMember.ReadWrite.All |
Пример
POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json
{
"changeType": "created,deleted",
"notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
"resource": "/teams/{team-id}/channels/{channel-id}/sharedWithTeams",
"includeResourceData": true,
"encryptionCertificate": "{base64encodedCertificate}",
"encryptionCertificateId": "{customId}",
"expirationDateTime": "2025-07-14T22:33:21.5040567Z",
"clientState": "{secretClientState}"
}
Уведомления с данными ресурсов
Для уведомлений с данными ресурсов полезные данные выглядят следующим образом. Эта полезная нагрузка используется для совместного использования канала с командой.
{
"value": [{
"subscriptionId": "7e11c492-bae9-4fa5-a7b5-71844cf8ac47",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2025-07-14T22:33:21.5040567+00:00",
"resource": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/sharedWithTeams('04460120-3ca5-40cf-bc72-e890777256a3')",
"resourceData": {
"id": "04460120-3ca5-40cf-bc72-e890777256a3",
"@odata.type": "#Microsoft.Graph.sharedWithChannelTeamInfo",
"@odata.id": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/sharedWithTeams('04460120-3ca5-40cf-bc72-e890777256a3')"
},
"encryptedContent": {
"data": "<<--EncryptedContent-->",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
Дополнительные сведения о проверке маркеров и расшифровке полезных данных см. в статье Настройка уведомлений об изменениях, включающих данные ресурсов.
Расшифрованные полезные данные уведомления выглядят следующим образом. Полезные данные соответствуют схеме sharedWithChannelTeamInfo . Полезные данные похожи на результаты, возвращаемые операциями GET.
{
"isHostTeam": false,
"id": "04460120-3ca5-40cf-bc72-e890777256a3",
"tenantId": "10eda0c8-cb50-4390-8751-488c29218b02",
"displayName": "My Sample Team for first"
}
Уведомления без данных ресурса
Уведомления без данных ресурса предоставляют достаточно информации для выполнения вызовов GET для получения содержимого членства. Для подписок на уведомления без данных ресурса не требуется сертификат шифрования (так как Microsoft Graph не отправляет фактические данные ресурса).
Для уведомлений без данных ресурса полезные данные выглядят следующим образом. Эти полезные данные относятся к изменению участников в команде.
{
"subscriptionId": "7e11c492-bae9-4fa5-a7b5-71844cf8ac47",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2025-07-14T22:33:21.5040567+00:00",
"resource": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/sharedWithTeams('04460120-3ca5-40cf-bc72-e890777256a3')",
"resourceData": {
"id": "04460120-3ca5-40cf-bc72-e890777256a3",
"@odata.type": "#Microsoft.Graph.sharedWithChannelTeamInfo",
"@odata.id": "teams('cd28795b-988a-48ec-b652-781178957d8b')/channels('19:lRZHL5VwvZs0XN2orTn7DlinJDETkgSVTHXbDLUEKf01@thread.tacv2')/sharedWithTeams('04460120-3ca5-40cf-bc72-e890777256a3')"
}
}
Свойства ресурса и @odata.id можно использовать для выполнения вызовов к Microsoft Graph для получения сведений о том, когда канал предоставляется команде или не предоставляется ей.
После получения события уведомления, указывающего, что общий канал был предоставлен команде или не предоставлен общий доступ, вызовите API List allMembers , чтобы обновить членство в общем канале.
Связанные материалы
- Уведомления об изменениях в Microsoft Graph
- Получение уведомлений об изменениях команд и каналов с помощью Microsoft Graph
- Получение уведомлений об изменениях сообщений в каналах и чатах Teams с помощью Microsoft Graph
- Получение уведомлений об изменениях чатов с помощью Microsoft Graph
- Получение уведомлений об изменениях участников чата с помощью Microsoft Graph
- Обзор API Microsoft Teams
- Получение уведомлений об изменениях членства в командах с помощью Microsoft Graph