Diagnostyka przed wywołaniem

Ważne

Ta funkcja usług Azure Communication Services jest obecnie dostępna w wersji zapoznawczej.

Interfejsy API i zestawy SDK w wersji zapoznawczej są udostępniane bez umowy dotyczącej poziomu usług. Zalecamy, aby nie używać ich w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą nie być obsługiwane lub mogą mieć ograniczone możliwości.

Aby uzyskać więcej informacji, zapoznaj się z dodatkowymi warunkami użytkowania dla wersji zapoznawczych platformy Microsoft Azure.

Interfejs API przed wywołaniami umożliwia deweloperom programowe weryfikowanie gotowości klienta do dołączenia do wywołania usług Azure Communication Services. Dostęp do interfejsów API przed wywołaniami można uzyskać za pośrednictwem zestawu Sdk wywołującego. Zapewniają one wiele diagnostyki, w tym jakość urządzeń, połączeń i połączeń. Interfejsy API przed wywołaniami są dostępne tylko dla sieci Web (JavaScript). W przyszłości włączymy te możliwości na różnych platformach. Przekażemy nam opinię na temat platform, na których chcesz zobaczyć interfejsy API przed wywołaniami.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

  • Zalecane są wersje Biblioteki Node.js z obsługą długoterminową (LTS).

  • Aktywny zasób usług komunikacyjnych. Utwórz zasób usług komunikacyjnych.

  • Token dostępu użytkownika w celu utworzenia wystąpienia klienta wywołania. Dowiedz się, jak tworzyć tokeny dostępu użytkowników i zarządzać nimi. Możesz również użyć interfejsu wiersza polecenia platformy Azure i uruchomić następne polecenie za pomocą parametry połączenia, aby utworzyć użytkownika i token dostępu. (Należy pobrać parametry połączenia z zasobu za pośrednictwem witryny Azure Portal).

    az communication identity token issue --scope voip --connection-string "yourConnectionString"
    

    Aby uzyskać szczegółowe informacje, zobacz Tworzenie tokenów dostępu za pomocą interfejsu wiersza polecenia platformy Azure i zarządzanie nimi.

Uzyskiwanie dostępu do interfejsów API przed wywołaniami

Ważne

Diagnostyka wywołań wstępnych jest dostępna od wersji 1.9.1-beta.1 zestawu Call SDK. Pamiętaj, aby użyć tej wersji podczas próby wykonania następnych instrukcji.

Aby uzyskać dostęp do interfejsu API przed wywołaniem, należy zainicjować callClientelement i aprowizować token dostępu usług Azure Communication Services. W tym miejscu możesz uzyskać dostęp do PreCallDiagnostics funkcji i startTest metody .

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);

Po zakończeniu działania deweloperzy mogą uzyskać dostęp do obiektu wynikowego.

Wyniki diagnostyki

Interfejs API przed wywołaniami zwraca pełną diagnostykę urządzenia, w tym szczegółowe informacje, takie jak uprawnienia urządzenia, dostępność i zgodność, statystyki jakości wywołań i diagnostyka wywołań. Wyniki są zwracane jako PreCallDiagnosticsResult obiekt.


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

Dostęp do poszczególnych obiektów wyników można uzyskać, na przykład przy użyciu stałej preCallDiagnosticsResult . Wyniki poszczególnych testów są zwracane w miarę ich ukończenia, gdy wiele wyników testów jest dostępnych natychmiast. Jeśli używasz inCallDiagnostics testu, wyniki mogą potrwać do 1 minuty, ponieważ test weryfikuje jakość wideo i dźwięku.

Obsługa przeglądarek

Sprawdzanie zgodności przeglądarki. Browser Sprawdza poprawność i OS zgodność oraz udostępnia Supported wartość lub NotSupported z powrotem.


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

W przypadku niepowodzenia testu i przeglądarki używanej przez użytkownika jest , najprostszym sposobem rozwiązania tego problemu jest NotSupportedprośba użytkownika o przełączenie się do obsługiwanej przeglądarki. Zapoznaj się z obsługiwanymi przeglądarkami w naszej dokumentacji.

Uwaga

Znany problem: browser support test zwracany Unknown w przypadkach, w których powinien zwracać poprawną wartość.

Dostęp do urządzenia

Sprawdzanie uprawnień. Sprawdza, czy urządzenia wideo i audio są dostępne z perspektywy uprawnień. Zapewnia boolean wartość dla audio urządzeń i video .


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

Jeśli test zakończy się niepowodzeniem, a uprawnienia są fałszywe dla audio i wideo, użytkownik nie powinien kontynuować dołączania do połączenia. Zamiast tego należy monitować użytkownika o włączenie uprawnień. Aby to zrobić, najlepszym sposobem jest wprowadzenie konkretnej instrukcji dotyczącej uzyskiwania dostępu do uprawnień na podstawie systemu operacyjnego, wersji i przeglądarki, na której są włączone. Aby uzyskać więcej informacji na temat uprawnień, zapoznaj się z naszymi zaleceniami.

Wyliczenie urządzenia

Dostępność urządzenia. Sprawdza, czy w systemie wykryto mikrofon, aparat i głośnik oraz czy są gotowe do użycia. Available Udostępnia wartość lub NotAvailable lub z powrotem.


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

W przypadku, gdy urządzenia nie są dostępne, użytkownik nie powinien kontynuować dołączania do połączenia. Zamiast tego użytkownik powinien zostać poproszony o sprawdzenie połączeń urządzeń w celu upewnienia się, że wszystkie zestawy nagłowne, kamery lub głośniki są prawidłowo podłączone. Aby uzyskać więcej informacji na temat zarządzania urządzeniami, zapoznaj się z naszą dokumentacją

Diagnostyka InCall

Wykonuje szybkie wywołanie, aby zaewidencjonować metryki wywołania dla audio i wideo i dostarcza wyniki z powrotem. Obejmuje łączność (connected, wartość logiczną), jakość przepustowości (bandWidth, 'Bad' | 'Average' | 'Good') oraz diagnostykę połączeń audio i wideo (diagnostics). Dostępne są dane diagnostyczne, a wyniki są jitterpacketLoss generowane przy użyciu prostej klasy jakości ('Bad' | 'Average' | 'Good').rtt

Diagnostyka InCall używa statystyk jakości multimediów do obliczania wyników jakości i diagnozowania problemów. Podczas diagnostyki przed wywołaniami pełny zestaw statystyk jakości multimediów jest dostępny do użycia. Te statystyki obejmują nieprzetworzone wartości w metrykach wideo i audio, które mogą być używane programowo. Diagnostyka InCall zapewnia wygodną warstwę na podstawie statystyk jakości multimediów, aby korzystać z wyników bez konieczności przetwarzania wszystkich nieprzetworzonych danych. Aby uzyskać instrukcje dostępu, zobacz sekcję statystyki multimediów.


  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)
  }

W tym kroku należy zwrócić uwagę na wiele punktów awarii. Wartości udostępniane przez interfejs API są oparte na wartościach progowych wymaganych przez usługę. Te nieprzetworzone progi można znaleźć w naszej dokumentacji statystyk jakości multimediów.

  • Jeśli połączenie nie powiedzie się, użytkownik powinien zostać poproszony o ponowne sprawdzanie łączności sieciowej. błędy Połączenie ion mogą być również przypisywane do warunków sieciowych, takich jak DNS, serwery proxy lub zapory. Aby uzyskać więcej informacji na temat zalecanego ustawienia sieci, zapoznaj się z naszą dokumentacją.
  • Jeśli przepustowość to Bad, użytkownik powinien zostać poproszony o wypróbowanie innej sieci lub zweryfikowanie dostępności przepustowości w bieżącej sieci. Upewnij się, że nie będą wykonywane żadne inne działania o wysokiej przepustowości.

Statystyki multimediów

Szczegółowe statystyki metryk jakości, takie jak zakłócenia, utrata pakietów, rtt itp. callMediaStatistics są udostępniane jako część preCallDiagnosticsResult funkcji. Zobacz pełną listę i opis dostępnych metryk w połączonym artykule. Możesz subskrybować statystyki multimediów połączeń, aby uzyskać pełną kolekcję. Ta statystyka to nieprzetworzone metryki, które są używane do obliczania wyników diagnostycznych InCall i które można wykorzystać szczegółowo do dalszej analizy.


const mediaStatsCollector = callMediaStatistics.startCollector(); 

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

Kalkulacja cen

Po uruchomieniu testu diagnostycznego przed wywołaniem w tle uruchamia diagnostykę za pomocą wywołań minut. Test trwa około 30 sekund, używając maksymalnie 30 sekund wywołania, które jest naliczane według standardowej stawki 0,004 USD na uczestnika na minutę. W przypadku diagnostyki przed wywołaniem opłata będzie naliczana za 1 uczestnika x 30 sekund = $0.002.

Następne kroki