Бөлісу құралы:


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

Важно!

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

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

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

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

Необходимые компоненты

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

Важно!

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

Чтобы получить доступ к API предварительного вызова, необходимо инициализировать 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);

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

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

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

Примечание.

Известная проблема: 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)
  }

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

InCall диагностика

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

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

Статистика мультимедиа

Для подробных статистических данных о метриках качества, таких как jitter, потеря пакетов, rtt и т. д. callMediaStatistics предоставляется как часть preCallDiagnosticsResult функции. Полный список и описание доступных метрик в связанной статье. Вы можете подписаться на статистику вызовов, чтобы получить полную коллекцию из них. Эта статистика — это необработанные метрики, которые используются для вычисления результатов диагностики InCall и которые можно использовать детально для дальнейшего анализа.


const mediaStatsCollector = callMediaStatistics.startCollector(); 

mediaStatsCollector.on('mediaStatsEmitted', (mediaStats: SDK.MediaStats) => { 
    // process the stats for the call. 
    console.log(mediaStats);
});

Ценообразование

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

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