はじめに
ユーザーが Teams で行った通話の情報は一定時間保持され、管理者が確認できます。保持期間が過ぎると情報は削除され確認することができません。
Teams の通話情報を Azure 上の Log Analytics Workspace へ転送することで、長期間情報を保存することができ、また Azure Monitor や Azure Sentinel からも参照することができます。
Teams の通話情報を Log Analytics Workspace へ保存する方法についてまとめてみました。
※ 関連記事
CallRecord について
ユーザーが Teams で行った通話を終了すると、通話レコード (CallRecord) が生成します。CallRecord は 30 日間保持されます。
CallRecord には以下のような情報が含まれています。
- 通話の開始/終了日時
- 発信先/発信元ユーザー (外線電話の場合は電話番号)
- 通話の種類 (1:1/グループ通話)
- ネットワーク品質 (Jitter/Packet loss rate など)
CallRecord は Graph API で取得することできます。取得した CallRecord を Log Analytisc Workspace に保存することで、長期間情報を保持することができます。
(参考:Microsoft Graph で通話レコード API を操作する)
https://learn.microsoft.com/ja-jp/graph/api/resources/callrecords-api-overview?view=graph-rest-1.0
(参考:callRecord の取得)
https://learn.microsoft.com/ja-jp/graph/api/callrecords-callrecord-get?view=graph-rest-1.0&tabs=http
CallRecord を Log Analytics Workspace へ保存する
通話の終了後に自動的に CallRecord を Log Analytics Workspace へ保存するには、Graph API 変更通知を利用します。
変更通知により Logic App を呼び出し、Logic App から Log Analytics Workspace へ CallRecord を保存します。
(参考:Microsoft Teams通話レコードの変更通知を取得する)
https://learn.microsoft.com/ja-jp/graph/changenotifications-for-callrecords
(参考:Secure your Calls- Monitoring Microsoft TEAMS CallRecords Activity Logs using Azure Sentinel)
https://techcommunity.microsoft.com/blog/microsoftsentinelblog/secure-your-calls--monitoring-microsoft-teams-callrecords-activity-logs-using-az/1574600
何らかの理由で Logic App 側の処理が失敗した場合、Graph API 変更通知の再送処理で最大 4 時間かけて通知がリトライされます。
※ 関連記事
事前準備
以下のような事前準備を行います。
- Entra ID アプリケーションの登録とアクセス許可の追加
- Logic App と Log Analytics Workspace の作成
- Graph API 変更通知の有効化
1. Entra ID アプリケーションの登録とアクセス許可の追加
Entra ID アプリケーションの登録とアクセス許可の追加手順の詳細については、以下の記事をご参照ください。
アプリケーションにはアクセス許可として CallRecords.Read.All アプリケーション許可権限を追加します。
※ (1.1 Entra ID へのアプリケーションの登録)
※ (2.1.3 アクセス許可の追加方法)
2. Logic App と Log Analytics Workspace の作成
Logic App と Log Analytics Workspace の作成手順の詳細については、以下の記事をご参照ください。
※ (1.1 Logic Apps の作成)
※ (1. Log Analytics ワークスペースの作成)
変更通知を受信する Logic App で以下のアクションを実行します。
2.1 通知された CallRecordID を変数の値に設定
2.2 CallRecordID を基に Graph API を実行して CallRecord の情報を取得
2.3 取得した CallRecord を Log Analytics Workspace へ保存
2.1 通知された CallRecordID を変数の値に設定
変更通知では生成した CallRecordの ID が通知されます。以下のように ID を取得し変数に設定します。
2.2 CallRecordID を基にアプリケーション許可権限で Graph API を実行して CallRecord の情報を取得
2.1 で設定した ID を指定して、CallRecord の情報を Graph API で取得します。
- URI
https://graph.microsoft.com/beta/communications/callRecords/@{variables('callRecordID')}?$expand=sessions($expand=segments)
URI では $expand で sessions/segments も併せて取得するように指定しています。sessions/segments にはネットワーク品質などの詳細な情報が含まれています。
[Authentication] 欄には 1 で登録した Entra ID アプリケーションの情報を入力します。
(参考:セッション リソースの種類)
https://learn.microsoft.com/ja-jp/graph/api/resources/callrecords-session?view=graph-rest-1.0
(参考:セグメント リソースの種類)
https://learn.microsoft.com/ja-jp/graph/api/resources/callrecords-segment?view=graph-rest-1.0
3. 取得した CallRecord を Log Analytics Workspace へ保存
2.2 で取得した CallRecord を Log Analytics Workspace へ保存します。[Custom Log Name] には任意の名前を設定します。ここでは "TeamsGraphCallRecords" としています。
3. Graph API 変更通知の有効化
Graph API 変更通知の有効化手順の詳細については、以下の記事をご参照ください。
※ (2. サブスクリプションの作成)
以下は CallRecord の変更通知のサブスクリプションを作成する PowerShell コマンドの例です。
$params = @{
"changeType" = "created,updated"
"notificationUrl" = "<2で作成したLogic AppのHTTPトリガーのURL>"
"resource" = "/communications/callRecords"
"expirationDateTime" = "2025-08-30T11:30:00Z"
"clientState" = "xxx"
"lifecycleNotificationUrl" = "<2で作成したLogic AppのHTTPトリガーのURL>"
}
Invoke-MgGraphRequest -Method POST -Uri "/v1.0/subscriptions" -Body $params
CallRecord の変更通知を受け取るには "resource" に "/communications/callRecords" を指定します。
(参考:Microsoft Teams通話レコードの変更通知を取得する)
https://learn.microsoft.com/ja-jp/graph/changenotifications-for-callrecords
CallRecord の確認
準備がすべて完了すると、Teams で通話した後に自動的に Log Analytics Workspace の "TeamsGraphCallRecords_CL" テーブルへ CallRecord が保存されていることが確認できます。
CallRecord の見方
通話の開始、終了時刻
通話の開始、終了時刻は "startDateTime_t" / "endDateTime_t" から確認できます。
通話の参加者
通話の参加者は "participants_s" から確認できます。
外線電話の場合
外線電話の場合は電話番号を確認できます。
通話の種類
通話の種類は "type_s" から確認できます。
ネットワーク品質
ネットワーク品質は "session_s" - "segments" - "media" と展開していくと確認できます。
"averageJitter" / "averagePacketLossRate" / "averageRoundTripTime" などのネットワーク品質に関する指標を確認することができます。

















