Diagnostik före samtal
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:et före samtal gör det möjligt för utvecklare att programmatiskt verifiera en klients beredskap att ansluta till ett Azure Communication Services-samtal. API:erna för förhandssamtal kan nås via anropande SDK. De tillhandahåller flera diagnostik, inklusive enhet, anslutning och samtalskvalitet. API:er för förhandsanrop är endast tillgängliga för webben (JavaScript). Vi kommer att aktivera dessa funktioner på olika plattformar i framtiden, ge oss feedback om vilka plattformar du vill se API:er för förhandssamtal på.
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. (Behöver hämta anslutningssträng från resursen via Azure-portalen.)
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 API:er före samtal
Viktigt!
Diagnostik före samtal är tillgängliga från och med version 1.9.1-beta.1 av calling SDK. Se till att använda den versionen när du provar nästa instruktioner.
För att få åtkomst till API:et 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
API:et före anrop returnerar en fullständig diagnostik av enheten, inklusive information som enhetsbehörigheter, tillgänglighet och kompatibilitet, samtalskvalitetsstatistik och diagnostik under samtal. 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>;
};
Enskilda resultatobjekt kan nås som sådana med hjälp av konstanten preCallDiagnosticsResult
. 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 tillhandahåller en Supported
eller NotSupported
ett värde tillbaka.
const browserSupport = await preCallDiagnosticsResult.browserSupport;
if(browserSupport) {
console.log(browserSupport.browser)
console.log(browserSupport.os)
}
Om testet misslyckas och webbläsaren används av användaren är NotSupported
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 vår dokumentation.
Kommentar
Känt problem: browser support
test returnerar Unknown
i fall där det ska returnera ett korrekt värde.
Enhetsåtkomst
Behörighetskontroll. Kontrollerar 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 måste du uppmana användaren att aktivera behörigheterna. För att göra det är det bästa sättet att tillhandahålla den specifika instruktionen om hur du får åtkomst till behörighetsåtkomst baserat på operativsystemet, versionen och webbläsaren som de är på. Mer information om behörigheter finns i våra rekommendationer.
Enhetsuppräkning
Enhetstillgänglighet. Kontrollerar om mikrofon-, kamera- och högtalarenheter identifieras i systemet och är redo att användas. Ger ett Available
eller NotAvailable
-värde tillbaka.
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. I stället bör användaren uppmanas att kontrollera enhetsanslutningar för att säkerställa att alla headset, kameror eller högtalare är korrekt anslutna. Mer information om enhetshantering finns i vår dokumentation
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
). Diagnostik tillhandahålls jitter
och rtt
packetLoss
resultaten genereras med hjälp av en enkel kvalitetsklass ('Bad' | 'Average' | 'Good'
).
InCall-diagnostik använder mediekvalitetsstatistik 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 kan användas programatiskt. InCall-diagnostiken ger ett bekvämlighetslager ovanpå mediekvalitetsstatistiken för att förbruka resultaten utan att behöva bearbeta alla rådata. Se avsnittet om mediestatistik för instruktioner för åtkomst.
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 felpunkter att se upp för. Värdena som tillhandahålls av API:et baseras på de tröskelvärden som krävs av tjänsten. Dessa råa tröskelvärden finns i dokumentationen om mediekvalitetsstatistik.
- Om anslutningen misslyckas uppmanas användaren att kontrollera sin nätverksanslutning igen. Anslut ionsfel 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 vår dokumentation.
- Om bandbredden är
Bad
bör användaren uppmanas att prova ett annat nätverk eller verifiera bandbreddstillgängligheten på den aktuella. Se till att inga andra aktiviteter med hög bandbredd kan äga rum.
Mediestatistik
För detaljerad statistik om kvalitetsmått som jitter, paketförlust, rtt osv. callMediaStatistics
tillhandahålls som en del av preCallDiagnosticsResult
funktionen. Se den fullständiga listan och beskrivningen av tillgängliga mått i den länkade artikeln. Du kan prenumerera på samtalsmediestatistiken för att få en fullständig samling av dem. Den här statistiken är de råmått som används för att beräkna Diagnostikresultat för InCall och som kan användas detaljerat för ytterligare analys.
const mediaStatsCollector = callMediaStatistics.startCollector();
mediaStatsCollector.on('mediaStatsEmitted', (mediaStats: SDK.MediaStats) => {
// process the stats for the call.
console.log(mediaStats);
});
Prissättning
När diagnostiktestet före anrop körs använder det i bakgrunden samtalsminuter för att köra diagnostiken. Testet varar i ungefär 30 sekunder och använder upp till 30 sekunders samtal som debiteras med standardpriset 0,004 USD per deltagare och minut. För diagnostik före samtal debiteras en deltagare x 30 sekunder = 0,002 USD.