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
Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Doporučuje se verze Node.js active Long Term Support(LTS).
Aktivní prostředek komunikační služby. Vytvořte prostředek komunikační služby.
Přístupový token uživatele pro vytvoření instance klienta volání. Naučte se vytvářet a spravovat přístupové tokeny uživatelů. K vytvoření uživatele a přístupového tokenu můžete také použít Azure CLI a spustit další příkaz se svým připojovací řetězec. (Je potřeba vzít připojovací řetězec z prostředku prostřednictvím webu Azure Portal.)
az communication identity token issue --scope voip --connection-string "yourConnectionString"
Podrobnosti najdete v tématu Použití Azure CLI k vytváření a správě přístupových tokenů.
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 callClient
pří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 NotSupported
nejjednodušší 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 jitter
packetLoss
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.