Службы коммуникации Azure журналы голосовых звонков и видеозвонок
Службы коммуникации Azure предоставляет возможности ведения журнала, которые можно использовать для мониторинга и отладки решения служб коммуникации. Настройте эти возможности с помощью портал Azure.
Содержимое этой статьи относится к журналам, включенным с помощью Azure Monitor (см. также вопросы и ответы). Чтобы включить эти журналы для служб коммуникации, см . раздел "Включить ведение журнала в параметрах диагностики".
Основные понятия данных
Следующие высокоуровневые описания концепций данных относятся к голосовой связи и видеозвонкам. Эти понятия важны для проверки, чтобы понять смысл данных, захваченных в журналах.
Сущности и идентификаторы
Ознакомьтесь со следующими терминами:
Вызов: как представлено в данных, вызов является абстракцией, показанной
correlationId
. Значения дляcorrelationId
каждого вызова уникальны и зависят отcallStartTime
времениcallDuration
.Участник. Представляет соединение между конечной точкой и сервером. Участник (
participantId
) присутствует только в том случае, если вызов является групповым вызовом.Конечная точка: самая уникальная сущность, представленная
endpointId
. Каждый вызов — это событие, содержащее данные из двух или нескольких конечных точек. Конечные точки представляют участников вызова.EndpointType
указывает, является ли конечная точка пользователем (ТСОП или VoIP), ботом или сервером, который управляет несколькими участниками в вызове. Если значение равно"Server"
, конечнаяendpointType
точка не назначается уникальному идентификатору. Вы можете проанализироватьendpointType
и количество значенийendpointId
, чтобы определить, сколько пользователей и других участников, не являющихся пользователями (ботами и серверами) присоединяются к вызову.Собственные пакеты SDK для Android и iOS повторно используют одно и то же
endpointId
значение для пользователя в нескольких вызовах, чтобы получить представление о взаимодействиях между сеансами. Этот процесс отличается от веб-конечных точек, которые всегда создают новоеendpointId
значение для каждого нового вызова.Stream: самая детализированная сущность. Существует один поток для каждого направления (входящего или исходящего трафика) и
mediaType
значения (например,Audio
илиVideo
).
Определения данных
Схема журнала использования
Свойство | Description |
---|---|
Timestamp |
Метка времени (UTC) при создании журнала. |
Operation Name |
Операция, связанная с записью журнала. |
Operation Version |
Значение api-version , связанное с операцией, если Operation Name операция была выполнена через API. Если API не соответствует этой операции, версия представляет версию операции, если свойства, связанные с операцией, изменяются в будущем. |
Category |
Категория журнала для события. Категория — это степень детализации, при которой можно включить или отключить журналы в ресурсе. Свойства, отображаемые в большом двоичном объекте события, совпадают с properties категорией журнала и типом ресурса. |
Correlation ID |
Идентификатор для коррелированных событий. Его можно использовать для выявления коррелированных событий между несколькими таблицами. |
Properties |
Другие данные, применимые к различным режимам служб коммуникации. |
Record ID |
Уникальный идентификатор записи об использовании. |
Usage Type |
Режим использования (например, чат, ТСОП или NAT). |
Unit Type |
Тип единицы использования основан на режиме использования (например, минутах, мегабайтах или сообщениях). |
Quantity |
Количество единиц, использованных или потребленных для данной записи. |
Схема сводного журнала вызова
В журнале сводки вызовов содержатся данные, помогающие определить ключевые свойства всех вызовов. В вызове создается другой журнал сводки вызовов (или endpointId
для participantId
одноранговых вызовов [P2P].
Внимание
Сведения о участниках в журнале сводки вызовов зависят от клиента участника. Версия пакета SDK и версия ОС редактируются, если участник не находится в одном клиенте (также называемом межтенантным) ресурсом служб коммуникации. Межтенантные участники классифицируются как внешние пользователи, приглашенные клиентом ресурсов для присоединения и совместной работы во время вызова.
Свойство | Description |
---|---|
time |
Метка времени (UTC) при создании журнала. |
operationName |
Операция, связанная с записью журнала. |
operationVersion |
Значение api-version , связанное с операцией, если operationName операция была выполнена через API. Если API не соответствует этой операции, версия представляет версию операции, если свойства, связанные с операцией, изменяются в будущем. |
category |
Категория журнала для события. Это свойство является степенью детализации, при которой можно включить или отключить журналы в ресурсе. Свойства, отображаемые в большом двоичном объекте события, совпадают с properties категорией журнала и типом ресурса. |
correlationId |
Уникальный идентификатор для вызова. Он определяет коррелированные события от всех участников и конечных точек, которые подключаются во время одного вызова, и его можно использовать для присоединения данных из разных журналов. Если вам когда-либо нужно открыть вариант поддержки с корпорацией Майкрософт, можно использовать correlationId значение, чтобы легко определить вызов, который вы устраняете. |
identifier |
Уникальный идентификатор пользователя. Удостоверение может быть Службы коммуникации Azure пользователем, идентификатором пользователя Microsoft Entra, анонимным идентификатором пользователя Teams или идентификатором бота Teams. Этот идентификатор можно использовать для сопоставления событий пользователей в журналах. |
callStartTime |
Метка времени для начала вызова на основе первого попытки подключения из любой конечной точки. |
callDuration |
Длительность вызова, выраженная в секундах, на основе первого попытки подключения и конца последнего подключения между двумя конечными точками. |
callType |
Тип вызова. Он содержит либо "P2P" "Group" . Вызов "P2P" — это прямое подключение 1:1 между двумя несерверными конечными точками. Вызов "Group" — это вызов, имеющий более двух конечных точек или созданный в качестве "Group" вызова перед подключением. |
teamsThreadId |
Идентификатор потока Teams. Этот идентификатор имеет значение только в том случае, если звонок организован как собрание Teams. Затем он представляет вариант взаимодействия между Microsoft Teams и Службы коммуникации Azure. Этот идентификатор указывается в журналах операций. Этот идентификатор также можно получить с помощью API-интерфейсов чата. |
participantId |
Идентификатор, созданный для представления двустороннего подключения между конечной "Participant" точкой (endpointType = "Server" ) и сервером. При callType = "P2P" наличии прямого подключения между двумя конечными точками и не participantId создается никакого значения. |
participantStartTime |
Метка времени начала первой попытки подключения участника. |
participantDuration |
Длительность подключения каждого участника в секундах от participantStartTime метки времени до окончания соединения. |
participantEndReason |
Причина окончания подключения участника. Он содержит коды ошибок пакета SDK для вызова, которые пакет SDK выдает (при необходимости) для каждого participantId значения. |
endpointId |
Уникальный идентификатор, представляющий каждую конечную точку, подключенную к вызову, где endpointType определяет тип конечной точки. Если значение равно null , подключенная сущность — сервер служб коммуникации (endpointType = "Server" ). Иногда endpointId значение может сохраняться для одного пользователя в нескольких вызовах (correlationId ) для собственных клиентов. Количество значений endpointId определяет количество журналов сводки вызовов. Для каждого endpointId значения создается отдельный журнал сводки. |
endpointType |
Это значение описывает свойства каждой конечной точки, подключенной к вызову. Он может содержать "Server" , , "PSTN" "VOIP" "BOT" "Unknown" или . |
sdkVersion |
Строка версии пакета SDK для вызовов служб коммуникации, которая использует каждую соответствующую конечную точку (например, "1.1.00.20212500" ). |
osVersion |
Строка, представляющая операционную систему и версию каждого устройства конечной точки. |
participantTenantId |
Идентификатор клиента Майкрософт, связанного с удостоверением участника. Клиент может быть клиентом Azure, который владеет ресурсом Службы коммуникации Azure или клиентом Майкрософт удостоверения Microsoft 365. Это поле используется для руководства по редактированию между клиентами. |
participantType |
Описание участника в качестве сочетания клиента (Службы коммуникации Azure или Teams) и его удостоверения (Службы коммуникации Azure или Microsoft 365). Возможные значения: Службы коммуникации Azure (удостоверение Службы коммуникации Azure и пакет SDK Службы коммуникации Azure), Teams (удостоверение Teams и клиент Teams); Службы коммуникации Azure как внешний пользователь Teams (удостоверение Службы коммуникации Azure и пакет SDK Службы коммуникации Azure в вызовах или собрании Teams), Службы коммуникации Azure как пользователь Microsoft 365 (удостоверение Microsoft 365 и клиент Службы коммуникации Azure) и приложения Голосовой связи Teams. |
pstnPartcipantCallType |
Представляет тип и направление участников ТСОП, включая экстренные вызовы, прямую маршрутизацию, передачу, пересылку и т. д. |
ParticipantEndSubCode |
Представляет подкод ошибки пакета SDK для вызовов, который пакет SDK выдает (при необходимости) для каждого participantId значения. |
ResultCategory |
Представляет категорию участника, завершающего вызов. Это может быть одно из следующих 4 значений: Success, ExpectedError, UnexpectedClientError, UnexpectedServerError. |
Схема журнала диагностики вызовов
Журналы диагностики вызовов предоставляют важные сведения о конечных точках и передаче мультимедиа для каждого участника. Они также предоставляют измерения, которые помогают понять проблемы качества.
Для каждой конечной точки в вызове создается отдельный журнал диагностики вызовов для исходящих потоков мультимедиа (аудио или видео, например) между конечными точками. В вызове P2P каждый журнал содержит данные, относящиеся к каждому из исходящих потоков, связанных с каждой конечной точкой. В групповых вызовах participantId
служит идентификатором ключа для присоединения связанных исходящих журналов к отдельному подключению участника. Журналы диагностики вызовов остаются неизменными и одинаковы независимо от клиента участника.
Примечание.
В этой статье вызовы P2P и группы находятся в одном клиенте по умолчанию для всех сценариев вызова, которые являются межтенантными. Они указаны в соответствии с этой статьей.
Свойство | Description |
---|---|
operationName |
Операция, связанная с записью журнала. |
operationVersion |
Значение api-version , связанное с операцией, если operationName операция была выполнена через API. Если API не соответствует этой операции, версия представляет версию операции, если свойства, связанные с операцией, изменяются в будущем. |
category |
Категория журнала для события. Это свойство является степенью детализации, при которой можно включить или отключить журналы в ресурсе. Свойства, отображаемые в большом двоичном объекте события, совпадают с properties категорией журнала и типом ресурса. |
correlationId |
Уникальный идентификатор для вызова. Он определяет коррелированные события от всех участников и конечных точек, которые подключаются во время одного вызова. Если вам когда-либо нужно открыть вариант поддержки с корпорацией Майкрософт, можно использовать correlationId значение, чтобы легко определить вызов, который вы устраняете. |
participantId |
Идентификатор, созданный для представления двустороннего подключения между конечной "Participant" точкой (endpointType = "Server" ) и сервером. При callType = "P2P" наличии прямого подключения между двумя конечными точками и не participantId создается никакого значения. |
identifier |
Уникальный идентификатор пользователя. Удостоверение может быть Службы коммуникации Azure пользователем, идентификатором пользователя Microsoft Entra, идентификатором объекта Teams или идентификатором бота Teams. Этот идентификатор можно использовать для сопоставления событий пользователей в журналах. |
endpointId |
Уникальный идентификатор, представляющий каждую конечную точку, подключенную к вызову, где endpointType определяет тип конечной точки. Если значение равно null , подключенная сущность является сервером служб коммуникации. EndpointId может сохраняться для одного пользователя в нескольких вызовах () для собственных клиентов,correlationId но является уникальным для каждого вызова, когда клиент является веб-браузером. |
endpointType |
Значение, описывающее свойства каждого endpointId экземпляра. Он может содержать "Server" , , "PSTN" "Voicemail" "Anonymous" "VOIP" "BOT" или ."Unknown" |
mediaType |
Строковое значение, описывающее тип носителя, передаваемого между конечными точками в каждом потоке. Возможные значения: "Audio" , ( "Video" "VBSS" совместное использование экрана на основе видео) и "AppSharing" . |
streamId |
Целое число, ненующееся вместе с mediaType ним, можно использовать для уникальной идентификации потоков одного и того же participantId значения. |
transportType |
Строковое значение, описывающее сетевой транспортный протокол для каждого participantId значения. Он может содержать "UDP" , "TCP" или "Unrecognized" . "Unrecognized" указывает, что система не могла определить, был ли тип транспорта TCP или UDP. |
roundTripTimeAvg |
Среднее время, необходимое для получения IP-пакета из одной конечной точки в другую в течение определенного participantDuration периода. Эта задержка распространения сети связана с физическим расстоянием между двумя точками, скоростью света и любыми издержками, которые принимают различные маршрутизаторы между ними. Задержка измеряется как односторонняя или круговая поездка (RTT). Его значение, выраженное в миллисекундах. RTT больше 500 мс отрицательно влияет на качество вызова. |
roundTripTimeMax |
Максимальное значение RTT (в миллисекундах) измеряется в потоке мультимедиа в течение participantDuration периода в групповом вызове или в callDuration течение периода вызова P2P. |
jitterAvg |
Эффект среднего изменения задержки между последовательными пакетами. Службы коммуникации Azure могут адаптироваться к некоторым уровням дрожания благодаря применению буферизации. При превышении буферизации, которая примерно за раз jitterAvg превышает 30 мс, она может отрицательно повлиять на качество. Пакеты, поступающие с разной скоростью, приводят к тому, что голос говорящего звучит как голос робота. Эта метрика измеряется для каждого потока participantDuration мультимедиа за период в групповом вызове или за callDuration период вызова P2P. |
jitterMax |
Максимальное значение трясти, измеряемое между пакетами для каждого потока мультимедиа. Всплески в условиях сети могут привести к проблемам в потоке аудио-и видеопотока. |
packetLossRateAvg |
Средний процент потерянных пакетов. Потеря пакетов напрямую влияет на качество звука. Небольшие, отдельные потерянные пакеты почти не оказывают влияния, в то время как потери в обратном режиме приводят к тому, что звук полностью вырезается. Пакеты удаляются и не приходят в целевое место назначения, приводят к пробелам в мультимедиа. Эта ситуация приводит к пропущенным слогам и словам, а также к отрезку видео и совместному использованию. Скорость потери пакетов, превышающая 10 % (0,1), скорее всего, оказывает негативное влияние на качество. Эта метрика измеряется для каждого потока participantDuration мультимедиа за период в групповом вызове или за callDuration период вызова P2P. |
packetLossRateMax |
Это значение представляет максимальную скорость потери пакетов (процент) для каждого потока participantDuration мультимедиа за период вызова группы или callDuration за период вызова P2P. Всплески в условиях сети могут привести к проблемам в потоке аудио-и видеопотока. |
JitterBufferSizeAvg |
Средний размер буфера jitter в течение каждого потока мультимедиа. Буфер jitter — это общая область данных, в которой голосовые пакеты могут собираться, храниться и отправляться в голосовой процессор в равномерном интервале. Буфер Jitter используется для противодействия эффектам дрожи. Буферы Jitter могут быть статическими или динамическими. Статические буферы jitter задаются в фиксированном размере, а динамические буферы jitter могут настраивать их размер в зависимости от сетевых условий. Цель буфера jitter — обеспечить непрерывный и непрерывный поток звуковых и видеоданных пользователю. В веб-пакете SDK это JitterBufferSizeAvg среднее значение jitterBufferDelay во время вызова. Длительность jitterBufferDelay звукового примера или видеокадр, который остается в буфере дрожи. Как правило, если JitterBufferSizeAvg значение больше 200 мс, оно отрицательно влияет на качество. |
JitterBufferSizeMax |
Максимальный размер буфера jitter, измеряемый во время каждого потока мультимедиа. Как правило, если это значение больше 200 мс, оно отрицательно влияет на качество. |
HealedDataRatioAvg |
Средняя доля потерянных или поврежденных пакетов данных успешно восстановлена или восстановлена целителем в течение длительности аудиопотока. Соотношение данных, исцеляемое, является мерой эффективности методов исправления ошибок, используемых в системах VoIP. Если это значение больше 0,1 (10%), мы считаем поток плохим качеством. |
HealedDataRatioMax |
Максимальное соотношение данных, измеряемое в течение каждого потока мультимедиа. Если это значение больше 0,1 (10%), мы считаем поток плохим качеством. |
VideoFrameRateAvg |
Среднее количество видеокадров, передаваемых в секунду во время вызова видео/экранного управления. Частота кадров видео может повлиять на качество и гладкость видеопотока, с более высокими скоростями кадров, что обычно приводит к более гладкому и более плавному движениям жидкости. Стандартная частота кадров для видео WebRTC обычно составляет 30 кадров в секунду (fps), хотя частота кадров может отличаться в зависимости от конкретных условий реализации и сети. Качество потока считается плохим, если это значение меньше 7 для видеопотока или менее 1 для потока общего доступа к экранам. |
RecvResolutionHeight |
Среднее значение вертикального размера входящего видеопотока, передаваемого во время вызова видео/экранов. Он измеряется в пикселях и является одним из факторов, определяющих общее разрешение и качество видеопотока. Определенное разрешение может зависеть от возможностей устройств и сетевых условий, участвующих в вызове. Качество потока считается плохим, если это значение меньше 240 для видеопотока или менее 768 для потока общего доступа к экранам. |
RecvFreezeDurationPerMinuteInMs |
Средняя продолжительность замораживания в миллисекундах в минуту для входящего потока видео/экранов. Замораживание обычно связано с плохим состоянием сети и может снизить качество потока. Качество потока считается плохим, если это значение больше 6000 мс для видеопотока или больше 25 000 мс для потока обмена экранами. |
PacketUtilization |
Пакеты, отправленные или полученные для заданного потока мультимедиа. Как правило, чем дольше вызов, тем выше значение. Если это значение равно нулю, это может указывать на то, что носитель не выполняется. |
VideoBitRateAvg |
Средняя скорость (биты в секунду) для потока видео или экрана. Низкое значение скорости может указывать на проблему с плохой сетью. Минимальная скорость (пропускная способность) можно найти здесь: пропускная способность сети. |
VideoBitRateMax |
Максимальная скорость (биты в секунду) для потока видео или экрана. Низкое значение скорости может указывать на проблему с плохой сетью. Минимальная скорость (пропускная способность) можно найти здесь: пропускная способность сети. |
StreamDirection |
Направление потока мультимедиа. Это входящий или исходящий трафик. |
CodecName |
Имя кодека, используемого для обработки потоков мультимедиа. Он может быть OPUS, G722, H264S, SATIN и т. д. |
Схема журнала операций вызова клиента
Журнал операций клиента вызова предоставляет клиентские сведения о конечных точках вызова и участниках, участвующих в вызове. Эти журналы в настоящее время находятся в предварительной версии и отображают события клиента, которые произошли в вызове и какие действия выполняет клиент во время звонка.
Этот журнал содержит подробные сведения о действиях, выполняемых во время вызова, и может использоваться для визуализации и изучения проблем с вызовами с помощью диагностики вызовов для ресурса Службы коммуникации Azure. Дополнительные сведения о диагностике вызовов
Свойство | Description |
---|---|
CallClientTimeStamp |
Метка времени выполнения операции в пакете SDK в формате UTC. |
OperationName |
Имя операции, активироваемой в вызывающем пакете SDK. |
CallId |
Уникальный идентификатор для вызова. Он определяет коррелированные события от всех участников и конечных точек, которые подключаются во время одного вызова, и его можно использовать для присоединения данных из разных журналов. Он аналогичен корреляции в журнале сводки вызовов и журнале диагностики вызовов. |
ParticipantId |
Уникальный идентификатор для каждого этапа вызова (в групповых вызовах) или участника вызова (в одноранговых вызовах). Этот идентификатор является основной точкой корреляции между журналами CallSummary, CallDiagnostic, CallClientOperations и CallClientMediaStats. |
OperationType |
Вызов операции клиента. |
OperationId |
Уникальный GGUID, определяющий операцию пакета SDK. |
DurationMs |
Время, необходимое для операции пакета SDK для вызова, чтобы завершиться ошибкой или успешной. |
ResultType |
Поле, описывающее успешное или неудачное выполнение операции. |
ResultSignature |
Сбой или код успешного выполнения HTTP (200, 500). |
SdkVersion |
Используемая версия пакета SDK для вызовов. |
UserAgent |
Используется строка стандартного агента пользователя на основе браузера или пакета SDK для вызова платформы. |
ClientInstanceId |
Уникальный GGUID, определяющий объект CallClient. |
EndpointId |
Уникальный идентификатор, представляющий каждую конечную точку, подключенную к вызову, где endpointType определяет тип конечной точки. Если значение равно NULL, подключенная сущность является сервером служб коммуникации (endpointType = "Сервер"). Значение endpointId иногда может сохраняться для одного пользователя в нескольких вызовах (correlationId) для собственных клиентов. Количество значений endpointId определяет количество журналов сводки вызовов. Для каждого значения endpointId создается отдельный журнал сводки. |
OperationPayload |
Динамическая полезная нагрузка, которая зависит от операции, предоставляющей дополнительные сведения об операции. |
Вызов схемы журнала журнала временных рядов клиентских носителей
Журнал статистики временных рядов клиента вызова предоставляет клиентские сведения о потоках мультимедиа между отдельными участниками, участвующими в вызове. Эти журналы в настоящее время находятся в ограниченной предварительной версии и предоставляют подробные данные временных рядов на аудио, видео и экранах совместного использования мультимедиа между участниками с интервалом агрегирования по умолчанию 10 секунд. Журналы содержат подробные сведения о типе потока мультимедиа, направлении, кодеке и скорости (например, max, min, average).
Этот журнал содержит более подробную информацию, чем журнал диагностики звонков, чтобы понять качество потоков мультимедиа между участниками. Его можно использовать для визуализации и изучения проблем с качеством вызовов с помощью диагностики вызовов для ресурса Службы коммуникации Azure. Дополнительные сведения о диагностике вызовов
Свойство | Description |
---|---|
OperationName |
Операция, связанная с записью журнала. |
CallId |
Уникальный идентификатор для вызова. Он определяет коррелированные события от всех участников и конечных точек, которые подключаются во время одного вызова, и его можно использовать для присоединения данных из разных журналов. Он аналогичен корреляции в журнале сводки вызовов и журнале диагностики вызовов. |
CallClientTimeStamp |
Метка времени записи статистики мультимедиа. |
MetricName |
Имя статистики мультимедиа, например Bitrate , JitterInMs и PacketsPerSecond т. д. |
Count |
Количество точек данных, выборочных в заданной метке времени. |
Sum |
Сумма значений метрик всех точек данных, выборочных. |
Average |
Среднее значение метрик выборки точек данных. Среднее = сумма / число. |
Minimum |
Минимальное значение метрик всех точек данных, выборочных. |
Maximum |
Максимальное количество значений метрик всех точек данных, выборочных. |
MediaStreamDirection |
Направление потока мультимедиа. Это может быть send или receive . |
MediaStreamType |
Тип потока мультимедиа. Он может иметь значение video , audio или screen . |
MediaStreamCodec |
Кодек, используемый для кодирования и декодирования потока мультимедиа, например H264 , OPUS и VP8 т. д. |
ParticipantId |
Уникальный идентификатор, созданный для представления каждой конечной точки в вызове. |
ClientInstanceId |
Уникальный идентификатор, представляющий объект call Client, созданный в вызывающем пакете SDK. |
EndpointId |
Уникальный идентификатор, представляющий каждую конечную точку, подключенную к вызову. EndpointId может сохраняться для одного пользователя в нескольких вызовах () для собственных клиентов,callIds но является уникальным для каждого вызова, когда клиент является веб-браузером. В настоящее время инструментирование EndpointId не выполняется в этом журнале. При реализации он соответствует значениям в журналах CallSummary/Diagnostics |
RemoteParticipantId |
Уникальный идентификатор, представляющий удаленную конечную точку в потоке мультимедиа. Например, пользователь может отображать несколько видеопотоков для других пользователей в одном вызове. Каждый видеопоток имеет разные RemoteParticipantId . |
RemoteEndpointId |
EndpointId Аналогично, но он представляет пользователя на удаленной стороне потока. |
MediaStreamId |
Уникальный идентификатор, представляющий каждый поток мультимедиа в вызове. MediaStreamId в настоящее время не инструментируется в клиентах. При реализации он соответствует столбцу streamId в журналах CallDiagnostics. |
AggregationIntervalSeconds |
Интервал времени для агрегирования статистики мультимедиа. В настоящее время в пакете SDK для вызовов метрики мультимедиа отображаются каждые 1 секунды, а при отчете в журнале мы агрегируем все образцы каждые 10 секунд. Поэтому каждая строка в этой таблице имеет не более 10 точек выборки. |
Вызовы P2P и группы
Существует два типа вызовов, представленных следующими способами callType
:
Вызов однорангового узла (P2P): подключение между двумя конечными точками без конечной точки сервера. Вызовы P2P инициируются как вызов между этими конечными точками и не создаются как событие группового вызова перед подключением.
Групповой вызов: любой вызов, имеющий более двух подключенных конечных точек. Групповые вызовы включают конечную точку сервера и подключение между каждой конечной точкой и сервером. Вызовы P2P, добавляющие другую конечную точку во время вызова, перестают быть P2P, и они становятся групповым вызовом. Можно определить временную шкалу при присоединении каждой конечной точки к вызову с помощью
participantStartTime
метрик иparticipantDuration
метрик.
Структура журнала
Службы коммуникации Azure создает четыре типа журналов:
Журналы сводки вызовов: содержат основные сведения о вызове, включая все соответствующие идентификаторы, метки времени, конечные точки и сведения пакета SDK. Для каждого участника в вызове службы коммуникации создают отдельный журнал сводки вызовов.
Если кто-то повторно присоединит вызов, этот участник имеет то же
EndpointId
значение, но другоеParticipantId
значение. Затем эта конечная точка может иметь два журнала сводки вызовов.Журналы диагностики вызовов: содержат сведения о потоке, а также набор метрик, указывающих на качество измерений опыта. Для каждого
EndpointId
вызова (включая сервер), Службы коммуникации Azure создает отдельный журнал диагностики вызовов для каждого потока мультимедиа (аудио или видео, например) между конечными точками.Журналы операций вызова: содержат подробные события клиента вызова. Эти события журнала создаются для каждого
EndpointId
вызова, а количество созданных журналов событий зависит от операций, выполняемых участником во время вызова.Вызов журналов статистики мультимедиа клиента: содержит подробные значения потока мультимедиа. Эти журналы создаются для каждого потока мультимедиа в вызове. Для каждого
EndpointId
вызова (включая сервер), Службы коммуникации Azure создает отдельный журнал для каждого потока мультимедиа (аудио или видео, например) между конечными точками. Объем данных, создаваемых в каждом журнале, зависит от продолжительности звонка и количества пар мультимедиа в вызове.
В вызове P2P каждый журнал содержит данные, относящиеся к каждому из исходящих потоков, связанных с каждой конечной точкой. В групповом вызове каждый поток, связанный с endpointType
= "Server"
создает журнал, содержащий данные для входящих потоков. Все остальные потоки создают журналы, содержащие данные для исходящих потоков для всех конечных точек, не являющихся серверами. В групповых вызовах используйте participantId
значение в качестве ключа для присоединения связанных входящих и исходящих журналов к отдельному подключению участника.
Пример: вызов P2P
На следующей схеме представлены две конечные точки, подключенные непосредственно в вызове P2P. В этом примере службы коммуникации создают два журнала сводки вызовов (по одному для каждого participantID
значения) и четыре журнала диагностики вызовов (по одному для каждого потока мультимедиа).
Для участников вызовов Службы коммуникации Azure также существует ряд журналов операций клиента и журналы статистики временных рядов клиентских носителей. Точное количество этих журналов зависит от типа операций ПАКЕТА SDK и длительности вызова.
Пример: групповой вызов
На следующей схеме представлен пример группового вызова с тремя participantId
значениями (что означает три участника) и конечной точкой сервера. Несколько значений для endpointId
потенциально могут отображаться в нескольких участниках, например при повторном подключении вызова с одного устройства. Службы коммуникации создают один журнал сводки вызовов для каждого participantId
значения. Он создает четыре журнала диагностики вызовов: по одному для каждого потока мультимедиа на каждый participantId
.
Для участников вызова Службы коммуникации Azure журналы операций вызова клиентов совпадают с вызовами P2P. Для каждого участника с помощью пакета SDK для вызова существует ряд журналов операций клиента.
Для участников Службы коммуникации Azure вызова клиента журналы операций вызова и журналы статистики временных рядов клиентов вызываются так же, как вызовы P2P. Для каждого участника с помощью пакета SDK для вызова есть ряд журналов операций клиента и журналы статистики временных рядов клиентских носителей.
Пример: вызов P2P между клиентами
На следующей схеме представлены два участника в нескольких клиентах, которые подключены непосредственно в вызове P2P. В этом примере Службы коммуникации создают один журнал сводки вызовов (по одному для каждого участника) с редактируемыми версиями ОС и пакета SDK. Службы коммуникации также создают четыре журнала диагностики вызовов (по одному для каждого потока мультимедиа). Каждый журнал содержит данные, относящиеся к исходящему потоку participantID
.
Пример: вызов группы между клиентами
На следующей схеме представлен пример группового вызова с тремя participantId
значениями в нескольких клиентах. Службы коммуникации создают один журнал сводки вызовов для каждого участника с редактируемыми версиями ОС и пакета SDK. Службы коммуникации также создают четыре журнала диагностики вызовов, относящиеся к каждому participantId
значению (по одному для каждого потока мультимедиа).
Примечание.
Этот выпуск поддерживает только исходящие журналы диагностики. Версии ОС и пакета 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"
}
Ниже приведена сводка по вызову ТСОП:
Примечание.
Журналы вызовов P2P или групповых вызовов имеют версии ОС и пакета 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": "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"
}
Ниже приведена сводка по вызову для конечной точки ТСОП 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"
}
Каждый участник может иметь множество различных метрик для вызова. Вы можете выполнить следующий запрос в Log Analytics в портал Azure, чтобы перечислить все возможные операции в журнале операций клиента вызова:
ACSCallClientOperations | distinct OperationName
Вызов журнала временных рядов статистики клиента
Ниже приведен пример журнала временных рядов статистики мультимедиа. В нем показана метрика Jitter участника для получения звукового потока в определенной метке времени.
"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"
}
Каждый участник может иметь множество различных метрик статистики мультимедиа для вызова. Следующий запрос можно запустить в Log Analytics в портал Azure, чтобы отобразить все возможные метрики в этом журнале:
ACSCallClientMediaStatsTimeSeries | distinct MetricName
Коды ошибок
Свойство participantEndReason
содержит значение из набора кодов ошибок пакета SDK для вызовов. Эти коды можно использовать для устранения неполадок во время вызова для каждой конечной точки. См. сведения об устранении неполадок с кодами ответов на вызовы для пакета SDK для вызовов, пакета SDK службы автоматизации вызовов, ТСОП, пакета SDK чата и ПАКЕТА SDK SMS.
Следующие шаги
Сведения о панели мониторинга аналитики для мониторинга журналов голосовых звонков и видеозвонок и метрик.
Ознакомьтесь с рекомендациями по управлению качеством и надежностью звонков, см. статью "Улучшение качества звонков и управление ими".
Узнайте, как использовать журналы вызовов для диагностики качества и надежности вызовов, см. в статье " Диагностика звонков"