사전 호출 진단
Important
Azure Communication Services의 이 기능은 현재 미리 보기 상태입니다.
미리 보기 API 및 SDK는 서비스 수준 계약 없이 제공됩니다. 프로덕션 워크로드에는 사용하지 않는 것이 좋습니다. 일부 기능은 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure 미리 보기에 대한 보충 사용 약관을 검토하세요.
사전 호출 API 기능을 사용하면 개발자가 Azure Communication Services 호출에 참여할 준비가 되도록 클라이언트의 준비 상태를 프로그래밍 방식으로 확인할 수 있습니다. 통화 SDK를 사용하여 호출 전 기능에만 액세스할 수 있습니다. 사전 호출 진단 기능은 디바이스, 연결 및 통화 품질을 비롯한 여러 진단을 제공합니다. 사전 호출 진단 기능은 웹(JavaScript)에만 사용할 수 있습니다. 향후 플랫폼 간에 이러한 기능을 사용하도록 설정할 계획입니다. 사전 호출 진단을 사용하도록 설정하려는 플랫폼에 대한 피드백을 제공합니다.
필수 조건
활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
Node.js 활성 LTS(장기 지원) 버전이 권장됩니다.
활성 Communication Services 리소스 Communication Services 리소스 만들기
호출 클라이언트를 인스턴스화하기 위한 사용자 액세스 토큰입니다. 사용자 액세스 토큰 만들기 및 관리 방법에 대해 알아봅니다. 또한 Azure CLI를 사용하고 연결 문자열과 함께 다음 명령을 실행하여 사용자 및 액세스 토큰을 만들 수 있습니다. Azure Portal을 통해 리소스에서 연결 문자열 복사해야 합니다.
az communication identity token issue --scope voip --connection-string "yourConnectionString"
자세한 내용은 Azure CLI를 사용하여 액세스 토큰 만들기 및 관리를 참조하세요.
사전 호출 진단에 액세스
Important
호출 전 진단은 통화 SDK의 버전 1.9.1-beta.1 부터 사용할 수 있습니다. 다음 지침에 따라 해당 버전 이상을 사용해야 합니다.
호출 전 진단에 액세스하려면 Azure Communication Services 액세스 토큰을 callClient
초기화하고 프로비전해야 합니다. 여기에서 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
있는 경우 사용자에게 지원되는 브라우저로 전환하도록 요청하는 가장 쉬운 해결 방법입니다. OS 및 브라우저에서 SDK 호출 개요 > JavaScript 통화 SDK 지원에서 지원되는 브라우저를 참조하세요.
참고 항목
알려진 문제: browser support
테스트는 올바른 값을 반환해야 하는 경우 Unknown
을 반환합니다.
디바이스 액세스
사용 권한 검사는 사용 권한 관점에서 비디오 및 오디오 디바이스를 사용할 수 있는지 여부를 결정합니다. audio
및 video
디바이스에 boolean
값을 제공합니다.
const deviceAccess = await preCallDiagnosticsResult.deviceAccess;
if(deviceAccess) {
console.log(deviceAccess.audio)
console.log(deviceAccess.video)
}
테스트가 실패하고 오디오 및 비디오에 대한 사용 권한이 false인 경우 사용자는 통화에 계속 참가해서는 안 됩니다. 대신 사용자에게 사용 권한을 사용하도록 설정하라는 메시지를 표시합니다. 이 작업을 수행하는 가장 좋은 방법은 사용 중인 OS, 버전 및 브라우저에 따라 권한에 액세스하는 방법에 대한 특정 지침을 제공하는 것입니다. 사용 권한에 대한 자세한 내용은 웹 브라우저의 고급 통화 환경에 대한 검사 목록을 참조하세요.
장치 열거형
디바이스 가용성. 시스템에서 마이크, 카메라 및 스피커 디바이스가 감지되어 사용할 준비가 되었는지 확인합니다. 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
사용자에게 다른 네트워크를 시도하거나 현재 네트워크에서 대역폭 가용성을 확인하라는 메시지를 표시합니다. 다른 높은 대역폭 활동이 발생하지 않도록 합니다.
가격 책정
사전 호출 진단 테스트가 백그라운드에서 실행되면 호출 시간(분)을 사용하여 진단을 실행합니다. 테스트는 약 30초 동안 지속되며, 분당 참가자당 $0.004의 표준 요금으로 청구되는 최대 30초의 통화 시간을 사용합니다. 사전 통화 진단의 경우 요금은 참가자 1명 x 30초 = $0.002입니다.