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


Обзор диагностики предварительного вызова

Внимание

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

Предварительные версии API и пакеты SDK предоставляются без соглашения об уровне обслуживания. Мы рекомендуем не использовать их для производственных нагрузок. Некоторые функции могут не поддерживаться или могут быть ограничены.

Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.

Функция API предварительного вызова позволяет разработчикам программно проверить готовность клиента присоединиться к вызову Службы коммуникации Azure. Доступ к функциям предварительного вызова можно получить только с помощью пакета SDK для вызовов. Функция диагностики предварительного вызова предоставляет множество диагностик, включая устройство, подключение и качество вызова. Функция диагностики предварительного вызова доступна только для Web (JavaScript). Мы планируем включить эти возможности на разных платформах в будущем. Предоставьте нам отзыв о том, на каких платформах вы хотите включить диагностику предварительного вызова.

Предварительные условия

Доступ к предварительной диагностике вызова

Внимание

Диагностика вызовов доступна начиная с версии 1.9.1-beta.1 SDK для звонков. При выполнении этих инструкций обязательно используйте такую версию или более позднюю.

Чтобы получить доступ к диагностике перед вызовом, необходимо инициализировать callClient, а также подготовить токен доступа для службы связи Azure. Там вы можете получить доступ к PreCallDiagnostics функции и методу startTest .

import { CallClient, Features} from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';

const callClient = new CallClient(); 
const tokenCredential = new AzureCommunicationTokenCredential("INSERT ACCESS TOKEN");
const preCallDiagnosticsResult = await callClient.feature(Features.PreCallDiagnostics).startTest(tokenCredential);

После завершения работы разработчики смогут получить доступ к объекту результата.

Результаты диагностики

Диагностика перед вызовом возвращает полную диагностику устройства, включая такие сведения, как разрешения устройства, доступность и совместимость, статистика качества звука звонков и диагностика в процессе звонка. Результаты возвращаются в виде PreCallDiagnosticsResult объекта.


export declare type PreCallDiagnosticsResult  = {
    deviceAccess: Promise<DeviceAccess>;
    deviceEnumeration: Promise<DeviceEnumeration>;
    inCallDiagnostics: Promise<InCallDiagnostics>;
    browserSupport?: Promise<DeviceCompatibility>;
    id: string;
    callMediaStatistics?: Promise<MediaStatsCallFeature>;
};

Доступ к отдельным объектам результатов можно получить с помощью preCallDiagnosticsResult типа. Результаты индивидуальных тестов возвращаются по мере их завершения, причем результаты многих тестов становятся доступны сразу. При использовании inCallDiagnostics теста результаты могут занять до 1 минуты, так как тест проверяет качество видео и звука.

Поддержка веб-браузеров

Проверка совместимости браузера. Проверяет Browser и OS на совместимость и возвращает значение Supported или NotSupported.


const browserSupport =  await preCallDiagnosticsResult.browserSupport;
  if(browserSupport) {
    console.log(browserSupport.browser)
    console.log(browserSupport.os)
  }

Если тест завершается ошибкой, и браузер, используемый пользователем, — NotSupported, самый простой способ исправить это — попросить пользователя переключиться на поддерживаемый браузер. Ознакомьтесь с поддерживаемыми браузерами в обзоре > пакета SDK для вызовов JavaScript, поддерживаемого ОС и браузером.

Примечание.

Известная проблема: browser support проверка, возвращающая Unknown в случаях, когда она должна возвращать корректное значение.

Доступ к устройствам

Проверка разрешений определяет, доступны ли видео и звуковые устройства с точки зрения разрешений. Предоставляет boolean значение для audio устройств и video устройств.


  const deviceAccess =  await preCallDiagnosticsResult.deviceAccess;
  if(deviceAccess) {
    console.log(deviceAccess.audio)
    console.log(deviceAccess.video)
  }

Если тест завершается ошибкой, а разрешения являются ложными для звука и видео, пользователь не должен продолжать присоединяться к вызову. Скорее, предложите пользователю включить разрешения. Лучше всего это сделать, предоставив конкретную инструкцию по доступу к разрешениям на основе ОС, версии и браузера, которые они используют. Дополнительные сведения о разрешениях см. Контрольный список для опытных вызовов в веб-браузерах.

Перечисление устройств

Доступность устройства. Проверяет, обнаружены ли устройства микрофона, камеры и динамиков в системе и готовы к использованию. Возвращает значение Available или NotAvailable.


  const deviceEnumeration = await preCallDiagnosticsResult.deviceEnumeration;
  if(deviceEnumeration) {
    console.log(deviceEnumeration.microphone)
    console.log(deviceEnumeration.camera)
    console.log(deviceEnumeration.speaker)
  }

Если устройства недоступны, пользователь не должен продолжать присоединяться к вызову. Скорее, предложите пользователю проверить подключения устройств, чтобы убедиться, что все гарнитуры, камеры или динамики правильно подключены. Дополнительные сведения об управлении устройствами см. в разделе "Управление видео во время вызовов".

Диагностика звонков

Выполняет быстрый вызов для проверки метрик аудио- и видеозвонков и возвращает результаты. Включает подключение (connected, логическое значение), качество пропускной способности (bandWidth, 'Bad' | 'Average' | 'Good') и диагностику вызовов для аудио и видео (diagnostics). Предоставляемые категории диагностики включают jitter, packetLoss, и rtt, и результаты создаются с помощью простого класса качества ('Bad' | 'Average' | 'Good').

InCall diagnostics использует статистику качества мультимедиа для вычисления показателей качества и диагностики проблем. Во время предварительной диагностики полный набор статистики качества мультимедиа доступен для использования. Эти статистические данные включают необработанные значения для видео и звуковых метрик, которые можно использовать программным способом.

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


  const inCallDiagnostics =  await preCallDiagnosticsResult.inCallDiagnostics;
  if(inCallDiagnostics) {    
    console.log(inCallDiagnostics.connected)
    console.log(inCallDiagnostics.bandWidth)
    console.log(inCallDiagnostics.diagnostics.audio)
    console.log(inCallDiagnostics.diagnostics.video)
  }

На этом шаге существует несколько возможных точек сбоя. Значения, предоставляемые API, основаны на пороговых значениях, необходимых службе. Необработанные пороговые значения можно найти в статистике качества мультимедиа.

  • Если подключение завершается ошибкой, предложите пользователям повторно проверить сетевое подключение. Сбои подключения также могут быть связаны с сетевыми условиями, такими как DNS, прокси-серверы или брандмауэры. Дополнительные сведения о рекомендуемых настройках сети см. в разделе Рекомендации по сети.
  • Если пропускная способность имеет Badзначение, предложите пользователям попробовать другую сеть или проверить доступность пропускной способности в текущей сети. Убедитесь, что не выполняются другие действия с высокой пропускной способностью.

Цены

Когда тест диагностики предварительного вызова выполняется в фоновом режиме, он использует минуты вызова для проведения диагностики. Тест длится примерно 30 секунд, занимая 30 секунд времени на звонок, который тарифицируется по стандартной ставке 0,004 доллара США за участника в минуту. В случае предварительного вызова диагностика плата взимается за 1 участника x 30 секунд = $0,002.

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