Microsoft Teams でのプレゼンス更新の変更通知を受け取る

Microsoft Graph の変更通知を使用すると、Microsoft Teams の ユーザー プレゼンス 情報の変更をサブスクライブできます。 変更通知は、 GET プレゼンス API と POST getPresencesByUserId API を使用したプレゼンスポーリングの代替手段を提供します。

Webhook を使用してユーザーのプレゼンス情報をサブスクライブし、変更が発生したときに通知を受け取ります。 Webhook の一般的な情報については、「Microsoft Graph API の変更通知」を参照してください。

注:

2024 年 6 月 30 日より、アクティブな会議通話に発生した変更を取得するには、 リッチ通知を購読することをお勧めします。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国

アクセス許可

アクセス許可の種類 アクセス許可 (特権の小さいものから大きいものへ) サポートされるバージョン
委任 (職場または学校のアカウント) Presence.Read.All. V1、ベータ版。
委任 (個人用 Microsoft アカウント) サポートされていません。 サポートされていません。
アプリケーション サポートされていません。 サポートされていません。

プレゼンスでサポートされているリソース

1 人のユーザーが、固有のアプリケーションごとに 1 つのプレゼンス サブスクリプションを作成し、最大有効期限は 1 時間です。 サブスクリプションは、有効期限が切れる前に更新サブスクリプション API を使用して更新できます。または、有効期限が切れた後に同じリソースに対して新しいサブスクリプションを作成できます。 プレゼンス サブスクリプションでは、リソース データを含む通知がサポートされるため、変更通知と共に、より詳細な情報を配信できます。 詳細については、「 リソース データを使用した変更通知の設定」を参照してください。

次の表に、サブスクライブできるプレゼンス変更の種類を示します。 詳細については、「 サブスクリプションの作成」を参照してください。

プレゼンス サブスクリプションの種類 リソース URL サポートされている変更の種類
シングル ユーザーのプレゼンスの変更 communications/presences/{id} 更新あり
一括ユーザーのプレゼンス変更 (最大 650 ユーザー ID) communications/presences?$filter=id in ('{id}', '{id}', ...) 更新あり

プレゼンスの変更をサブスクライブする

プレゼンスの変更をサブスクライブするには、サブスクリプション ペイロードのリソースを communications/presences/{id} に設定できます。ここで、{id} フィールドをユーザーのプレゼンスのユーザー ID GUID に置き換える必要があります。 このサブスクリプションでは、ユーザーのプレゼンスが変更されたときの変更通知が配信されます。

includeResourceDatatrue に設定し、encryptionCertificateencryptionCertificateIdがリッチ通知をサブスクライブするための適切な値を指定します。

例: シングル ユーザー プレゼンス サブスクリプションのペイロード

{
    "changeType": "updated",
    "notificationUrl": "https://webhook.contoso.com/api",
    "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
    "resource": "communications/presences/{id}",
    "expirationDateTime": "2023-09-14T10:00:00.0000000Z",
    "includeResourceData": true,
    "encryptionCertificate": "{encryption certificate}",
    "encryptionCertificateId": "{certificate id}",
    "clientState": "{secret client state}"
}

複数のユーザーのプレゼンスをサブスクライブする

ユーザー プレゼンスの一括サブスクリプションを作成するには、サブスクリプション リソース値を /communications/presences?$filter=id in ('{id}', '{id}',...) に設定します。ここで、{id} はユーザーのユーザー ID GUID を表します。 1 つのサブスクリプションで最大 650 人のユーザーをサブスクライブできます。 ユーザー ID のプレゼンスの変更により通知が生成されます。

例: 複数のユーザー プレゼンス サブスクリプションのペイロード

{
    "changeType": "updated",
    "notificationUrl": "https://webhook.contoso.com/api",
    "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
    "resource": "/communications/presences?$filter=id in ('{id}', '{id}',...)",
    "expirationDateTime": "2023-09-14T10:00:00.0000000Z",
    "includeResourceData": true,
    "encryptionCertificate": "{encryption certificate}",
    "encryptionCertificateId": "{certificate id}",
    "clientState": "{secret client state}"
}

プレゼンス イベント通知を受信する

プレゼンス イベントの変更通知は、ユーザーの空き時間情報とアクティビティに変更が加えられるとトリガーされます。

基本的なプレゼンス通知

基本通知は、変更されたリソースの ID についてサブスクライバーに通知します。 この情報を受け取ったら、別の GET 呼び出しを実行してデータの詳細を取得する必要があります。 基本的なプレゼンス通知では、どのユーザーのプレゼンスを変更したかについての情報は受信しますが、ユーザーのプレゼンスの詳細に関するデータは受信しません。 GET プレゼンス API を使用して、ユーザーの可用性とアクティビティの状態を検出できます。

ペイロードの例

{
  "value": [{
    "subscriptionId": "{Subscription id}",
    "clientState": "{secret client state}",
    "changeType": "updated",
    "tenantId": "{Organization/Tenant id}",
    "resource": "communications/presences/{id}",
    "subscriptionExpirationDateTime": "2023-09-14T10:00:00.0000000Z",
    "resourceData": {
      "@odata.id": "users/{User Id}/presence",
      "@odata.type": "#microsoft.graph.presence",
      "id": "{User Id}"
    },
    "organizationId": "{Organization/Tenant id}",
  }]
}

リッチ プレゼンス通知

リッチ通知は、リソースに対して発生した変更についてサブスクライバーに通知します。 リッチ プレゼンス通知の場合、encryptedContent.dataでユーザーのAvailabilityActivityが変更されると、サブスクライバーに通知されます。 リッチ通知のサブスクライブとデータの暗号化解除の詳細については、「 リソース データを含む変更通知を設定する」を参照してください。

注:

可用性とアクティビティは同じ値をにすることができます。

可用性とアクティビティの可能な組み合わせの詳細については、「 プレゼンスのプロパティ」を参照してください。

ペイロードの例

{
  "value": [{
    "subscriptionId": "{Subscription id}",
    "clientState": "{secret client state}",
    "changeType": "updated",
    "tenantId": "{Organization/Tenant id}",
    "resource": "communications/presences/{id}",
    "subscriptionExpirationDateTime": "2023-09-14T10:00:00.0000000Z",
    "resourceData": {
      "@odata.id": "users/{User Id}/presence",
      "@odata.type": "#microsoft.graph.presence",
      "id": "{User Id}"
    },
    "organizationId": "{Organization/Tenant id}",
    "encryptedContent": {
      "data": "{Encrypted content}",
      "dataSignature": "{Encrypted data signature}",
      "dataKey": "{Encrypted data key for encrypting content}",
      "encryptionCertificateId": "{User specified id of encryption certificate}",
      "encryptionCertificateThumbprint": "{Encrpytion certification thumbprint}"
    }
  }],
  "validationTokens": ["{Validation Tokens}"]
}

例: リソース データを含む復号化された通知

{
    "@odata.id": "users/{User Id}/presence",
    "@odata.type": "#microsoft.graph.presence",
    "id": "{User Id}",
    "availability": "{Availability}",
    "activity": "{Activity}"
}