Microsoft Teams で会議の通話の更新に関する変更通知を取得する

Microsoft Graph の変更通知により、Microsoft Teams オンライン会議の通話開始/終了および通話名簿の更新を購読することができます。 変更通知は、サブスクリプションを維持できるようにすることで、待機時間の短いモデルを提供します。 通知のリソース データを取得することもできます。したがって、API を呼び出してペイロードを取得する必要はありません。

サブスクリプションの有効期限の上限は 3 日です。 この期間を超えてサブスクリプションを保持するには、サブスクリプションの更新要求を行う必要があります。 詳細については、「 サブスクリプションの更新」を参照してください。 または、ユーザーはサブスクリプションの有効期限が切れるのを待ち、同じ会議リソースを使用して新しいサブスクリプションを作成することもできます。

会議の通話イベントの変更通知を取得するには、 をサブスクライブします /communications/onlineMeetings/?$filter=JoinWebUrl eq '{JoinWebUrl}'

このリソースは、リソース データを使用した通知をサポートします。 リソース データを使用した通知の設定の詳細については、「リソース データを 含む変更通知を設定する」を参照してください。

アクセス許可

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

POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json

{
  "changeType": "updated",
  "notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
  "resource": "/communications/onlineMeetings/?$filter=JoinWebUrl eq '{JoinWebUrl}'",
  "includeResourceData": true,
  "encryptionCertificate": "{base64encodedCertificate}",
  "encryptionCertificateId": "{customId}",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "{secretClientState}"
}

注:

リソースを指定する場合は、 を実際の値に置き換えます {JoinWebUrl} 。 会議の JoinWebURL は、onlineMeeting リソースの joinWebUrl プロパティ、または会議の Teams クライアントに含まれます。

暗号化されたリソース データを使用した通知

{
  "value": [{
    "subscriptionId": "{Subscription id}",
    "clientState": "{secret client state}",
    "changeType": "updated",
    "tenantId": "{Organization/Tenant id}",
    "resource": "communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
    "subscriptionExpirationDateTime": "2022-02-28T00:00:00.0000000Z",
    "resourceData": {
      "@odata.id": "communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
      "@odata.type": "#microsoft.graph.onlineMeeting",
      "id": "communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'"
    },
    "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}"]
}

トークンを検証してペイロードを復号化する方法の詳細については、「リソース データを含む変更通知を設定する」を参照してください。

イベント通知の種類

サポートされている会議イベントを次に示します。

  • CallStarted - 会議の呼び出しが開始されたときに発生します。
  • CallEnded - 会議の呼び出しが終了したときに発生します。
  • CallRosterUpdate - 参加者が会議の通話に参加または終了したときに発生します。

暗号化解除されたペイロードの例

CallStarted

{
  "@odata.type":"#Microsoft.Graph.onlineMeeting",
  "@odata.id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "eventType":"{Microsoft.Communication.CallStarted}",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
  "state":"active"
}

CallEnded

{
  "@odata.type":"#Microsoft.Graph.onlineMeeting",
  "@odata.id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "eventType":"{Microsoft.Communication.CallEnded}",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
  "state":"inactive"
}

CallRosterUpdate

{
  "@odata.type":"#Microsoft.Graph.onlineMeeting",
  "@odata.id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "eventType":"Microsoft.Communication.CallRosterUpdate",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
  "activeParticipants@joined": [
    {
      "Id": "a4d67b60-56a5-4202-9f1c-f123ff40621e",
      "Identity": 
      {
        "User": 
        {
          "Id": "f92ca67f-0564-414b-8caa-8c95b8099928",
          "DisplayName": "user display name",
          "TenantId": "85045508-f5bd-405e-a553-52700f86e29c"
        }
      }
    }
  ],
  "activeParticipants@exited": [
    {
      "Id": "11141402-1b62-4795-b540-4ffee8544231",
      "Identity": 
      {
        "AzureCommunicationServicesUser": 
        {
          "AzureCommunicationServicesResourceId": "534c244d-49f8-47a1-9e8e-70d115a2ef4d",
          "Id": "8:acs:534c244d-49f8-47a1-9e8e-70d115a2ef4d_28f01a7b-42cd-4e37-ae1a-bd653377f4b7",
          "DisplayName": "acs user display name"
        }
      }
    }
  ]
}

CallRosterUpdate イベントには 2 つのプロパティが含まれます 。activeParticipants@joined 、会議通話に追加された参加者と、会議通話を離れる参加者の activeParticipants@exited を示します。

アクティブな参加者は次のように表されます。

{
  "Id": "string",
  "Identity": "microsoft.graph.communicationsIdentitySet"
}
  • Id プロパティは、会議の呼び出しで各参加者に割り当てられた一意の識別子である参加者 ID に対応します。
  • Identity プロパティは communicationsIdentitySet に対応します。 詳細については、「 communicationsIdentitySet リソースの種類」を参照してください。