Службы коммуникации 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, добавляющие другую конечную точку во время вызова, перестают быть P2P, и они становятся групповым вызовом. Можно определить временную шкалу при присоединении каждой конечной точки к вызову с помощью participantStartTime метрик и participantDuration метрик.

    Схема, показывающая вызов группы между несколькими конечными точками.

Структура журнала

Службы коммуникации Azure создает четыре типа журналов:

  • Журналы сводки вызовов: содержат основные сведения о вызове, включая все соответствующие идентификаторы, метки времени, конечные точки и сведения пакета SDK. Для каждого участника в вызове службы коммуникации создают отдельный журнал сводки вызовов.

    Если кто-то повторно присоединит вызов, этот участник имеет то же EndpointId значение, но другое ParticipantId значение. Затем эта конечная точка может иметь два журнала сводки вызовов.

  • Журналы диагностики вызовов: содержат сведения о потоке, а также набор метрик, указывающих на качество измерений опыта. Для каждого EndpointId вызова (включая сервер), Службы коммуникации Azure создает отдельный журнал диагностики вызовов для каждого потока мультимедиа (аудио или видео, например) между конечными точками.

  • Журналы операций вызова: содержат подробные события клиента вызова. Эти события журнала создаются для каждого EndpointId вызова, а количество созданных журналов событий зависит от операций, выполняемых участником во время вызова.

  • Вызов журналов статистики мультимедиа клиента: содержит подробные значения потока мультимедиа. Эти журналы создаются для каждого потока мультимедиа в вызове. Для каждого EndpointId вызова (включая сервер), Службы коммуникации Azure создает отдельный журнал для каждого потока мультимедиа (аудио или видео, например) между конечными точками. Объем данных, создаваемых в каждом журнале, зависит от продолжительности звонка и количества пар мультимедиа в вызове.

В вызове P2P каждый журнал содержит данные, относящиеся к каждому из исходящих потоков, связанных с каждой конечной точкой. В групповом вызове каждый поток, связанный с endpointType = "Server" создает журнал, содержащий данные для входящих потоков. Все остальные потоки создают журналы, содержащие данные для исходящих потоков для всех конечных точек, не являющихся серверами. В групповых вызовах используйте participantId значение в качестве ключа для присоединения связанных входящих и исходящих журналов к отдельному подключению участника.

Пример: вызов P2P

На следующей схеме представлены две конечные точки, подключенные непосредственно в вызове P2P. В этом примере службы коммуникации создают два журнала сводки вызовов (по одному для каждого participantID значения) и четыре журнала диагностики вызовов (по одному для каждого потока мультимедиа).

Для участников вызовов Службы коммуникации Azure также существует ряд журналов операций клиента и журналы статистики временных рядов клиентских носителей. Точное количество этих журналов зависит от типа операций ПАКЕТА SDK и длительности вызова.

Схема вызова P2P в одном клиенте.

Пример: групповой вызов

На следующей схеме представлен пример группового вызова с тремя participantId значениями (что означает три участника) и конечной точкой сервера. Несколько значений для endpointId потенциально могут отображаться в нескольких участниках, например при повторном подключении вызова с одного устройства. Службы коммуникации создают один журнал сводки вызовов для каждого participantId значения. Он создает четыре журнала диагностики вызовов: по одному для каждого потока мультимедиа на каждый participantId.

Для участников вызова Службы коммуникации Azure журналы операций вызова клиентов совпадают с вызовами P2P. Для каждого участника с помощью пакета SDK для вызова существует ряд журналов операций клиента.

Для участников Службы коммуникации Azure вызова клиента журналы операций вызова и журналы статистики временных рядов клиентов вызываются так же, как вызовы P2P. Для каждого участника с помощью пакета SDK для вызова есть ряд журналов операций клиента и журналы статистики временных рядов клиентских носителей.

Схема, показывающая групповой вызов в одном клиенте.

Пример: вызов P2P между клиентами

На следующей схеме представлены два участника в нескольких клиентах, которые подключены непосредственно в вызове P2P. В этом примере Службы коммуникации создают один журнал сводки вызовов (по одному для каждого участника) с редактируемыми версиями ОС и пакета SDK. Службы коммуникации также создают четыре журнала диагностики вызовов (по одному для каждого потока мультимедиа). Каждый журнал содержит данные, относящиеся к исходящему потоку participantID.

Схема, показывающая вызов P2P между клиентами.

Пример: вызов группы между клиентами

На следующей схеме представлен пример группового вызова с тремя 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":            "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"
}

Ниже приведена сводка по вызову ТСОП:

Примечание.

Журналы вызовов 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":            "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"
}

Ниже приведена сводка по вызову для конечной точки ТСОП 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"
}

Каждый участник может иметь множество различных метрик для вызова. Вы можете выполнить следующий запрос в Log Analytics в портал Azure, чтобы перечислить все возможные операции в журнале операций клиента вызова:

ACSCallClientOperations | distinct OperationName

Вызов журнала временных рядов статистики клиента

Ниже приведен пример журнала временных рядов статистики мультимедиа. В нем показана метрика Jitter участника для получения звукового потока в определенной метке времени.

"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"
}

Каждый участник может иметь множество различных метрик статистики мультимедиа для вызова. Следующий запрос можно запустить в Log Analytics в портал Azure, чтобы отобразить все возможные метрики в этом журнале:

ACSCallClientMediaStatsTimeSeries | distinct MetricName

Коды ошибок

Свойство participantEndReason содержит значение из набора кодов ошибок пакета SDK для вызовов. Эти коды можно использовать для устранения неполадок во время вызова для каждой конечной точки. См. сведения об устранении неполадок с кодами ответов на вызовы для пакета SDK для вызовов, пакета SDK службы автоматизации вызовов, ТСОП, пакета SDK чата и ПАКЕТА SDK SMS.

Следующие шаги