Diagnostika před voláním

Důležité

Tato funkce služeb Azure Communication Services je aktuálně ve verzi Preview.

Rozhraní API a sady SDK verze Preview jsou poskytovány bez smlouvy o úrovni služeb. Doporučujeme je nepoužívat pro produkční úlohy. Některé funkce nemusí být podporované nebo můžou mít omezené možnosti.

Další informace najdete v dodatečných podmínkách použití pro verze Preview Microsoft Azure.

Rozhraní API předběžného volání umožňuje vývojářům programově ověřit připravenost klienta na připojení k volání služby Azure Communication Services. K rozhraním API před voláním je možné přistupovat prostřednictvím sady SDK pro volání. Poskytují více diagnostik, včetně zařízení, připojení a kvality hovorů. Rozhraní API předběžného volání jsou k dispozici pouze pro web (JavaScript). V budoucnu tyto možnosti povolíme na různých platformách a poskytneme nám zpětnou vazbu na to, na jakých platformách byste chtěli vidět rozhraní API před voláním.

Požadavky

Přístup k rozhraním API před voláním

Důležité

Diagnostika před voláním je dostupná od verze 1.9.1-beta.1 sady SDK volání. Při pokusu o další pokyny nezapomeňte tuto verzi použít.

Pokud chcete získat přístup k rozhraní API před voláním, musíte inicializovat callClientpřístupový token služby Azure Communication Services a zřídit ho. K této funkci a startTest metodě máte přístupPreCallDiagnostics.

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

Jakmile se dokončí jeho spuštění, můžou vývojáři získat přístup k objektu výsledku.

Výsledky diagnostiky

Rozhraní API před voláním vrátí úplnou diagnostiku zařízení, včetně podrobností, jako jsou oprávnění zařízení, dostupnost a kompatibilita, statistiky kvality volání a diagnostika volání. Výsledky se vrátí jako PreCallDiagnosticsResult objekt.


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

K jednotlivým výsledným objektům je možné přistupovat například pomocí konstanty preCallDiagnosticsResult . Výsledky jednotlivých testů se vrátí, protože jsou dokončeny s mnoha výsledky testů, které jsou k dispozici okamžitě. Pokud použijete inCallDiagnostics test, výsledky můžou trvat až 1 minutu, protože test ověří kvalitu videa a zvuku.

Podpora prohlížečů

Kontrola kompatibility prohlížeče Browser Kontroluje a OS kompatibilitu a poskytuje zpět hodnotu Supported nebo NotSupported hodnotu.


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

V případě, že test selže a prohlížeč používaný uživatelem, je NotSupportednejjednodušší způsob, jak to opravit tím, že požádá uživatele, aby přepnul na podporovaný prohlížeč. Projděte si podporované prohlížeče v naší dokumentaci.

Poznámka:

Známý problém: browser support Test, který Unknown se vrací v případech, kdy by měl vracet správnou hodnotu

Přístup k zařízení

Kontrola oprávnění Zkontroluje, jestli jsou videa a zvuková zařízení k dispozici z pohledu oprávnění. Poskytuje boolean hodnotu pro audio zařízení a video zařízení.


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

V případě, že test selže a oprávnění jsou pro zvuk a video false, neměl by uživatel pokračovat v připojení k hovoru. Místo toho musíte uživatele vyzvat k povolení oprávnění. Nejlepší způsob je poskytnout konkrétní pokyny, jak získat přístup k oprávněním na základě operačního systému, verze a prohlížeče, na které jsou. Další informace o oprávněních najdete v našich doporučeních.

Výčet zařízení

Dostupnost zařízení. Zkontroluje, jestli jsou v systému zjištěna mikrofon, kamera a reproduktory a jsou připravená k použití. Available Poskytuje hodnotu nebo NotAvailable zpět.


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

V případě, že zařízení nejsou dostupná, by uživatel neměl pokračovat v připojování k hovoru. Uživatel by měl být vyzván, aby zkontroloval připojení zařízení, aby se zajistilo, že jsou správně připojené náhlavní soupravy, kamery nebo reproduktory. Další informace o správě zařízení najdete v naší dokumentaci.

Diagnostika inCall

Provede rychlý hovor, který zkontroluje metriky volání pro zvuk a video a vrátí výsledky zpět. Zahrnuje připojení (connected, logickou hodnotu), kvalitu šířky pásma (bandWidth, 'Bad' | 'Average' | 'Good') a diagnostiku volání pro zvuk a video (diagnostics). K dispozici jitterpacketLoss je diagnostika a rtt výsledky se generují pomocí jednoduché známky kvality ('Bad' | 'Average' | 'Good').

Diagnostika InCall používá statistiky kvality médií k výpočtu skóre kvality a diagnostiky problémů. Během diagnostiky před voláním jsou k dispozici úplné sady statistik kvality médií pro spotřebu. Tyto statistiky zahrnují nezpracované hodnoty napříč video a zvukovými metrikami, které je možné použít programově. Diagnostika InCall poskytuje pohodlnou vrstvu nad statistikami kvality médií, které spotřebovávají výsledky bez nutnosti zpracovávat všechna nezpracovaná data. Pokyny pro přístup najdete v části o statistikách médií.


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

V tomto kroku existuje několik bodů selhání, na které je potřeba se podívat. Hodnoty poskytované rozhraním API jsou založené na prahových hodnotách vyžadovaných službou. Tyto nezpracované prahové hodnoty najdete v naší dokumentaci ke statistikám kvality médií.

  • Pokud připojení selže, měl by se uživateli zobrazit výzva, aby znovu kontroloval připojení k síti. Připojení selhání je možné také přiřazovat síťovým podmínkám, jako jsou DNS, proxy servery nebo brány firewall. Další informace o doporučeném nastavení sítě najdete v naší dokumentaci.
  • Pokud je Badšířka pásma, měl by se uživateli zobrazit výzva k vyzkoušení jiné sítě nebo ověření dostupnosti šířky pásma na aktuální síti. Ujistěte se, že nedochází k žádným dalším aktivitám s velkou šířkou pásma.

Statistiky médií

Podrobné statistiky metrik kvality, jako je jitter, ztráta paketů, rtt atd. callMediaStatistics jsou k dispozici jako součást preCallDiagnosticsResult funkce. Podívejte se na úplný seznam a popis dostupných metrik v propojeném článku. Pokud chcete získat úplnou kolekci, můžete se přihlásit k odběru statistik volání médií. Tento statistika je nezpracované metriky, které se používají k výpočtu výsledků diagnostiky InCall a které je možné využívat podrobně pro další analýzu.


const mediaStatsCollector = callMediaStatistics.startCollector(); 

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

Ocenění

Když se spustí diagnostický test před voláním, použije na pozadí minuty volání ke spuštění diagnostiky. Test trvá přibližně 30 sekund a využívá až 30 sekund volání, které se účtuje standardní sazbou 0,004 USD za účastníka za minutu. V případě diagnostiky před voláním bude poplatek za 1 účastníka x 30 sekund = 0,002 USD.

Další kroky