Azure Communication Services の音声通話およびビデオ通話のログ
Azure Communication Services には、Communication Services ソリューションを監視したり、デバッグしたりするために使用できるログ機能が用意されています。 これらの機能は、Azure portal を使用して構成します。
この記事の内容では、Azure Monitor を使用して有効にするログを指しています (よく寄せられる質問に関するページも参照)。 Communications Services 用にこれらのログを有効にする方法については、診断設定でのログの有効化に関するページを参照してください。
データの概念
次のデータ概念の概要は、音声通話とビデオ通話独自のものです。 ログにキャプチャされたデータの意味を理解できるように、これらの概念を確認することが重要です。
エンティティと ID
次の用語についてよく理解してください。
通話: データで表されているように、通話は
correlationId
によって示される抽象化です。correlationId
の値は通話ごとに一意であり、callStartTime
とcallDuration
に基づいて期限が設定されています。参加者: エンドポイントとサーバーの間の接続を表します。 参加者 (
participantId
) は、通話がグループ通話の場合にのみ存在します。エンドポイント:
endpointId
によって表される最も一意のエンティティです。 すべての通話は、2 つ以上のエンドポイントからのデータを含むイベントです。 エンドポイントは、通話の参加者を表します。EndpointType
は、エンドポイントが人間のユーザー (PSTN、VoIP) であるか、ボットであるか、あるいは通話内の複数の参加者を管理しているサーバーであるかを示しています。endpointType
値が"Server"
である場合、エンドポイントに一意の ID は割り当てられません。endpointType
とendpointId
値の数を分析することで、通話に参加しているユーザーとその他の人間以外の参加者 (ボット、サーバー) の数を把握できます。Android、iOS のネイティブ SDK では、複数の通話でユーザーに対して同じ
endpointId
を再利用するため、セッション間のエクスペリエンスを把握できます。 このプロセスは、新しい通話ごとに常に新しいendpointId
が生成される Web ベースのエンドポイントとは異なります。ストリーム: 最もきめ細かいエンティティです。 方向 (受信または送信) と
mediaType
値 (Audio
やVideo
など) ごとにストリームが 1 つあります。
データの定義
使用状況ログ スキーマ
プロパティ | 説明 |
---|---|
Timestamp |
このログが生成されたときのタイム スタンプ (UTC)。 |
Operation Name |
ログ レコードに関連付けられている操作。 |
Operation Version |
Operation Name 操作が API を介して実行された場合に、操作に関連付けられた api-version 値。 この操作に対応する API がない場合、操作に関連付けられているプロパティが将来変更された場合に備えて、バージョンは操作のバージョンを表します。 |
Category |
イベントのログ カテゴリ。 カテゴリは、リソースのログを有効または無効にできる細分性です。 イベントの properties BLOB 内に表示されるプロパティは、ログ カテゴリとリソースの種類内で同じです。 |
Correlation ID |
相関性があるイベントの ID。 これを使用して、複数のテーブル間の相関イベントを識別できます。 |
Properties |
Communication Services のさまざまなモードに適用されるその他のデータ。 |
Record ID |
使用状況レコードの一意の ID。 |
Usage Type |
使用モード (例えば、チャット、PSTN、NAT など)。 |
Unit Type |
使用モードに基づく単位の種類 (例えば、分、メガバイト、メッセージなど)。 |
Quantity |
そのレコードに関して使用または消費された単位の数。 |
通話概要ログ スキーマ
通話概要ログには、すべての通話の主要なプロパティを識別するのに役立つデータが含まれます。 通話内の participantId
(ピア ツー ピア [P2P] 通話の場合は endpointId
) 値ごとに、異なる通話概要ログが作成されます。
重要
通話概要ログの参加者情報は、参加者テナントによって異なります。 参加者が Communication Services リソースと同じテナントに存在しない場合 (クロステナントとも呼ばれます)、SDK と OS のバージョンが編集されます。 クロステナントの参加者は、通話時に参加して共同作業するためにリソース テナントから招待された外部ユーザーに分類されます。
プロパティ | 説明 |
---|---|
time |
このログが生成されたときのタイム スタンプ (UTC)。 |
operationName |
ログ レコードに関連付けられている操作。 |
operationVersion |
operationName 操作が API を介して実行された場合に、操作に関連付けられた api-version 値。 この操作に対応する API がない場合、操作に関連付けられているプロパティが将来変更された場合に備えて、バージョンは操作のバージョンを表します。 |
category |
イベントのログ カテゴリ。 このプロパティは、リソースのログを有効または無効にできる細分性です。 イベントの properties BLOB 内に表示されるプロパティは、ログ カテゴリとリソースの種類内で同じです。 |
correlationId |
通話の一意の ID。 これは、1 回の通話中に接続するすべての参加者とエンドポイントからの相関イベントを識別し、さまざまなログのデータを結合するために使用できます。 Microsoft に対しサポート ケースを開く場合、トラブルシューティングの対象となる通話を簡単に識別できるよう、correlationId 値を使用します。 |
identifier |
ユーザーの一意の ID。 この ID には、Azure Communication Services ユーザー、Microsoft Entra ユーザー ID、Teams 匿名ユーザー ID、Teams ボット ID が可能です。 この ID を使用すると、ログにわたってユーザー イベントを関連付けることができます。 |
callStartTime |
いずれかのエンドポイントからの最初の接続試行に基づく、通話開始のタイムスタンプ。 |
callDuration |
2 つのエンドポイント間の最初に試行された接続と最後の接続の終了に基づいた通話の期間 (秒単位で表されます)。 |
callType |
要求の種類。 "P2P" または "Group" のいずれかが含まれます。 "P2P" 通話は、2 つのサーバー以外のエンドポイントのみの間の 1 対 1 の直接接続です。 "Group" 通話は、2 つを超えるエンドポイントがある通話、または接続前に "Group" 通話として作成された通話です。 |
teamsThreadId |
Teams スレッド ID。 この ID は、通話が Teams 会議として開催されている場合にのみ関係します。 Microsoft Teams と Azure Communication Services 間の相互運用性のユース ケースを表します。 この ID は、操作ログで公開されます。 この ID は、Chat API を通じて取得することもできます。 |
participantId |
"Participant" エンドポイント (endpointType = "Server" ) とサーバーの間の双方向接続を表すために生成された ID。 callType = "P2P" の場合、2 つのエンドポイントの間に直接接続があり、participantId 値は生成されません。 |
participantStartTime |
参加者による最初の接続試行の開始を示すタイムスタンプ。 |
participantDuration |
participantStartTime から、接続が終了したときのタイムスタンプまでの、秒での各参加者の接続時間。 |
participantEndReason |
参加者の接続が終了した理由。 (適切な場合) 各 participantId に対し、SDK が出力する Calling SDK エラー コードが含まれます。 |
endpointId |
通話に接続されている各エンドポイントを表す一意の ID。エンドポイントの種類は endpointType によって定義されます。 この値が null の場合、接続されているエンティティは Communication Services サーバー (endpointType = "Server" ) になります。 endpointId 値は、ネイティブ クライアントの場合は、複数の通話 (correlationId ) にわたって同じユーザーに対して保持される場合があります。 endpointId 値の数によって、通話概要ログの数が決まります。 各 endpointId 値に、概要ログが個別に作成されます。 |
endpointType |
この値は、この通話に接続されている各エンドポイントのプロパティを表します。 "Server" 、"VOIP" 、"PSTN" 、"BOT" 、または "Unknown" を含むことができます。 |
sdkVersion |
関連する各エンドポイントで使用される Communication Services Calling SDK バージョンを示すバージョン文字列 (たとえば、"1.1.00.20212500" )。 |
osVersion |
各エンドポイント デバイスのオペレーティング システムとバージョンを表す文字列。 |
participantTenantId |
参加者の ID に関連付けられた Microsoft テナントの ID。 このテナントは、Azure Communication Services リソースを所有する Azure テナントか、または Microsoft 365 ID の Microsoft テナントのどちらかです。 このフィールドは、クロステナントの編集をガイドするために使用されます。 |
participantType |
そのクライアント (Azure Communication Services または Teams) とその ID (Azure Communication Services または Microsoft 365) の組み合わせとしての参加者の説明。 指定できる値には、Azure Communication Services (Azure Communication Services ID と Azure Communication Services SDK)、Teams (Teams ID と Teams クライアント)、Teams 外部ユーザーとしての Azure Communication Services (Teams 通話または会議での Azure Communication Services ID と Azure Communication Services SDK)、Microsoft 365 ユーザーとしての Azure Communication Services (Microsoft 365 ID と Azure Communication Services クライアント)、Teams Voice Apps が含まれます。 |
pstnPartcipantCallType |
PSTN 参加者の種類と方向を表します。緊急通話、ダイレクト ルーティング、転送、着信転送などがあります。 |
ParticipantEndSubCode |
各 participantId 値に対して SDK で出力する (該当する場合) Calling SDK エラー サブコードを表します。 |
ResultCategory |
通話を終了する参加者のカテゴリを表します。 Success、ExpectedError、UnexpectedClientError、UnexpectedServerError の 4 つの値のいずれかを指定できます。 |
通話診断ログのスキーマ
通話診断ログは、各参加者のエンドポイントとメディア転送に関する重要な情報に提供します。 品質の問題を把握するのに役立つ測定値も提供します。
通話内のエンドポイントごとに、エンドポイント間の送信メディア ストリーム (オーディオ、ビデオなど) に通話診断ログが個別に作成されます。 P2P 通話の各ログには、各エンドポイントに関連する各送信ストリームに関するデータが含まれます。 グループ通話で、participantId
は、関連する送信ログを個別の参加者接続に結合するためのキー識別子として機能します。 通話診断ログはそのまま残り、参加者テナントに関係なく同じです。
Note
この記事で、P2P およびグループ通話は、クロステナントのすべての通話シナリオで、既定では同じテナント内にあります。 これらは、記事全体で適宜指定しています。
プロパティ | 説明 |
---|---|
operationName |
ログ レコードに関連付けられている操作。 |
operationVersion |
operationName 操作が API を介して実行された場合に、操作に関連付けられた api-version 値。 この操作に対応する API がない場合、操作に関連付けられているプロパティが将来変更された場合に備えて、バージョンは操作のバージョンを表します。 |
category |
イベントのログ カテゴリ。 このプロパティは、リソースのログを有効または無効にできる細分性です。 イベントの properties BLOB 内に表示されるプロパティは、ログ カテゴリとリソースの種類内で同じです。 |
correlationId |
通話の一意の ID。 これは、1 回の通話中に接続するすべての参加者とエンドポイントからの相関イベントを識別します。 Microsoft に対しサポート ケースを開く場合、トラブルシューティングの対象となる通話を簡単に識別できるよう、correlationId 値を使用します。 |
participantId |
"Participant" エンドポイント (endpointType = "Server" ) とサーバーの間の双方向接続を表すために生成された ID。 callType = "P2P" の場合、2 つのエンドポイントの間に直接接続があり、participantId 値は生成されません。 |
identifier |
ユーザーの一意の ID。 この ID には、Azure Communication Services ユーザー、Microsoft Entra ユーザー ID、Teams オブジェクト ID、Teams ボット ID が可能です。 この ID を使用すると、ログにわたってユーザー イベントを関連付けることができます。 |
endpointId |
通話に接続されている各エンドポイントを表す一意の ID。エンドポイントの種類は endpointType によって定義されます。 この値が null の場合、接続されているエンティティは Communication Services サーバーになります。 ネイティブ クライアントの場合、EndpointId は、複数の通話 (correlationId ) にわたって同じユーザーで保持される場合がありますが、クライアントが Web ブラウザーである場合は、通話ごとに一意になります。 |
endpointType |
この値は、各 endpointId インスタンスのプロパティを表します。 "Server" 、"VOIP" 、"PSTN" 、"BOT" 、"Voicemail" 、"Anonymous" 、または "Unknown" を含むことができます。 |
mediaType |
この文字列値は、各ストリーム内のエンドポイント間で送信されるメディアの種類を示します。 使用できる値には "Audio" 、"Video" 、"VBSS" (ビデオベースのスクリーン共有)、および "AppSharing" があります。 |
streamId |
mediaType と共に、同じ participantId 値のストリームを一意に識別するために使用できる一意でない整数。 |
transportType |
それぞれの participantId 値のネットワーク トランスポート プロトコルを示す文字列値。 "UDP" 、"TCP" 、または "Unrecognized" を含むことができます。 "Unrecognized" は、トランスポートの種類が TCP または UDP のどちらであるかをシステムで判定できなかったことを示します。 |
roundTripTimeAvg |
これは、participantDuration の期間内に、あるエンドポイントから別のエンドポイントに IP パケットが届くまでにかかる平均時間です。 このネットワーク伝達の遅延は、2 つのポイント間の物理的距離、光速、およびさまざまなルーターでその間に発生するオーバーヘッドが関係しています。 待ち時間は、一方向時間またはラウンドトリップ時間 (RTT) として測定されます。 その値はミリ秒で表されます。 500 ミリ秒を超える RTT は、通話品質に悪影響をおよぼします。 |
roundTripTimeMax |
グループ通話の participantDuration 期間中、または P2P 通話の callDuration 期間中にメディア ストリームに到達するために測定された最大 RTT (ミリ秒)。 |
jitterAvg |
連続するパケット間の遅延の変化の平均値。 Azure Communication Services では、バッファーリングによって一定レベルのジッターに対応できます。 ジッターがバッファリング (ほぼ 30 ミリ秒を超える jitterAvg 時間) を超えると、品質に悪影響を与える場合があります。 パケットが異なる速度で到着することで、スピーカーの音声がロボットのように聞こえます。 このメトリックは、グループ通話の participantDuration 期間、または P2P 通話の callDuration 期間の各メディア ストリームで測定されます。 |
jitterMax |
メディア ストリームごとにパケット間で測定される最大ジッター値です。 ネットワーク状態でバーストが発生すると、オーディオまたはビデオのトラフィック フローで問題が発生する場合があります。 |
packetLossRateAvg |
失われたパケットの平均割合です。 パケットの損失はオーディオ品質に直接影響します。 小さい、個々の失われたパケットはほとんど影響しないのに対し、バックツーバック バーストでの損失ではオーディオが完全に止まります。 ドロップされ、目的の宛先に到着しないパケットにより、メディアで欠落が発生します。 この状況により、音節や単語が欠損し、ビデオや共有が途切れる結果になります。 パケット損失率が10% (0.1) を超えると、品質に悪影響がある可能性が高くなります。 このメトリックは、グループ通話の participantDuration 期間、または P2P 通話の callDuration 期間の各メディア ストリームで測定されます。 |
packetLossRateMax |
この値は、グループ通話の participantDuration 期間または P2P 通話の callDuration 期間のメディア ストリームあたりの最大パケット損失率 (%) を表します。 ネットワーク状態でバーストが発生すると、オーディオまたはビデオのトラフィック フローで問題が発生する場合があります。 |
JitterBufferSizeAvg |
各メディア ストリームの期間中のジッター バッファーの平均サイズ。 ジッター バッファーとは、音声パケットを等間隔で音声プロセッサに収集、格納、送信できる共有データ領域です。 ジッター バッファーは、ジッターの影響に対抗するために使用されます。 ジッター バッファーは、静的または動的のいずれかです。 静的ジッター バッファーは固定サイズに設定されますが、動的ジッター バッファーはネットワークの状態に応じてサイズを調整できます。 ジッター バッファーの目的は、音声データとビデオ データの滑らかで途切れないストリームをユーザーに提供することです。 Web SDK では、この JitterBufferSizeAvg は通話中の jitterBufferDelay の平均値です。 jitterBufferDelay は、ジッター バッファーにとどまるオーディオ サンプルまたはビデオ フレームの期間です。 通常、 JitterBufferSizeAvg 値が 200 ミリ秒を超えると、品質に悪影響を与えます。 |
JitterBufferSizeMax |
各メディア ストリームの期間中に測定された最大ジッター バッファー サイズ。 通常、この値が 200 ミリ秒を超えると、品質に悪影響を与えます。 |
HealedDataRatioAvg |
オーディオ ストリームの期間中にヒーラーによって正常に再構築または回復された、失われたか、または破損したデータ パケットの平均割合 (%)。 修復データ比率は、VoIP システムで使用されるエラー修正手法の有効性の尺度です。 この値が 0.1 (10%) より大きい場合、ストリームは低品質と見なされます。 |
HealedDataRatioMax |
各メディア ストリームの期間中に測定された最大修復データ比率。 この値が 0.1 (10%) より大きい場合、ストリームは低品質と見なされます。 |
VideoFrameRateAvg |
ビデオ通話中/画面共有通話中に 1 秒あたりに送信されるビデオ フレームの平均数。 ビデオ フレーム レートは、ビデオ ストリームの品質と滑らかさに影響を与える可能性があり、一般的にフレーム レートが高いほどスムーズで滑らかな動きになります。 WebRTC ビデオの標準フレーム レートは通常 30 フレーム/秒 (fps) ですが、フレーム レートは、具体的な実装やネットワークの状態によって異なる場合があります。 この値がビデオ ストリームで 7 未満か、または画面共有ストリームで 1 未満である場合、ストリーム品質は低いと見なされます。 |
RecvResolutionHeight |
ビデオ通話中/画面共有通話中に送信される受信ビデオ ストリームの垂直サイズの平均値。 ピクセル単位で測定され、ビデオ ストリームの全体的な解像度と品質を決定する要因の 1 つです。 使用される特定の解像度は、通話に関係するデバイスの機能とネットワークの状態によって異なります。 この値がビデオ ストリームで 240 未満か、または画面共有ストリームで 768 未満である場合、ストリーム品質は低いと見なされます。 |
RecvFreezeDurationPerMinuteInMs |
受信ビデオ ストリーム/画面共有ストリームの 1 分あたりの平均フリーズ時間 (ミリ秒)。 フリーズは通常、ネットワークの状態が悪いことが原因で発生し、ストリームの品質を低下させる可能性があります。 この値がビデオ ストリームで 6,000 ミリ秒を超えるか、または画面共有ストリームで 25,000 ミリ秒を超える場合、ストリーム品質は低いと見なされます。 |
PacketUtilization |
特定のメディア ストリームに対して送受信されるパケット。 通常、通話が長いほど、値は大きくなります。 この値が 0 の場合は、メディアが流れていないことを示す可能性があります。 |
VideoBitRateAvg |
ビデオまたは画面共有ストリームの平均ビットレート (1 秒あたりのビット数)。 低いビットレート値は、ネットワーク接続に問題あることを示す場合があります。 必要な最小ビットレート (帯域幅) については、「ネットワーク帯域幅」を参照してください。 |
VideoBitRateMax |
ビデオまたは画面共有ストリームの最大ビットレート (1 秒あたりのビット数)。 低いビットレート値は、ネットワーク接続に問題あることを示す場合があります。 必要な最小ビットレート (帯域幅) については、「ネットワーク帯域幅」を参照してください。 |
StreamDirection |
メディア ストリームの方向。 受信または送信のいずれかです。 |
CodecName |
メディア ストリームの処理に使用されるコーデックの名前。 OPUS、G722、H264S、SATIN などがあります。 |
通話クライアント操作ログのスキーマ
通話クライアント操作ログは、通話に関係する呼び出しエンドポイントと参加者に関するクライアント側の情報を提供します。 これらのログは現在プレビュー段階であり、通話で発生したクライアント イベントや、通話中に顧客が実行するアクションを示します。
このログは、通話中に実行されたアクションに関する詳細情報を提供し、Azure Communication Services リソースの通話診断を使用して通話の問題を視覚化および調査するために使用できます。 通話診断の詳細
プロパティ | 説明 |
---|---|
CallClientTimeStamp |
SDK で操作が行われた時刻のタイムスタンプ (UTC)。 |
OperationName |
Calling SDK でトリガーされた操作の名前。 |
CallId |
通話の一意の ID。 これは、1 回の通話中に接続するすべての参加者とエンドポイントからの相関イベントを識別し、さまざまなログのデータを結合するために使用できます。 これは、通話概要ログや通話診断ログの correlationId に似ています。 |
ParticipantId |
各通話レッグ (グループ通話) または通話参加者 (ピア ツー ピア通話) の一意識別子。 この ID は、CallSummary ログ、CallDiagnostic ログ、CallClientOperations ログ、CallClientMediaStats ログ間の主な関連付けポイントです。 |
OperationType |
通話クライアント操作。 |
OperationId |
SDK 操作を識別する一意の GGUID。 |
DurationMs |
Calling SDK 操作が失敗または成功するまでにかかった時間。 |
ResultType |
操作の成功または失敗を記述するフィールド。 |
ResultSignature |
HTTP と同様の失敗または成功コード (200、500)。 |
SdkVersion |
使用されている Calling SDK のバージョン。 |
UserAgent |
ブラウザーまたはプラットフォームの Calling SDK に基づく標準ユーザー エージェント文字列が使用されます。 |
ClientInstanceId |
CallClient オブジェクトを識別する一意の GGUID。 |
EndpointId |
通話に接続されている各エンドポイントを表す一意の ID。endpointType によってエンドポイントの種類が定義されます。 値が null の場合、接続されたエンティティは Communication Services サーバーです (endpointType = "Server")。 ネイティブ クライアントの場合、endpointId 値は同じユーザーに対して複数の通話 (correlationId) にわたって保持される場合があります。 endpointId 値の数によって通話概要ログの数が決まります。 endpointId 値ごとに個別の概要ログが作成されます。 |
OperationPayload |
操作に応じて変化する動的ペイロードであり、より具体的な操作固有の詳細情報を提供します。 |
通話クライアント メディア統計時系列ログのスキーマ
通話クライアント メディア統計時系列ログは、通話に関係する個々の参加者間のメディア ストリームに関するクライアント側の情報を提供します。 これらのログは現在限定プレビュー段階であり、集計間隔が既定の 10 秒である参加者間のオーディオ、ビデオ、画面共有メディア ストリームに関する詳細な時系列データを提供します。 これらのログには、メディア ストリームの種類、方向、コーデック、ビットレートのプロパティ (max、min、average など) に関するきめ細かい時系列情報が含まれています。
このログは、参加者間のメディア ストリームの品質を理解するために、通話診断ログよりも詳細な情報を提供します。 Azure Communication Services リソースの通話診断を使用して、通話の品質の問題を視覚化および調査するために使用できます。 通話診断の詳細
プロパティ | 説明 |
---|---|
OperationName |
ログ レコードに関連付けられている操作。 |
CallId |
通話の一意の ID。 これは、1 回の通話中に接続するすべての参加者とエンドポイントからの相関イベントを識別し、さまざまなログのデータを結合するために使用できます。 これは、通話概要ログや通話診断ログの correlationId に似ています。 |
CallClientTimeStamp |
メディア統計が記録されたときのタイムスタンプ。 |
MetricName |
メディア統計の名前 (Bitrate 、JitterInMs 、PacketsPerSecond など)。 |
Count |
特定のタイムスタンプでサンプリングされたデータ ポイントの数。 |
Sum |
サンプリングされたすべてのデータ ポイントのメトリック値の合計。 |
Average |
サンプリングされたデータ ポイントの平均メトリック値。 Average = Sum / Count。 |
Minimum |
サンプリングされたすべてのデータ ポイントのメトリック値の最小値。 |
Maximum |
サンプリングされたすべてのデータ ポイントのメトリック値の最大値。 |
MediaStreamDirection |
メディア ストリームの方向。 send または receive を指定できます。 |
MediaStreamType |
メディア ストリームの種類。 video 、audio 、または screen を指定できます。 |
MediaStreamCodec |
メディア ストリームをエンコードまたはデコードするために使用されるコーデック (H264 、OPUS 、VP8 など)。 |
ParticipantId |
通話内の各エンドポイントを表すために生成される一意の ID。 |
ClientInstanceId |
Calling SDK で作成された通話クライアント オブジェクトを表す一意の ID。 |
EndpointId |
通話に接続されている各エンドポイントを表す一意の ID。 ネイティブ クライアントでは、複数の通話 (callIds ) にわたって EndpointId が同じユーザーに保持される場合がありますが、クライアントが Web ブラウザーであるときは通話ごとに一意です。 EndpointId は現在、このログでインストルメント化されていません。 実装されると、CallSummary/Diagnostics ログ内の値と一致します。 |
RemoteParticipantId |
メディア ストリーム内のリモート エンドポイントを表す一意の ID。 たとえば、ユーザーは、同じ通話で他のユーザーに対して複数のビデオ ストリームをレンダリングできます。 各ビデオ ストリームの RemoteParticipantId は異なります。 |
RemoteEndpointId |
EndpointId と同じですが、ストリームのリモート側にいるユーザーを表します。 |
MediaStreamId |
通話の各メディア ストリームを表す一意の ID。 MediaStreamId は現在、クライアントでインストルメント化されていません。 実装されると、CallDiagnostics ログ内の streamId 列と一致します。 |
AggregationIntervalSeconds |
メディア統計情報を集計する時間間隔。 Calling SDK では現在、メディア メトリックは 1 秒ごとにサンプリングされ、ログで報告されるときは、すべてのサンプルが 10 秒ごとに集計されます。 そのため、このテーブル内の各行のサンプリング ポイントは多くとも 10 個です。 |
P2P とグループ通話
通話には 2 種類あり、callType
で表されます。
ピア ツー ピア (P2P) 通話: サーバー エンドポイントのない 2 つのエンドポイントのみの間の接続。 P2P 通話は、それらのエンドポイント間の通話として開始され、接続の前にグループ通話イベントとして作成されるわけではありません。
グループ通話: 2 つ以上のエンドポイントが接続されているすべての通話。 グループ通話にはサーバー エンドポイントと、各エンドポイントとサーバー間の接続が含まれます。 通話中にさらにエンドポイントが追加される P2P 通話は、P2P ではなくなり、グループ通話になります。
participantStartTime
とparticipantDuration
のメトリックを使用して、各エンドポイントが通話に参加した時間のタイムラインを判断できます。
ログ構造
Azure Communication Services では、次の 4 種類のログが作成されます。
通話概要ログ: 関連するすべての ID、タイムスタンプ、エンドポイント、SDK 情報など、通話に関する基本情報が含まれます。 Communication Services は、通話内の参加者ごとに通話概要ログを個別に作成します。
誰かが通話に再び参加した場合、その参加者の
EndpointId
値は同じになりますが、ParticipantId
値は別のものになります。 その場合、そのエンドポイントには、通話概要ログが 2 つあります。通話診断ログ: ストリームに関する情報と、エクスペリエンス品質の測定値を示す一連のメトリックが含まれます。 通話内の各
EndpointId
(サーバーを含む) に対して、Azure Communication Services は、エンドポイント間の各メディア ストリーム (オーディオ、ビデオなど) に個別の通話診断ログを作成します。通話クライアント操作ログ: 詳細な通話クライアント イベントが含まれます。 これらのログ イベントは通話内の
EndpointId
ごとに生成され、生成されるイベント ログの数は、通話中に参加者が実行した操作によって異なります。通話クライアント メディア統計ログ: 詳細なメディア ストリーム値が含まれています。 これらのログは、通話のメディア ストリームごとに生成されます。 通話内の各
EndpointId
(サーバーを含む) に対して、Azure Communication Services は、エンドポイント間の各メディア ストリーム (オーディオ、ビデオなど) に個別のログを作成します。 各ログで生成されるデータの量は、通話時間と通話のメディア ストリームの数によって異なります。
P2P 通話の各ログには、各エンドポイントに関連する各送信ストリームに関するデータが含まれます。 グループ通話では、endpointType
= "Server"
に関連付けられている各ストリームによって、受信ストリームのデータを含むログが作成されます。 その他のすべてのストリームによって、サーバー以外のすべてのエンドポイントへの送信ストリームのデータを含むログが作成されます。 グループ通話で、キーとして participantId
を使用して、関連する受信/送信ログを個別の参加者接続に結合します。
例: P2P 通話
下の図は、P2P 通話で直接接続されている 2 つのエンドポイントを表しています。 この例で、Communication Services は、2 つの通話概要ログ (participantID
値ごとにそれぞれ 1 つ) と 4 つの通話診断ログ (メディア ストリームごとにそれぞれ 1 つ) を作成します。
Azure Communication Services 通話クライアント参加者の場合は、一連の通話クライアント操作ログと通話クライアント メディア統計時系列ログも存在します。 これらのログの正確な数は、呼び出される SDK 操作の種類や通話時間によって異なります。
例: グループ通話
次の図は、3 つの participantId
値 (つまり、3 人の参加者) とサーバー エンドポイントがあるグループ通話の例を表しています。 複数の endpointId
値が複数の参加者に表示される可能性があります。たとえば、同じデバイスから参加者が通話に再び参加する場合などです。 Communication Services は、participantId
値ごとに通話概要ログを 1 つ作成します。 通話診断ログも 4 つ作成します (それぞれの participantId
に対し、メディア ストリームごとに 1 つ)。
Azure Communication Services 通話クライアント参加者の場合、通話クライアント操作ログは P2P 通話と同じです。 Calling SDK を使用する参加者ごとに、一連の通話クライアント操作ログが存在します。
Azure Communication Services 通話クライアント参加者の場合、通話クライアント操作ログと通話クライアント メディア統計時系列ログは P2P 通話と同じです。 Calling SDK を使用する参加者ごとに、一連の通話クライアント操作ログと通話クライアント メディア統計時系列ログが存在します。
例: クロステナントの P2P 通話
次の図は、P2P 通話で直接接続されている複数のテナント間の 2 人の参加者を表しています。 この例では、Communication Services は、OS と SDK のバージョンが編集された通話概要ログ (参加者ごとに 1 つ) を 1 つ作成しています。 Communication Services は、通話診断ログも 4 つ作成しています (メディア ストリームごとに 1 つ)。 各ログには、participantID
の送信ストリームと関連するデータが含まれます。
例: クロステナントのグループ通話
次の図は、複数のテナントにわたり 3 つ participantId
値があるグループ通話の例を表しています。 Communication Services は、参加者ごとに OS と SDK のバージョンが編集された 1 つの通話概要ログを作成します。 Communication Services は、各 participantId
値と関連する 4 つの通話診断ログも作成します (メディア ストリームごとに 1 つ)。
Note
このリリースでは、送信診断ログのみがサポートされます。 Communication Services は、参加者とボットの ID を同じように扱うため、ボットと参加者に関連付けられている OS と SDK のバージョンは編集することができます。
サンプル データ
P2P 通話
P2P 通話のすべてのログで、次のフィールドが共有されます。
"time": "2021-07-19T18:46:50.188Z",
"resourceId": "SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/ACS-TEST-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-PROD-CCTS-TESTS",
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
通話概要ログ
通話概要ログでは、操作とカテゴリの情報が共有されます。
"operationName": "CallSummary",
"operationVersion": "1.0",
"category": "CallSummary",
VoIP ユーザー 1 の通話概要を次に示します。
"properties": {
"identifier": "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
"callStartTime": "2021-07-19T17:54:05.113Z",
"callDuration": 6,
"callType": "P2P",
"teamsThreadId": "null",
"participantId": "null",
"participantStartTime": "2021-07-19T17:54:06.758Z",
"participantDuration": "5",
"participantEndReason": "0",
"endpointId": "570ea078-74e9-4430-9c67-464ba1fa5859",
"endpointType": "VoIP",
"sdkVersion": "1.0.1.0",
"osVersion": "Windows 10.0.17763 Arch: x64"
}
VoIP ユーザー 2 の通話概要を次に示します。
"properties": {
"identifier": "acs:7af14122-9ac7-4b81-80a8-4bf3582b42d0_06f9276d-8efe-4bdd-8c22-ebc5434903f0",
"callStartTime": "2021-07-19T17:54:05.335Z",
"callDuration": 6,
"callType": "P2P",
"teamsThreadId": "null",
"participantId": "null",
"participantStartTime": "2021-07-19T17:54:06.335Z",
"participantDuration": "5",
"participantEndReason": "0",
"endpointId": "a5bd82f9-ac38-4f4a-a0fa-bb3467cdcc64",
"endpointType": "VoIP",
"sdkVersion": "1.1.0.0",
"osVersion": "null"
}
VoIP ユーザー 1 のクロステナント通話の概要ログを次に示します。
"properties": {
"identifier": "1e4c59e1-r1rr-49bc-893d-990dsds8f9f5",
"callStartTime": "2022-08-14T06:18:27.010Z",
"callDuration": 520,
"callType": "P2P",
"teamsThreadId": "null",
"participantId": "null",
"participantTenantId": "02cbdb3c-155a-4b95-b829-6d56a45787ca",
"participantStartTime": "2022-08-14T06:18:27.010Z",
"participantDuration": "520",
"participantEndReason": "0",
"endpointId": "02cbdb3c-155a-4d98-b829-aaaaa61d44ea",
"endpointType": "VoIP",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
PSTN 通話の通話概要を次に示します。
Note
P2P またはグループ通話ログでは、参加者のテナントかボットのテナントかに関係なく、OS と SDK のバージョンが編集されます。
"properties": {
"identifier": "b1999c3e-bbbb-4650-9b23-9999bdabab47",
"callStartTime": "2022-08-07T13:53:12Z",
"callDuration": 1470,
"callType": "Group",
"teamsThreadId": "19:36ec5177126fff000aaa521670c804a3@thread.v2",
"participantId": " b25cf111-73df-4e0a-a888-640000abe34d",
"participantStartTime": "2022-08-07T13:56:45Z",
"participantDuration": 960,
"participantEndReason": "0",
"endpointId": "8731d003-6c1e-4808-8159-effff000aaa2",
"endpointType": "PSTN",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
通話診断ログ
通話診断ログでは、操作情報が共有されます。
"operationName": "CallDiagnostics",
"operationVersion": "1.0",
"category": "CallDiagnostics",
VoIP エンドポイント 1 から VoIP エンドポイント 2 へのオーディオ ストリームの診断ログを次に示します。
"properties": {
"identifier": "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
"participantId": "null",
"endpointId": "570ea078-74e9-4430-9c67-464ba1fa5859",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "1000",
"transportType": "UDP",
"roundTripTimeAvg": "82",
"roundTripTimeMax": "88",
"jitterAvg": "1",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
VoIP エンドポイント 2 から VoIP エンドポイント 1 へのオーディオ ストリームの診断ログを次に示します。
"properties": {
"identifier": "acs:7af14122-9ac7-4b81-80a8-4bf3582b42d0_06f9276d-8efe-4bdd-8c22-ebc5434903f0",
"participantId": "null",
"endpointId": "a5bd82f9-ac38-4f4a-a0fa-bb3467cdcc64",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "1363841599",
"transportType": "UDP",
"roundTripTimeAvg": "78",
"roundTripTimeMax": "84",
"jitterAvg": "1",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
VoIP エンドポイント 1 から VoIP エンドポイント 2 へのビデオ ストリームの診断ログを次に示します。
"properties": {
"identifier": "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
"participantId": "null",
"endpointId": "570ea078-74e9-4430-9c67-464ba1fa5859",
"endpointType": "VoIP",
"mediaType": "Video",
"streamId": "2804",
"transportType": "UDP",
"roundTripTimeAvg": "103",
"roundTripTimeMax": "143",
"jitterAvg": "0",
"jitterMax": "4",
"packetLossRateAvg": "3.146336E-05",
"packetLossRateMax": "0.001769911"
}
グループ通話
グループ通話のデータは、3 つの通話概要ログと 6 つの通話診断ログに生成されます。 通話のすべてのログで共有されるフィールドを次に示します。
"time": "2021-07-05T06:30:06.402Z",
"resourceId": "SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/ACS-TEST-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-PROD-CCTS-TESTS",
"correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
通話概要ログ
通話概要ログでは、操作とカテゴリの情報が共有されます。
"operationName": "CallSummary",
"operationVersion": "1.0",
"category": "CallSummary",
VoIP エンドポイント 1 の通話概要を次に示します。
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-729f-ac00-343a0d00d975",
"callStartTime": "2021-07-05T06:16:40.240Z",
"callDuration": 87,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
"participantId": "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
"participantStartTime": "2021-07-05T06:16:44.235Z",
"participantDuration": "82",
"participantEndReason": "0",
"endpointId": "5ebd55df-ffff-ffff-89e6-4f3f0453b1a6",
"endpointType": "VoIP",
"sdkVersion": "1.0.0.3",
"osVersion": "Darwin Kernel Version 18.7.0: Mon Nov 9 15:07:15 PST 2020; root:xnu-4903.272.3~3/RELEASE_ARM64_S5L8960X"
}
VoIP エンドポイント 3 の通話概要を次に示します。
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-57c6-ac00-343a0d00d972",
"callStartTime": "2021-07-05T06:16:40.240Z",
"callDuration": 87,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLTk2ZDUtYTZlM2I2ZjgxOTkw@thread.v2",
"participantId": "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
"participantStartTime": "2021-07-05T06:16:40.240Z",
"participantDuration": "87",
"participantEndReason": "0",
"endpointId": "5ebd55df-ffff-ffff-ab89-19ff584890b7",
"endpointType": "VoIP",
"sdkVersion": "1.0.0.3",
"osVersion": "Android 11.0; Manufacturer: Google; Product: redfin; Model: Pixel 5; Hardware: redfin"
}
PSTN エンドポイント 2 の通話概要を次に示します。
"properties": {
"identifier": "null",
"callStartTime": "2021-07-05T06:16:40.240Z",
"callDuration": 87,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
"participantId": "515650f7-8204-4079-ac9d-d8f4bf07b04c",
"participantStartTime": "2021-07-05T06:17:10.447Z",
"participantDuration": "52",
"participantEndReason": "0",
"endpointId": "46387150-692a-47be-8c9d-1237efe6c48b",
"endpointType": "PSTN",
"sdkVersion": "null",
"osVersion": "null"
}
クロステナント通話概要ログを次に示します。
"properties": {
"identifier": "1e4c59e1-r1rr-49bc-893d-990dsds8f9f5",
"callStartTime": "2022-08-14T06:18:27.010Z",
"callDuration": 912,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
"participantId": "aa1dd7da-5922-4bb1-a4fa-e350a111fd9c",
"participantTenantId": "02cbdb3c-155a-4b95-b829-6d56a45787ca",
"participantStartTime": "2022-08-14T06:18:27.010Z",
"participantDuration": "902",
"participantEndReason": "0",
"endpointId": "02cbdb3c-155a-4d98-b829-aaaaa61d44ea",
"endpointType": "VoIP",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
ボットを参加者とするクロステナント通話の概要ログを次に示します。
"properties": {
"identifier": "b1902c3e-b9f7-4650-9b23-9999bdabab47",
"callStartTime": "2022-08-09T16:00:32Z",
"callDuration": 1470,
"callType": "Group",
"teamsThreadId": "19:meeting_MmQwZDcwYTQtZ000HWE6NzI4LTg1YTAtNXXXXX99999ZZZZZ@thread.v2",
"participantId": "66e9d9a7-a434-4663-d91d-fb1ea73ff31e",
"participantStartTime": "2022-08-09T16:14:18Z",
"participantDuration": 644,
"participantEndReason": "0",
"endpointId": "69680ec2-5ac0-4a3c-9574-eaaa77720b82",
"endpointType": "Bot",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
通話診断ログ
通話診断ログでは、操作情報が共有されます。
"operationName": "CallDiagnostics",
"operationVersion": "1.0",
"category": "CallDiagnostics",
VoIP エンドポイント 1 からサーバー エンドポイントへのオーディオ ストリームの診断ログを次に示します。
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-729f-ac00-343a0d00d975",
"participantId": "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
"endpointId": "5ebd55df-ffff-ffff-89e6-4f3f0453b1a6",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "14884",
"transportType": "UDP",
"roundTripTimeAvg": "46",
"roundTripTimeMax": "48",
"jitterAvg": "0",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
サーバー エンドポイントから VoIP エンドポイント 1 へのオーディオ ストリームの診断ログを次に示します。
"properties": {
"identifier": null,
"participantId": "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
"endpointId": null,
"endpointType": "Server",
"mediaType": "Audio",
"streamId": "2001",
"transportType": "UDP",
"roundTripTimeAvg": "42",
"roundTripTimeMax": "44",
"jitterAvg": "1",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
VoIP エンドポイント 3 からサーバー エンドポイントへのオーディオ ストリームの診断ログを次に示します。
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-57c6-ac00-343a0d00d972",
"participantId": "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
"endpointId": "5ebd55df-ffff-ffff-ab89-19ff584890b7",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "13783",
"transportType": "UDP",
"roundTripTimeAvg": "45",
"roundTripTimeMax": "46",
"jitterAvg": "1",
"jitterMax": "2",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
サーバー エンドポイントから VoIP エンドポイント 3 へのオーディオ ストリームの診断ログを次に示します。
"properties": {
"identifier": "null",
"participantId": "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
"endpointId": null,
"endpointType": "Server"
"mediaType": "Audio",
"streamId": "1000",
"transportType": "UDP",
"roundTripTimeAvg": "45",
"roundTripTimeMax": "46",
"jitterAvg": "1",
"jitterMax": "4",
"packetLossRateAvg": "0",
P2P およびグループ通話の通話クライアント操作ログと通話クライアント メディア統計ログ
通話クライアント操作ログと通話クライアント メディア統計時系列ログの場合、P2P 通話とグループ通話のシナリオに違いはなく、ログの数は SDK 操作や通話時間によって異なります。 次のコードは、これらのログのスキーマを示す一般的なサンプルです。
通話クライアント操作ログ
"CreateView" 操作の通話クライアント操作ログを次に示します。
"properties": {
"TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"TimeGenerated": "2024-01-09T17:06:50.3Z",
"CallClientTimeStamp": "2024-01-09T15:07:56.066Z",
"OperationName": "CreateView" ,
"CallId": "92d800c4-abde-40be-91e9-3814ee786b19",
"ParticipantId": "2656fd6c-6d4a-451d-a1a5-ce1baefc4d5c",
"OperationType": "client-api-request",
"OperationId": "0d987336-37e0-4acc-aba3-e48741d88103",
"DurationMs": "577",
"ResultType": "Succeeded",
"ResultSignature": "200",
"SdkVersion": "1.19.2.2_beta",
"UserAgent": "azure-communication-services/1.3.1-beta.1 azsdk-js-communication-calling/1.19.2-beta.2 (javascript_calling_sdk;#clientTag:904f667c-5f25-4729-9ee8-6968b0eaa40b). Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"ClientInstanceId": "d08a3d05-db90-415f-88a7-87ae74edc1dd",
"OperationPayload": "{"StreamType":"Video","StreamId":"2.0","Source":"remote","RemoteParticipantId":"remote"}",
"Type": "ACSCallClientOperations"
}
各参加者は、1 つの通話に対してさまざまなメトリックを持つ可能性があります。 Azure portal の Log Analytics で次のクエリを実行すると、通話クライアント操作ログ内の可能性のあるすべての操作を一覧表示できます。
ACSCallClientOperations | distinct OperationName
通話クライアント メディア統計時系列ログ
メディア統計時系列ログの例を次に示します。 これは、特定のタイムスタンプでのオーディオ ストリームの受信について、参加者のジッター メトリックを示しています。
"properties": {
"TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"TimeGenerated": "2024-01-10T07:36:51.771Z",
"OperationName": "CallClientMediaStatsTimeSeries" ,
"CallId": "92d800c4-abde-40be-91e9-3814ee786b19",
"CallClientTimeStamp": "2024-01-09T15:07:56.066Z",
"MetricName": "JitterInMs",
"Count": "2",
"Sum": "34",
"Average": "17",
"Minimum": "10",
"Maximum": "25",
"MediaStreamDirection": "recv",
"MediaStreamType": "audio",
"MediaStreamCodec": "OPUS",
"ParticipantId": "2656fd6c-6d4a-451d-a1a5-ce1baefc4d5c",
"ClientInstanceId": "d08a3d05-db90-415f-88a7-87ae74edc1dd",
"AggregationIntervalSeconds": "10",
"Type": "ACSCallClientMediaStatsTimeSeries"
}
各参加者は、1 つの通話に対してさまざまなメディア統計メトリックを持つ可能性があります。 Azure portal の Log Analytics で次のクエリを実行すると、このログ内の可能性のあるすべてのメトリックを表示できます。
ACSCallClientMediaStatsTimeSeries | distinct MetricName
エラー コード
participantEndReason
プロパティには、一連の Calling SDK エラー コードの値が含まれます。 これらのコードを参照して、各エンドポイントの通話時の問題のトラブルシューティングを行うことができます。 Calling SDK、Call Automation SDK、PSTN、Chat SDK、SMS SDK の通話終了応答コードのトラブルシューティングに関するページを参照してください。
次のステップ
音声通話とビデオ通話のログとメトリックを監視するための分析情報ダッシュボードについて学習します。
通話の品質と信頼性を管理するためのベスト プラクティスについては、「通話品質の向上と管理」を参照してください。
通話ログを使用して通話診断で通話の品質と信頼性の問題を診断する方法については、「通話診断」を参照してください。