다음을 통해 공유


사전 호출 진단

Important

Azure Communication Services의 이 기능은 현재 미리 보기 상태입니다.

미리 보기 API 및 SDK는 서비스 수준 계약 없이 제공됩니다. 프로덕션 워크로드에는 사용하지 않는 것이 좋습니다. 일부 기능은 지원되지 않거나 기능이 제한될 수 있습니다.

자세한 내용은 Microsoft Azure 미리 보기에 대한 보충 사용 약관을 검토하세요.

사전 호출 API 기능을 사용하면 개발자가 Azure Communication Services 호출에 참여할 준비가 되도록 클라이언트의 준비 상태를 프로그래밍 방식으로 확인할 수 있습니다. 통화 SDK를 사용하여 호출 전 기능에만 액세스할 수 있습니다. 사전 호출 진단 기능은 디바이스, 연결 및 통화 품질을 비롯한 여러 진단을 제공합니다. 사전 호출 진단 기능은 웹(JavaScript)에만 사용할 수 있습니다. 향후 플랫폼 간에 이러한 기능을 사용하도록 설정할 계획입니다. 사전 호출 진단을 사용하도록 설정하려는 플랫폼에 대한 피드백을 제공합니다.

필수 조건

사전 호출 진단에 액세스

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을 반환합니다.

디바이스 액세스

사용 권한 검사는 사용 권한 관점에서 비디오 및 오디오 디바이스를 사용할 수 있는지 여부를 결정합니다. audiovideo 디바이스에 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)에 대한 호출 진단을 포함합니다. 제공된 진단 범주에는 간단한 jitterpacketLossrtt 품질 등급('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입니다.

다음 단계