Microsoft Teams リソースの通知を変更する
Microsoft Graph を使用してMicrosoft Teamsリソースの変更通知を使用すると、リソースの変更 (作成、更新、削除) をサブスクライブできます。 変更通知は待機時間の短いモデルを提供し、サブスクリプションを維持 できます。 通知でリソース データを取得し、API を呼び出してペイロードを取得しないようにすることもできます。
注:
サブスクリプションが持続できる最大時間は 60 分です。ただし、サブスクリプションは、呼び出し元がリソースにアクセスするアクセス許可を持つまで更新できます。
変更通知の種類
Microsoft Teams は、次の 2 種類の変更通知をサポートしています。
テナント全体のリソースに関するすべての変更を追跡するための変更通知: たとえば、テナント全体のすべてのチャネルのメッセージの変更を購読し、テナント内のチャネルでメッセージが作成、更新、または削除されるたびに通知を受け取ることができます。 これらの通知には、メッセージやメンバーシップの変更通知など、ライセンスと支払いの要件がある場合があります。
特定のリソースのすべての変更を追跡するための変更通知: たとえば、特定のチャネルのメッセージの変更をサブスクライブし、メッセージが作成、更新、または削除されるたびに通知を受け取ることができます。
リソースでサポートされている変更通知の種類の詳細については、「Microsoft Graph の変更通知」を参照してください。
サポートされているリソース
次の表に、変更通知をサポートするMicrosoft Teams リソースとそれに対応するリソース パスを示します。 サブスクリプションの作成時に指定したシナリオのリソース パス を適用します。 リソース パス ペイロードの型は、"Resource" 列の下の型、またはその型のコレクションです。
注:
アスタリスク (*
) でマークされたリソースへのサブスクリプションは、 /beta
エンドポイントでのみ使用できます。
リソース | サポートされるリソースのパス | 通知には、リソース データを含めることができます。 |
---|---|---|
Teams callRecording | organization内のすべての録音:communications/onlineMeetings/getAllRecordings 特定の会議のすべての記録: communications/onlineMeetings/{onlineMeetingId}/recordings 特定のユーザーが開催した会議で使用できる通話記録: users/{userId}/onlineMeetings/getAllRecordings 特定の Teams アプリがインストールされている会議で使用できる通話記録: appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings * |
はい |
Teams callTranscript | organization内のすべてのトランスクリプト: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 |
はい |
Teams chatMessage | すべてのチームのすべてのチャンネル内のチャット メッセージに対する変更:/teams/getAllMessages 特定のチャンネル内のチャット メッセージに対する変更: /teams/{id}/channels/{id}/messages すべてのチャット内のチャット メッセージに対する変更: /chats/getAllMessages 特定のチャット内のチャット メッセージに対する変更: /chats/{id}/messages 特定のユーザーが含まれるすべてのチャットでのチャット メッセージの変更: /users/{id}/chats/getAllMessages 特定の Teams アプリがインストールされているテナント内のすべてのチャット内のチャット メッセージに対する変更: /appCatalogs/teamsApps/{id}/installedToChats/getAllMessages |
はい |
Teams conversationMember | 特定のチームのメンバーシップに対する変更:/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 を使用して、チームおよびチャネルのメンバーシップの変更に関する変更通知を受け取る
- Microsoft Graph を使用して、Teams チャネルおよびチャットのメッセージの変更通知を受け取る
- Microsoft Graph を使用して、チャット向けメッセージの変更通知を受け取る
- Microsoft Graph を使用して、チャット メンバー向けメッセージの変更通知を受け取る
- Microsoft Teams API の概要
- Microsoft Graph を使用して会議のトランスクリプトとレコーディングの変更通知を取得する