Диагностика предварительного вызова
Важно!
Эта функция Службы коммуникации Azure сейчас доступна в предварительной версии.
Предварительные версии API и пакеты SDK предоставляются без соглашения об уровне обслуживания. Рекомендуется не использовать их для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности.
Дополнительные сведения см . в дополнительных условиях использования для предварительных версий Microsoft Azure.
API предварительного вызова позволяет разработчикам программно проверить готовность клиента присоединиться к Службы коммуникации Azure вызову. Доступ к API-интерфейсам предварительного вызова можно получить с помощью пакета SDK для вызовов. Они предоставляют несколько диагностика включая устройство, подключение и качество вызова. API-интерфейсы предварительного вызова доступны только для веб-приложений (JavaScript). Мы будем включать эти возможности на разных платформах в будущем, предоставим нам отзывы о том, какие платформы вы хотите просмотреть API-интерфейсы предварительного вызова.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Рекомендуется использовать версии node.js active Long Term Support(LTS).
Активный ресурс Служб коммуникации. Создайте ресурс Служб коммуникации.
Маркер доступа пользователя для создания экземпляра клиента вызова. Узнайте, как создать маркер доступа пользователя и обеспечить управление им. Вы также можете использовать Azure CLI и выполнить следующую команду с строка подключения для создания пользователя и маркера доступа. (Необходимо получить строка подключения из ресурса через портал Azure.)
az communication identity token issue --scope voip --connection-string "yourConnectionString"
Дополнительные сведения см. в статье "Создание маркеров доступа и управление ими" с помощью Azure CLI.
Доступ к 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 диагностика
Выполняет быстрый вызов для проверка метрик звонков для аудио и видео и предоставляет результаты обратно. Включает подключение (, логическое значение), качество пропускной способности (connected
bandWidth
,'Bad' | 'Average' | 'Good'
) и вызов диагностика для аудио и видео (diagnostics
). Предоставляются диагностические jitter
packetLoss
данные и 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.