Diagnostik före anrop
Viktigt!
Den här funktionen i Azure Communication Services är för närvarande i förhandsversion.
Förhandsversions-API:er och SDK:er tillhandahålls utan ett serviceavtal. Vi rekommenderar att du inte använder dem för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds, eller så kan de ha begränsade funktioner.
Mer information finns i Kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
Api-funktionen före anrop gör det möjligt för utvecklare att programmatiskt verifiera en klients beredskap att ansluta till ett Azure Communication Services-anrop. Du kan bara komma åt funktioner före anrop med hjälp av Calling SDK. Diagnostikfunktionen före anropet innehåller flera diagnostikfunktioner, inklusive enhet, anslutning och samtalskvalitet. Den föranropsdiagnotiska funktionen är endast tillgänglig för webben (JavaScript). Vi planerar att aktivera dessa funktioner på olika plattformar i framtiden. Ge oss feedback om vilka plattformar du vill se diagnostik före anrop aktiverat.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Node.js aktiva LTS-versioner (Long Term Support) rekommenderas.
En aktiv Communication Services-resurs. Skapa en Communication Services-resurs.
En användaråtkomsttoken för att instansiera anropsklienten. Lär dig hur du skapar och hanterar användaråtkomsttoken. Du kan också använda Azure CLI och köra nästa kommando med din anslutningssträng för att skapa en användare och en åtkomsttoken. Kom ihåg att kopiera anslutningssträng från resursen via Azure Portal.
az communication identity token issue --scope voip --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Åtkomst till diagnostik före anrop
Viktigt!
Diagnostik före anrop är tillgängliga från och med version 1.9.1-beta.1 av anropande SDK. Se till att använda den versionen eller senare när du följer dessa instruktioner.
För att få åtkomst till diagnostik före anropet måste du initiera en callClient
och etablera en åtkomsttoken för Azure Communication Services. Där kan du komma åt PreCallDiagnostics
funktionen och startTest
metoden.
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);
När den är klar kan utvecklare komma åt resultatobjektet.
Diagnostiska resultat
Diagnostik före anrop returnerar en fullständig diagnostik av enheten, inklusive information som enhetsbehörigheter, tillgänglighet och kompatibilitet, samtalskvalitetsstatistik och diagnostik under anrop. Resultatet returneras som ett PreCallDiagnosticsResult
objekt.
export declare type PreCallDiagnosticsResult = {
deviceAccess: Promise<DeviceAccess>;
deviceEnumeration: Promise<DeviceEnumeration>;
inCallDiagnostics: Promise<InCallDiagnostics>;
browserSupport?: Promise<DeviceCompatibility>;
id: string;
callMediaStatistics?: Promise<MediaStatsCallFeature>;
};
Du kan komma åt enskilda resultatobjekt med hjälp av preCallDiagnosticsResult
typen . Resultat för enskilda tester returneras när de har slutförts och många av testresultaten är tillgängliga omedelbart. Om du använder inCallDiagnostics
testet kan resultatet ta upp till 1 minut eftersom testet validerar kvaliteten på video och ljud.
Webbläsarstöd
Kompatibilitetskontroll för webbläsare. Söker Browser
efter och OS
kompatibilitet och returnerar ett Supported
eller NotSupported
-värde.
const browserSupport = await preCallDiagnosticsResult.browserSupport;
if(browserSupport) {
console.log(browserSupport.browser)
console.log(browserSupport.os)
}
Om testet misslyckas och webbläsaren som används av användaren är NotSupported
, är det enklaste sättet att åtgärda det genom att be användaren att växla till en webbläsare som stöds. Se de webbläsare som stöds i Calling SDK overview > JavaScript Calling SDK support by OS and browser (JavaScript Calling SDK-stöd per operativsystem och webbläsare).
Kommentar
Känt problem: browser support
test returnerar Unknown
i fall där det ska returnera ett korrekt värde.
Enhetsåtkomst
Behörighetskontrollen avgör om video- och ljudenheter är tillgängliga ur ett behörighetsperspektiv. Ger boolean
värde för audio
och video
enheter.
const deviceAccess = await preCallDiagnosticsResult.deviceAccess;
if(deviceAccess) {
console.log(deviceAccess.audio)
console.log(deviceAccess.video)
}
Om testet misslyckas och behörigheterna är falska för ljud och video bör användaren inte fortsätta att ansluta till ett anrop. I stället uppmanar du användaren att aktivera behörigheterna. Det bästa sättet att göra detta är genom att ge den specifika instruktionen om hur du får åtkomst till behörigheter baserat på operativsystem, version och webbläsare som de använder. Mer information om behörigheter finns i Checklista för avancerade samtalsupplevelser i webbläsare.
Enhetsuppräkning
Enhetstillgänglighet. Kontrollerar om mikrofon-, kamera- och högtalarenheter identifieras i systemet och är redo att användas. Returnerar ett Available
eller NotAvailable
-värde.
const deviceEnumeration = await preCallDiagnosticsResult.deviceEnumeration;
if(deviceEnumeration) {
console.log(deviceEnumeration.microphone)
console.log(deviceEnumeration.camera)
console.log(deviceEnumeration.speaker)
}
Om enheterna inte är tillgängliga bör användaren inte fortsätta att ansluta till ett anrop. Uppmana i stället användaren att kontrollera enhetsanslutningarna för att säkerställa att alla headset, kameror eller högtalare är korrekt anslutna. Mer information om enhetshantering finns i Hantera video under anrop.
InCall-diagnostik
Utför ett snabbt anrop för att kontrollera anropsmått för ljud och video och ger resultat tillbaka. Innehåller anslutning (connected
, boolesk), bandbreddskvalitet (bandWidth
, 'Bad' | 'Average' | 'Good'
) och samtalsdiagnostik för ljud och video (diagnostics
). Tillhandahållna diagnostikkategorier inkluderar jitter
, packetLoss
och rtt
och resultat genereras med hjälp av en enkel kvalitetsklass ('Bad' | 'Average' | 'Good'
).
InCall-diagnostik använder mediakvalitetsstatistik för att beräkna kvalitetsresultat och diagnostisera problem. Under föranropsdiagnostiken är den fullständiga uppsättningen mediekvalitetsstatistik tillgänglig för förbrukning. Den här statistiken innehåller rådatavärden för video- och ljudmått som du kan använda programatiskt.
InCall-diagnostiken ger ett bekvämlighetslager ovanpå mediekvalitetsstatistiken för att använda resultaten utan att behöva bearbeta alla rådata. Mer information, inklusive instruktioner för åtkomst, finns i Media quality statistics for an ongoing call (Mediekvalitetsstatistik för ett pågående samtal).
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)
}
I det här steget finns det flera möjliga felpunkter. Värdena som tillhandahålls av API:et baseras på de tröskelvärden som krävs av tjänsten. Råtrösklarna finns i mediakvalitetsstatistik.
- Om en anslutning misslyckas uppmanar du användarna att kontrollera sin nätverksanslutning igen. Anslutningsfel kan också hänföras till nätverksförhållanden som DNS, proxyservrar eller brandväggar. Mer information om rekommenderad nätverksinställning finns i Nätverksrekommendationer.
- Om bandbredden är
Bad
uppmanar du användarna att prova ett annat nätverk eller verifiera bandbreddstillgängligheten i det aktuella nätverket. Se till att inga andra aktiviteter med hög bandbredd äger rum.
Prissättning
När diagnostiktestet före anropet körs i bakgrunden använder det samtalsminuter för att köra diagnostiken. Testet varar i ungefär 30 sekunder med upp till 30 sekunders samtalstid som debiteras med standardpriset 0,004 USD per deltagare och minut. För diagnostik före anrop är kostnaden för 1 deltagare x 30 sekunder = 0,002 USD.