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

Å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 callClientoch 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 NotSupporteddet 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 jitteroch 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 Badbö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.

Nästa steg