Уведомления об изменениях для ресурсов Microsoft Teams
Уведомления об изменениях для ресурсов Microsoft Teams с помощью Microsoft Graph позволяют подписаться на изменения ресурса (создание, обновление и удаление). Уведомления об изменениях предоставляют модель с низкой задержкой, что позволяет поддерживать подписку. Вы также можете получить данные ресурсов в уведомлениях и избежать вызова API для получения полезных данных.
Примечание.
Максимальный срок действия подписки — 60 минут. однако подписки можно продлевать до тех пор, пока вызывающий объект не получите разрешение на доступ к ресурсу.
Типы уведомлений об изменениях
Microsoft Teams поддерживает два типа уведомлений об изменениях:
Уведомление об изменении для отслеживания всех изменений, связанных с ресурсом в клиенте: например, вы можете подписаться на изменения в сообщениях в любом канале в клиенте и получать уведомления всякий раз, когда сообщение создается, обновляется или удаляется в любом канале в клиенте. Эти уведомления могут иметь требования к лицензированию и оплате, например уведомления об изменениях для сообщений и членства.
Уведомление об изменениях для отслеживания всех изменений для определенного ресурса: Например, вы можете подписаться на изменения в сообщениях в определенном канале и получать уведомления при создании, обновлении или удалении сообщения.
Дополнительные сведения о том, какие ресурсы поддерживают определенные типы уведомлений об изменениях, см. в статье Уведомления об изменениях Microsoft Graph.
Поддерживаемые ресурсы
В следующей таблице перечислены ресурсы Microsoft Teams, поддерживающие уведомления об изменениях, и соответствующие пути к ресурсам. Примените путь к ресурсу для сценария, как указано при создании подписки. Тип полезных данных пути к ресурсу — это тип в столбце "Ресурс" или в коллекции этого типа.
Примечание.
Подписки на ресурсы, помеченные звездочкой (*
), доступны только в конечной точке /beta
.
Ресурс | Поддерживаемые пути ресурсов | Можно ли данные ресурсов включать в уведомления |
---|---|---|
Вызовы TeamsRecording | Все записи в организации: communications/onlineMeetings/getAllRecordings Все записи для определенного собрания: communications/onlineMeetings/{onlineMeetingId}/recordings Запись звонка, которая становится доступной на собрании, организованном определенным пользователем: users/{userId}/onlineMeetings/getAllRecordings Запись звонка, которая становится доступной на собрании, где установлено определенное приложение Teams: appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings * |
Да |
Вызов TeamsTranscript | Все расшифровки в организации: communications/onlineMeetings/getAllTranscripts Все расшифровки для определенного собрания: communications/onlineMeetings/{onlineMeetingId}/transcripts Расшифровка звонка, которая становится доступной на собрании, организованном определенным пользователем: users/{userId}/onlineMeetings/getAllTranscripts Расшифровка звонка, которая становится доступной на собрании, где установлено определенное приложение Teams: appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllTrancripts * |
Да |
Канал Teams | Изменения каналов во всех командах:/teams/getAllChannels Изменения канала в определенной команде: /teams/{id}/channels |
Да |
Чат Teams | Изменения в любом чате в клиенте:/chats Изменения в конкретном чате: /chats/{id} Изменения в любом чате в клиенте, где установлено определенное приложение Teams: /appCatalogs/teamsApps/{id}/installedToChats |
Да |
chatMessage Teams | Изменения в сообщениях чата во всех каналах во всех командах:/teams/getAllMessages Изменения в сообщениях чата на определенном канале: /teams/{id}/channels/{id}/messages Изменения в сообщениях чата во всех чатах: /chats/getAllMessages Изменения в сообщениях чата в конкретном чате: /chats/{id}/messages Изменения в сообщениях чата во всех чатах, в которых участвует конкретный пользователь: /users/{id}/chats/getAllMessages Изменения в сообщениях чата во всех чатах в клиенте, где установлено определенное приложение Teams: /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages |
Да |
conversationMember в Teams | Изменения участия в определенной команде:/teams/{id}/members Изменения участия в определенном чате: /chats/{id}/members Изменения участия во всех чатах: /chats/getAllMembers Изменения участия во всех каналах определенной команды: teams/{id}/channels/getAllMembers Изменения членства во всех чатах в клиенте, где установлено определенное приложение Teams: /appCatalogs/teamsApps/{id}/installedToChats/getAllMembers Изменения членства во всех каналах в клиенте: teams/getAllChannels/getAllMembers |
Да |
Команда Teams | Изменения в любой команде в клиенте:/teams Изменения в конкретной команде: /teams/{id} |
Да |
Teams teamsAppInstallation | Изменения при установке, обновлении или удалении определенного приложения Teams:/appCatalogs/teamsApps/{teams-app-id}/installations |
Да |
Полезные данные уведомлений
Вы можете получать уведомление с данными ресурса или без нее в зависимости от подписки. Подписка с данными ресурса позволяет получить полезные данные сообщения и уведомление, устраняя необходимость обратного вызова и получения содержимого.
Уведомления с данными ресурсов
Для уведомлений с данными ресурсов полезные данные выглядят следующим образом. Эти полезные данные предназначены для уведомления, соответствующего ресурсу сообщения чата. Фактическое уведомление включает свойства resource и resourceData, представляющие ресурс, который вызвал уведомление.
{
"value": [{
"subscriptionId": "10493aa0-4d29-4df5-bc0c-ef742cc6cd7f",
"changeType": "created",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-02-02T10:30:34.9097561-08:00",
"resource": "chats('19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces')/messages('1612289765949')",
"resourceData": {
"id": "1612289765949",
"@odata.type": "#Microsoft.Graph.chatMessage",
"@odata.id": "chats('19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces')/messages('1612289765949')"
},
"encryptedContent": {
"data": "<<--EncryptedContent-->",
"dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
"encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
"encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
},
"tenantId": "<<--TenantForWhichNotificationWasSent-->>"
}],
"validationTokens": ["<<--ValidationTokens-->>"]
}
Дополнительные сведения о проверке маркеров и расшифровке полезных данных см. в статье Настройка уведомлений об изменениях, включающих данные ресурсов.
Расшифрованные полезные данные уведомления выглядят следующим образом. Расшифрованные полезные данные в предыдущем примере соответствуют схеме chatMessage. Полезные данные похожи на результаты, возвращаемые операциями GET.
{
"id": "1612289992105",
"replyToId": null,
"etag": "1612289992105",
"messageType": "message",
"createdDateTime": "2021-02-02T18:19:52Z",
"lastModifiedDateTime": "2021-02-02T18:19:52.105Z",
"lastEditedDateTime": null,
"deletedDateTime": null,
"subject": null,
"summary": null,
"chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces",
"importance": "normal",
"locale": "en-us",
"webUrl": null,
"from": {
"application": null,
"device": null,
"user": {
"id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
"displayName": "Ramjot Singh",
"userIdentityType": "aadUser"
},
"conversation": null
},
"body": {
"contentType": "text",
"content": "test"
},
"channelIdentity": null,
"attachments": [],
"mentions": [],
"policyViolation": null,
"reactions": [],
"replies": [],
"hostedContents": []
}
Уведомления без данных ресурса
Уведомления без данных ресурса предоставляют достаточно сведений, чтобы выполнить вызов GET для получения ресурса. Подпискам на уведомления без данных ресурса не требуется сертификат шифрования (так как фактические данные ресурса не отправляются).
Полезные данные выглядят следующим образом. Это полезные данные для сообщения, отправленного в канале.
{
"subscriptionId": "9f9d1ed0-c9cc-42e7-8d80-a7fc4b0cda3c",
"changeType": "created",
"tenantId": "<<--TenantForWhichNotificationWasSent-->>",
"clientState": "<<--SpecifiedClientState-->>",
"subscriptionExpirationDateTime": "2021-02-02T11:26:41.0537895-08:00",
"resource": "teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2')/messages('1612293113399')",
"resourceData": {
"id": "1612293113399",
"@odata.type": "#Microsoft.Graph.chatMessage",
"@odata.id": "teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2')/messages('1612293113399')"
}
}
В предыдущем примере показано уведомление, соответствующее ресурсу сообщений чата. Фактическое уведомление включает свойства resource и resourceData, представляющие ресурс, который вызвал уведомление. Свойства resource и @odata.id можно использовать для вызовов в Microsoft Graph, чтобы получить полезные данные ресурса.
Примечание.
Вызовы GET всегда возвращают текущее состояние ресурса. Если ресурс изменяется между отправкой уведомления и получением ресурса, операция возвращает обновленный ресурс.
Связанные материалы
- Уведомления об изменениях в Microsoft Graph
- Получение уведомлений об изменениях команд и каналов с помощью Microsoft Graph
- Получение уведомлений об изменениях участников в командах и каналах с помощью Microsoft Graph
- Получение уведомлений об изменениях сообщений в каналах и чатах Teams с помощью Microsoft Graph
- Получение уведомлений об изменениях чатов с помощью Microsoft Graph
- Получение уведомлений об изменениях участников чата с помощью Microsoft Graph
- Обзор API Microsoft Teams
- Получение уведомления об изменениях для расшифровок и записей собраний с помощью Microsoft Graph