共用方式為


Azure 通訊服務語音通話和視訊通話記錄

Azure 通訊服務會提供記錄功能,以供您監視通訊服務解決方案並對其進行偵錯。 您可以透過 Azure 入口網站設定這些功能。

本文中的內容是指透過 Azure 監視器 (部分機器翻譯) 啟用的記錄 (另請參閱常見問題集 (部分機器翻譯))。 若要為通訊服務啟用這些記錄,請參閱在診斷設定中啟用記錄 (部分機器翻譯)。

資料概念

下列對於資料概念的概略描述是語音通話和視訊通話特有的描述。 檢閱這些概念非常重要,如此您才能了解記錄中所擷取資料的意義。

實體和 ID

請熟悉下列詞彙:

  • 通話:如資料所示,通話是由 correlationId 所描述的抽象概念。 correlationId 的值對每次通話而言都是唯一的,而且會受到 callStartTimecallDuration 的時間限制。

  • 參與者:此實體代表端點與伺服器之間的連線。 只有在通話是群組通話時,才會有參與者 (participantId)。

  • 端點:這是最獨特的實體,由 endpointId 代表。 每次通話都是一個事件,其中包含來自兩個或多個端點的資料。 端點代表通話中的參與者。

    EndpointType 可告訴您,端點是人類使用者 (PSTN 或 VoIP)、聊天機器人,還是管理通話中多個參與者的伺服器。 當 endpointType 值為 "Server" 時,端點就不會獲指派唯一識別碼。 您可以分析 endpointTypeendpointId 值的數目,以判斷有多少使用者和其他非人類參與者 (聊天機器人與伺服器) 加入通話。

    適用於 Android 和 iOS 的原生 SDK 會針對多個通話中的使用者重複使用相同的 endpointId 值,讓您能夠了解跨工作階段的體驗。 此流程與 Web 型端點不同,後者一律會為每次新通話產生新的 endpointId 值。

  • 串流:這是最細微的實體。 每個方向 (輸入或輸出) 都有一個串流和 mediaType 值 (例如,AudioVideo)。

資料定義

使用方式記錄結構描述

屬性 說明
Timestamp 產生記錄時的時間戳記 (UTC)。
Operation Name 與記錄錄製相關聯的作業。
Operation Version 與作業相關聯的 api-version 值 (如果透過 API 執行 Operation Name 的話)。 如果沒有對應至此作業的 API,則版本代表該作業的版本,以防與作業相關聯的屬性日後變更。
Category 事件的記錄類別。 類別是您可在資源上啟用或停用記錄的細微性。 出現在事件的 properties Blob 內的屬性,與在記錄類別和資源類型內的相同。
Correlation ID 相互關聯事件的識別碼。 您可以使用此識別碼來識別多個資料表之間相互關聯的事件。
Properties 適用於各種通訊服務模式的其他資料。
Record ID 使用記錄的唯一識別碼。
Usage Type 使用模式 (例如,聊天、PSTN 或 NAT)。
Unit Type 使用方式的單位類型是以使用模式為基礎 (例如,分鐘數、MB 或訊息數)。
Quantity 此記錄所使用或取用的單位數。

通話摘要記錄結構描述

通話摘要記錄包含一些資料,可協助您識別所有通話的主要屬性。 會為通話中的每個 participantId (在對等互連 [P2P] 通話的情況下為 endpointId) 值建立不同的通話摘要記錄。

重要

通話摘要記錄中的參與者資訊會根據參與者租用戶而有所不同。 如果參與者不在與通訊服務資源相同的租用戶內 (也稱為「跨租用戶」),則會修訂 SDK 版本和 OS 版本。 跨租用戶的參與者會分類為資源租用戶所邀請的外部使用者,以在通話期間加入並共同作業。

屬性 說明
time 產生記錄時的時間戳記 (UTC)。
operationName 與記錄錄製相關聯的作業。
operationVersion 與作業相關聯的 api-version 值 (如果透過 API 執行 operationName 的話)。 如果沒有對應至此作業的 API,則版本代表該作業的版本,以防與作業相關聯的屬性日後變更。
category 事件的記錄類別。 此屬性是您可在資源上啟用或停用記錄的細微性。 出現在事件 properties Blob 內的屬性,會與記錄類別和資源類型內的相同。
correlationId 通話的唯一識別碼。 其會識別來自在單一通話期間連線之所有參與者和端點的相互關聯事件,而您可用其來加入來自不同記錄的資料。 如果您總是需要向 Microsoft 建立支援案例,則可使用 correlationId 值,輕鬆識別您正在進行疑難排解的通話。
identifier 使用者的唯一識別碼。 該身分識別可以是 Azure 通訊服務使用者、Microsoft Entra 使用者識別碼、Teams 匿名使用者識別碼或 Teams 聊天機器人識別碼。 您可以使用此識別碼,跨記錄將使用者事件相互關聯在一起。
callStartTime 通話開始的時間戳記 (根據第一次來自任何端點的嘗試連線)。
callDuration 通話的持續時間,以秒表示。 其會以兩個端點之間的第一次嘗試連線與最後一次連線結束為基礎。
callType 通話的類型。 其包含 "P2P""Group""P2P" 通話是只在兩個非伺服器端點之間的直接 1:1 連線。 "Group" 通話是具有兩個以上端點的通話,或是在連線之前建立為 "Group" 通話的通話。
teamsThreadId Teams 執行緒識別碼。 只有在通話組織為 Teams 會議時,此識別碼才有意義。 其接著便代表 Microsoft Teams 與 Azure 通訊服務之間互通性的使用案例。

此 ID 會在作業記錄中公開。 您也可以透過聊天 API 來取得此 ID。
participantId 產生來代表 "Participant" 端點 (endpointType = "Server") 與伺服器之間雙向連線的識別碼。 當 callType = "P2P" 時,兩個端點之間會有直接連線,而不會產生任何 participantId 值。
participantStartTime 參與者開始第一次連線嘗試的時間戳記。
participantDuration 每個參與者連線的持續時間 (以秒為單位),從 participantStartTime 到連線結束時的時間戳記。
participantEndReason 參與者連線結束的原因。 其包含通話 SDK 針對每個 participantId 值發出 (如果相關) 的通話 SDK 錯誤碼。
endpointId 代表每個連線到通話之端點的唯一識別碼,其中 endpointType 會定義端點類型。 當值為 null 時,連接的實體是通訊服務伺服器 (endpointType = "Server")。

endpointId 值有時可以在原生用戶端的多個通話 (correlationId) 之間,針對同一位使用者進行保留。 endpointId 值的數目會決定通話摘要記錄的數目。 會針對每個 endpointId 值建立不同的摘要記錄。
endpointType 此值描述每個連線到通話之端點的屬性。 其可以包含 "Server""VOIP""PSTN""BOT""Unknown"
sdkVersion 每個相關端點所使用之通訊服務通話 SDK 版本的版本字串 (例如 "1.1.00.20212500")。
osVersion 代表每個端點裝置之作業系統和版本的字串。
participantTenantId 和參與者身分識別相關聯的 Microsoft 租用戶識別碼。 租用戶可以是擁有 Azure 通訊服務資源的 Azure 租用戶或 M365 身分識別的 Microsoft 租用戶。 此欄位用來引導進行跨租用戶修訂。
participantType 參與者的描述,此為其用戶端 (Azure 通訊服務或 Teams) 及其身分識別 (Azure 通訊服務或 Microsoft 365) 的組合。 可能的值包括:Azure 通訊服務 (Azure 通訊服務身分識別和 Azure 通訊服務 SDK)、Teams (Teams 身分識別和 Teams 用戶端)、以 Teams 外部使用者身分 (Teams 通話或會議中的 Azure 通訊服務身分識別和 Azure 通訊服務 SDK) 通訊的 Azure 通訊服務、以 Microsoft 365 使用者身分 (M365 身分識別和 Azure 通訊服務用戶端) 通訊的 Azure 通訊服務,以及 Teams 語音應用程式。
pstnPartcipantCallType 其代表 PSTN 參與者的類型和方向,包括緊急通話、直接路由、轉移、轉接等。
ParticipantEndSubCode 其表示通話 SDK 針對每個 participantId 值發出 (如果相關) 的通話 SDK 錯誤子代碼。
ResultCategory 其代表結束通話的參與者之類別。 其可為下列 4 個值之一:Success、ExpectedError、UnexpectedClientError、UnexpectedServerError。

通話診斷記錄結構描述

通話診斷記錄可針對每個參與者提供有關端點和媒體傳輸的重要資訊。 它們也會提供可協助您了解品質問題的量值。

針對通話內的每個端點,系統會針對端點之間的輸出媒體串流 (例如,音訊或視訊) 建立不同的通話診斷記錄。 在 P2P 通話中,每個記錄都包含與每個端點相關聯之每個輸出串流有關的資料。 在群組通話中,participantId 會充當主要識別碼,用於將相關的輸出記錄加入不同的參與者連線。 通話診斷記錄會保持不變,無論參與者租用戶為何,都是相同。

注意

在本文中,P2P 和群組通話預設均位於同一個租用戶內,適用於所有跨租用戶的通話案例。 在這整篇文章中均會相應地指定它們。

屬性 說明
operationName 與記錄錄製相關聯的作業。
operationVersion 與作業相關聯的 api-version 值 (如果透過 API 執行 operationName 的話)。 如果沒有對應至此作業的 API,則版本代表該作業的版本,以防與作業相關聯的屬性日後變更。
category 事件的記錄類別。 此屬性是您可在資源上啟用或停用記錄的細微性。 出現在事件 properties Blob 內的屬性,會與記錄類別和資源類型內的相同。
correlationId 通話的唯一識別碼。 其會識別來自在單一通話期間連線之所有參與者和端點的相互關聯事件。 如果您總是需要向 Microsoft 建立支援案例,則可使用 correlationId 值,輕鬆識別您正在進行疑難排解的通話。
participantId 產生來代表 "Participant" 端點 (endpointType = "Server") 與伺服器之間雙向連線的識別碼。 當 callType = "P2P" 時,兩個端點之間會有直接連線,而不會產生任何 participantId 值。
identifier 使用者的唯一識別碼。 該身分識別可以是 Azure 通訊服務使用者、Microsoft Entra 使用者識別碼、Teams 物件識別碼或 Teams 聊天機器人識別碼。 您可以使用此識別碼,跨記錄將使用者事件相互關聯在一起。
endpointId 代表每個連線到通話之端點的唯一識別碼,其中 endpointType 會定義端點類型。 當值為 null 時,連線的實體是通訊服務伺服器。 EndpointId 可以在原生用戶端的多個通話 (correlationId) 之間,針對同一位使用者進行保留,但若用戶端是網頁瀏覽器時,則對每次通話而言都是唯一的。
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 封包所花費的平均時間。 此網路傳播延遲與這兩點之間的實體距離、光速,以及之間各種路由器所花費的額外負荷有關。

延遲會以單向時間或來回行程時間 (RTT) 來測量。 其值會以毫秒表示。 大於 500 毫秒的 RTT 會對通話品質造成負面影響。
roundTripTimeMax 在群組通話的 participantDuration 期間或 P2P 通話的 callDuration 期間,針對每個媒體串流測量到的 RTT (以毫秒為單位)。
jitterAvg 連續封包之間的平均延遲變更。 Azure Communication Services 可以透過緩衝值來適應某些層級的抖動值。 在抖動超過緩衝處理時 (大約在 jitterAvg 時間超過 30 毫秒時),才可能會對品質造成負面影響。 以不同速度到達的封包會導致說話者的聲音聽起來像機器人。

此計量會在群組通話中的 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 在視訊/螢幕畫面分享通話期間每秒傳輸的平均視訊畫面數。 視訊畫面播放速率可能會影響視訊串流的品質和順暢度,較高的畫面播放速率通常會導致更順暢且更流暢的動作。 WebRTC 視訊的標準畫面播放速率通常是每秒 30 個畫面 (fps),不過,這可能會因特定實作和網路狀況而有所不同。

當此值針對視訊串流小於 7,或針對螢幕畫面分享串流小於 1 時,串流品質就會被視為不良。
RecvResolutionHeight 在視訊/螢幕畫面分享通話期間傳輸之內送視訊串流的平均垂直大小。 它會以像素為單位來測量,而且是決定視訊串流整體解析度和品質的因素之一。 使用的特定解析度可能取決於通話中所涉及裝置的處理能力和網路狀況。

當此值針對視訊串流小於 240,或針對螢幕畫面分享串流小於 768 時,串流品質就會被視為不良。
RecvFreezeDurationPerMinuteInMs 內送視訊/螢幕畫面分享串流的平均凍結持續時間 (以毫秒為單位)。 凍結通常是因為網路狀況不良而導致,而且可能會降低串流品質。

當此值針對視訊串流大於 6,000 毫秒,或針對螢幕畫面分享串流大於 25,000 毫秒時,串流品質就會被視為不良。
PacketUtilization 針對指定的媒體資料串流傳送或接收的封包。

呼叫的時間通常越長,值就越高。 如果此值為零,則表示媒體未流動。
VideoBitRateAvg 視訊或螢幕共用串流的平均位元速率 (每秒位元)。

低位元速率值可能表示網路連線不佳。 所需的最低位元速率 (頻寬) 可在此處找到:網路頻寬
VideoBitRateMax 視訊或螢幕共用串流的最大位元速率 (每秒位元)。

低位元速率值可能表示網路連線不佳。 所需的最低位元速率 (頻寬) 可在此處找到:網路頻寬
StreamDirection 媒體串流的方向。 其為輸入或輸出。
CodecName 用於處理媒體串流的轉碼器名稱。 其可為 OPUS、G722、H264S、SATIN 等

通話用戶端作業記錄結構描述

通話用戶端作業記錄會提供有關通話中所涉及通話端點和參與者的用戶端資訊。 這些記錄目前處於預覽狀態,並會顯示通話中發生的用戶端事件,以及客戶在通話期間可能採取的動作。

此記錄提供通話期間所採取的動作詳細資訊,並可用來使用適用於 Azure 通訊服務資源的通話診斷,來將通話問題視覺化並進行調查。 深入了解通話診斷

屬性 說明
CallClientTimeStamp 在 SDK 上發生作業時的時間戳記 (UTC)。
OperationName 在通話 SDK 上觸發的作業名稱。
CallId 通話的唯一識別碼。 其會識別來自在單一通話期間連線之所有參與者和端點的相互關聯事件,而您可用其來加入來自不同記錄的資料。 其類似於通話摘要記錄和通話診斷記錄中的 correlationId。
ParticipantId 每個通話連結 (在群組通話中) 或通話參與者 (在對等互連通話中) 的唯一識別碼。 此識別碼是 CallSummary、CallDiagnostic、CallClientOperations 和 CallClientMediaStats 記錄之間的主要相互關聯點。
OperationType 通話用戶端作業。
OperationId 識別 SDK 作業的唯一 GGUID。
DurationMs 通話 SDK 作業失敗或成功所花費的時間。
ResultType 描述作業成功或失敗的欄位。
ResultSignature 類似 HTTP 的失敗或成功碼 (200、500)。
SdkVersion 正在使用的通話 SDK 版本。
UserAgent 使用以瀏覽器或平台通話 SDK 為基礎的標準使用者代理程式字串。
ClientInstanceId 識別 CallClient 物件的唯一 GGUID。
EndpointId 代表每個連線到通話之端點的唯一識別碼,其中 endpointType 會定義端點類型。 當值為 Null 時,連線的實體是通訊服務伺服器 (endpointType = "Server")。

endpointId 值有時可以在原生用戶端的多個通話 (correlationId) 之間,針對同一位使用者進行保留。 endpointId 值的數目會決定通話摘要記錄的數目。 針對每個 endpointId 值建立不同的摘要記錄。
OperationPayload 動態承載會根據作業而有所不同,可提供更多作業特定的詳細資料。

通話用戶端媒體統計資料時間序列記錄結構描述

通話用戶端媒體統計資料時間序列記錄提供通話所涉及個別參與者之間媒體串流的用戶端資訊。 這些記錄目前處於有限預覽狀態,並在參與者之間提供音訊、視訊和螢幕共用媒體的詳細時間序列資料,預設彙總間隔為 10 秒。 記錄包含媒體串流類型、方向、轉碼器以及位元速率屬性的細微時間序列資訊 (例如最大值、最小值、平均值)。

此記錄提供比通話診斷記錄更詳細的資訊,以了解參與者之間的媒體串流品質。 可用來透過 Azure 通訊服務資源的通話診斷,視覺化和調查通話的品質問題。 深入了解通話診斷

屬性 說明
OperationName 與記錄錄製相關聯的作業。
CallId 通話的唯一識別碼。 其會識別來自在單一通話期間連線之所有參與者和端點的相互關聯事件,而您可用其來加入來自不同記錄的資料。 其類似於通話摘要記錄和通話診斷記錄中的 correlationId。
CallClientTimeStamp 記錄媒體統計資料時的時間戳記。
MetricName 媒體統計資料的名稱,例如位元速率、JitterInMs、PacketsPerSecond 等。
Count 在指定時間戳記取樣的資料點數目。
Sum 所有取樣資料點的計量值總和。
Average 取樣資料點的平均計量值。 平均值 = 總計 / 計數
Minimum 所有取樣資料點的計量值最小值。
Maximum 所有取樣資料點的計量值最大值。
MediaStreamDirection 媒體串流的方向。 可以是傳送或接收
MediaStreamType 媒體串流的類型。 可以是視訊、音訊或螢幕。
MediaStreamCodec 用來編碼/解碼媒體串流的轉碼器,例如 H264、OPUS、VP8 等。
ParticipantId 產生來表示通話中每個端點的唯一識別碼。
ClientInstanceId 唯一識別碼,表示在通話 SDK 中建立的通話用戶端物件。
EndpointId 唯一識別碼,表示連線到通話的每個端點。 端點可以在原生用戶端的多個通話 (callId) 之間,針對同一位使用者進行保留,但若用戶端是網頁瀏覽器時,則對每次通話而言都是唯一的。 請注意,EndpointId 目前未在此記錄中檢測。 在未來實作時,會比對 CallSummary/Diagnostics 記錄中的值
RemoteParticipantId 唯一識別碼,表示媒體串流中的遠端端點。 例如,使用者可以在相同通話中為其他使用者轉譯多個視訊串流。 每個視訊串流都有不同的 RemoteParticipantId。
RemoteEndpointId 與 EndpointId 相同,但其代表串流遠端一端的使用者。
MediaStreamId 唯一識別碼,表示通話中的每個媒體串流。 MediaStreamId 目前未在用戶端中檢測。 實作時,會比對 CallDiagnostics 記錄中的 streamId 資料行。
AggregationIntervalSeconds 彙總媒體統計資料的時間間隔。 目前在通話 SDK 中,媒體計量會每隔 1 秒取樣一次,當我們在記錄中報告時,我們會每 10 秒彙總所有樣本一次。 因此,此資料表中的每個資料列最多有 10 個取樣點。

P2P 通話與群組通話

有兩種類型的通話 (以 callType 表示):

  • 對等互連 (P2P) 通話:僅兩個端點之間的連線,沒有伺服器端點。 P2P 通話會以那些端點之間的單一通話來起始,而且不會在連線之前建立為群組通話事件。

    顯示兩個端點之間 P2P 通話的圖表。

  • 群組通話:任何與兩個以上端點連線的通話。 群組通話包含伺服器端點,以及每個端點與伺服器之間的連線。 在通話期間新增另一個端點的 P2P 通話會停止成為 P2P,而是成為群組通話。 您可以透過使用 participantStartTimeparticipantDuration 計量,來判斷每個端點何時加入通話的時間軸。

    顯示多個端點之間群組通話的圖表。

記錄檔結構

Azure 通訊服務會建立四種類型的記錄:

  • 通話摘要記錄:包含有關通話的基本資訊,包括所有相關的識別碼、時間戳記、端點和 SDK 資訊。 針對通話中的每個參與者,通訊服務會建立不同的通話摘要記錄。

    如果有人重新加入通話,該參與者會具有相同的 EndpointId 值,但不同的 ParticipantId 值。 該端點接著會有兩個通話摘要記錄。

  • 通話診斷記錄:包含串流的相關資訊,以及一組指出體驗品質測量的計量。 對於通話中的每個 EndpointId (包括伺服器),Azure 通訊服務會為端點之間的每個媒體串流 (例如音訊或視訊) 建立不同的通話診斷記錄。

  • 通話用戶端作業記錄:包含詳細的通話用戶端事件。 這些記錄事件會針對通話中的每個 EndpointId 產生,而產生的事件記錄數目將取決於參與者在通話期間執行的作業。

  • 通話用戶端媒體統計資料記錄:包含詳細的媒體串流值。 這些記錄會針對通話中的每個媒體串流產生。 對於通話中的每個 EndpointId (包括伺服器),Azure 通訊服務會為端點之間的每個媒體串流 (例如音訊或視訊) 建立不同的記錄。 每個記錄中產生的資料量取決於通話持續時間和通話中的媒體串流數目。

在 P2P 通話中,每個記錄都包含與每個端點相關聯之每個輸出串流有關的資料。 在群組通話中,與 endpointType = "Server" 相關聯的每個串流都會建立記錄,其中包含輸入串流的資料。 所有其他串流都會建立記錄,其中包含所有非伺服器端點輸出串流的資料。 在群組通話中,使用 participantId 值作為索引鍵來將相關的輸入和輸出記錄加入到不同的參與者連線中。

範例:P2P 通話

下圖表示在 P2P 通話中直接連線的兩個端點。 在此範例中,通訊服務會建立兩個通話摘要記錄 (每個 participantID 值各一個) 和四個通話診斷記錄 (每個媒體串流各一個)。

針對 Azure 通訊服務 (ACS) 通話用戶端參與者,也有一系列的通話用戶端作業記錄和通話用戶端媒體統計資料時間序列記錄。 這些記錄的確切數目取決於呼叫的 SDK 作業種類,以及通話的時間長度。

顯示相同租用戶內 P2P 通話的圖表。

範例:群組通話

下圖表示群組通話範例,其中包含三個 participantId 值 (這意味著三個參與者) 和一個伺服器端點。 多個適用於 endpointId 的值可能會出現在多個參與者中,例如,當他們從同一個裝置重新加入通話時。 通訊服務會針對每個 participantId 值建立一個通話摘要記錄。 其會建立四個通話診斷記錄:針對每個 participantId,每個媒體串流各一個。

針對 Azure 通訊服務 (ACS) 通話用戶端參與者,通話用戶端作業記錄會與 P2P 通話相同。 針對每個使用通話 SDK 的參與者,將有一系列通話用戶端作業記錄。

針對 Azure 通訊服務 (ACS) 通話用戶端參與者,通話用戶端作業記錄和通話用戶端媒體統計資料時間序列記錄會與 P2P 通話相同。 針對每個使用通話 SDK 的參與者,將有一系列通話用戶端作業記錄和通話用戶端媒體統計資料時間序列記錄。

顯示相同租用戶內群組通話的圖表。

範例:跨租用戶的 P2P 通話

下圖表示在多個租用戶之間的兩個參與者,其會在 P2P 通話中直接連線。 在此範例中,通訊服務會建立一個通話摘要記錄 (每個參與者各一個),其中包含已修訂的 OS 和 SDK 版本。 通訊服務也會建立四個通話診斷記錄 (每個媒體串流各一個)。 每個記錄均包含與 participantID 輸出串流相關的資料。

顯示跨租用戶 P2P 通話的圖表。

範例:跨租用戶的群組通話

下圖表示群組通話範例,其中包含三個跨多個租用戶的 participantId 值。 通訊服務會針對每個參與者建立一個通話摘要記錄,其中包含已修訂的 OS 和 SDK 版本。 通訊服務也會建立四個與每個 participantId 值相關的通話診斷記錄 (每個媒體串流各一個)。

顯示跨租用戶群組通話的圖表。

注意

此版本僅支援輸出診斷記錄。 您可以修訂與聊天機器人和參與者相關聯的 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":            "8d1a8374-344d-4502-b54b-ba2d6daaf0ae",

通話摘要記錄

通話摘要記錄具有共用的作業和類別資訊:

"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 通話的通話摘要:

注意

無論其是參與者的租用戶或聊天機器人的租用戶,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"
}

群組通話

群組通話的資料會在三個通話摘要記錄和六個通話診斷記錄中產生。 以下為通話中所有記錄的共用欄位:

"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":            "341acde7-8aa5-445b-a3da-2ddadca47d22",

通話摘要記錄

通話摘要記錄具有共用的作業和類別資訊:

"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":               "4e7403f8-515a-4df5-8e13-59f0e2b76e3a",
    "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"
}

每個參與者都可以有許多不同的通話計量。 下列查詢可以在 Azure 入口網站的 Log Analytics 中執行,以列出通話用戶端作業記錄中的所有可能作業:

ACSCallClientOperations | distinct OperationName

通話用戶端媒體統計資料時間序列記錄

以下是媒體統計資料時間序列記錄的範例。 顯示參與者在特定時間戳記接收音訊串流的抖動計量。

"properties": {
    "TenantId":                     "4e7403f8-515a-4df5-8e13-59f0e2b76e3a",
    "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"
}

每個參與者都可以有許多不同的通話媒體統計資料計量。 下列查詢可以在 Azure 入口網站的 Log Analytics 中執行,以顯示此記錄中的所有可能計量:

ACSCallClientMediaStatsTimeSeries | distinct MetricName

錯誤碼

participantEndReason 屬性包含來自該組通話 SDK 錯誤碼的值。 您可以參考這些代碼,針對每個端點,對通話期間的問題進行疑難排解。 請參閱 Azure 通訊服務中的疑難排解 (部分機器翻譯)。

下一步