Поделиться через


Службы коммуникации 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 Количество единиц, использованных или потребленных для данной записи.

Схема сводного журнала вызова

В журнале сводки вызовов содержатся данные, помогающие определить ключевые свойства всех вызовов. Для каждого participantId вызова создается другой журнал сводки вызовов (endpointId в случае одноранговых вызовов [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 или клиентом Майкрософт удостоверения M365. Это поле используется для руководства по редактированию между клиентами.
participantType Описание участника в качестве сочетания клиента (Службы коммуникации Azure или Teams) и его удостоверения (Службы коммуникации Azure или Microsoft 365). Возможные значения: Службы коммуникации Azure (удостоверение Службы коммуникации Azure и пакет SDK Службы коммуникации Azure), Teams (удостоверение Teams и клиент Teams); Службы коммуникации Azure как внешний пользователь Teams (удостоверение Службы коммуникации Azure и пакет SDK Службы коммуникации Azure в вызовах или собрании Teams), Службы коммуникации Azure как Microsoft 365 user (удостоверение M365 и клиент Службы коммуникации Azure) и приложения голосовой связи Teams.
pstnPartcipantCallType Он представляет тип и направление участников ТСОП, включая экстренные вызовы, прямую маршрутизацию, передачу, пересылку и т. д.

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

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

Для каждой конечной точки в вызове создается отдельный журнал диагностики вызовов для исходящих потоков мультимедиа (аудио или видео, например) между конечными точками. В вызове 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 — это длительность звукового примера или видеокадр, который остается в буфере jitter.

Как правило, если значение 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 мс для потока экранного управления.

Схема журнала операций вызова клиента

Внимание

Функции, описанные в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

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

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

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

Внимание

Функции, описанные в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Журнал статистики временных рядов клиента вызова предоставляет клиентские сведения о потоках мультимедиа между отдельными участниками, участвующими в вызове. Эти журналы в настоящее время находятся в ограниченной предварительной версии и предоставляют подробные данные временных рядов на аудио, видео и экранных носителях пар между участниками с интервалом агрегирования по умолчанию 10 секунд. Журналы содержат подробные сведения о типе потока мультимедиа, направлении, кодеке, а также свойствах скорости (например, max, min, average).

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

Свойство Description
OperationName Операция, связанная с записью журнала.
CallId Уникальный идентификатор для вызова. Он определяет коррелированные события от всех участников и конечных точек, которые подключаются во время одного вызова, и его можно использовать для присоединения данных из разных журналов. Он аналогичен корреляции в журнале сводки вызовов и журнале диагностики вызовов.
CallClientTimeStamp Метка времени записи статистики мультимедиа.
MetricName Имя статистики мультимедиа, например Bitrate, JitterInMs, PacketsPerSecond и т. д.
Count Количество точек данных, выборочных в заданной метке времени.
Sum Сумма значений метрик всех точек данных, выборочных.
Average Среднее значение метрик выборки точек данных. Среднее = сумма / число
Minimum Минимальное значение метрик всех точек данных, выборочных.
Maximum Максимальное количество значений метрик всех точек данных, выборочных.
MediaStreamDirection Направление потока мультимедиа. Его можно отправить или получить
MediaStreamType Тип потока мультимедиа. Это может быть видео, звук или экран.
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 (ACS) также будет ряд журналов операций вызова клиента и журналы статистики временных рядов клиентских носителей. Точное количество этих журналов зависит от того, какие операции пакета SDK вызываются и сколько времени вызывается вызов.

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

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

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

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

Для Службы коммуникации Azure (ACS) участники вызова клиентов вызывают журналы операций клиента и журналы статистики статистики клиентских носителей совпадают с вызовами 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 для вызовов. Эти коды можно использовать для устранения неполадок во время вызова для каждой конечной точки. См. сведения об устранении неполадок в Службы коммуникации Azure.

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