Freigeben über


Pre-Call-Diagnose

Wichtig

Dieses Feature von Azure Communication Services befindet sich derzeit in der Vorschau.

Vorschau-APIs und -SDKs werden ohne Vereinbarung zum Servicelevel bereitgestellt. Es wird empfohlen, diese nicht für Produktionsworkloads zu verwenden. Einige Features werden möglicherweise nicht unterstützt oder bieten nur eingeschränkte Funktionalität.

Weitere Informationen finden Sie in den ergänzenden Nutzungsbestimmungen für Microsoft Azure-Vorschauversionen.

Mit der Pre-Call-API können Entwickler die Bereitschaft eines Clients zur Teilnahme an einem Azure Communication Services-Aufruf programmgesteuert überprüfen. Auf die Pre-Call-APIs kann über das Calling-SDK zugegriffen werden. Sie bieten mehrere Diagnosefunktionen, etwa bezüglich Geräte-, Verbindungs- und Anrufqualität. Pre-Call-APIs sind nur für Web (JavaScript) verfügbar. Wir werden diese Funktionen in Zukunft plattformübergreifend aktivieren und uns Feedback zu den Plattformen geben, auf denen Sie APIs im Voraus anzeigen möchten.

Voraussetzungen

Zugreifen auf Pre-Call-APIs

Wichtig

Die Diagnose vor dem Anruf ist ab Version 1.9.1-beta.1 des Calling SDK verfügbar. Stellen Sie sicher, dass Sie diese Version verwenden, wenn Sie die nächsten Anweisungen ausprobieren.

Um auf die API vor dem Aufruf zuzugreifen, müssen Sie ein callClientZugriffstoken für Azure Communication Services initialisieren und bereitstellen. Dort können Sie auf das PreCallDiagnostics-Feature und die Methode startTest zugreifen.

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

Sobald die Ausführung abgeschlossen ist, können Entwickler auf das Objekt mit dem Ergebnis zugreifen.

Diagnoseergebnisse

Die Pre-Call-API gibt eine vollständige Diagnose des Geräts zurück, einschließlich Details wie Geräteberechtigungen, Verfügbarkeit und Kompatibilität, Anrufqualitätsstatistiken und Diagnosen zum eigentlichen Anruf. Die Ergebnisse werden als PreCallDiagnosticsResult-Objekt zurückgegeben.


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

Auf einzelne Ergebnisobjekte kann mithilfe der preCallDiagnosticsResult Konstante zugegriffen werden. Ergebnisse für einzelne Tests werden zurückgegeben, da sie mit vielen der Testergebnisse sofort verfügbar sind. Wenn Sie den inCallDiagnostics Test verwenden, können die Ergebnisse bis zu 1 Minute dauern, da der Test die Qualität des Videos und der Audiodaten überprüft.

Browserunterstützung

Browserkompatibilitätsprüfung – Prüft auf Kompatibilität mit Browser sowie OS und gibt einen Supported- oder NotSupported-Wert zurück.


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

Wenn der Test fehlschlägt und der vom Benutzer verwendete Browser NotSupported ist, wird dies am einfachsten behoben, indem der Benutzer aufgefordert wird, zu einem unterstützten Browser zu wechseln. Informationen zu den unterstützten Browsern finden Sie in der Dokumentation.

Hinweis

Bekanntes Problem: Der browser support-Test gibt Unknown zurück, obwohl er in diesem Fall einen korrekten Wert zurückgeben sollte.

Gerätezugriff

Berechtigungsprüfung – Überprüft, ob Video- und Audiogeräte hinsichtlich der Berechtigungen verfügbar sind. Stellt einen boolean-Wert für audio- und video- Geräte bereit.


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

Wenn der Test fehlschlägt und die Berechtigungen für Audio und Video „False“ sind, sollte das Beitreten des Benutzers zu einem Anruf unterbrochen werden. Stattdessen müssen Sie den Benutzer auffordern, die Berechtigungen zu aktivieren. Dazu wird die beste Methode bereitgestellt, um die spezifische Anleitung für den Zugriff auf Berechtigungszugriff auf Grundlage des Betriebssystems, der Version und des Browsers zu erhalten, auf dem sie sich befinden. Weitere Informationen zu Berechtigungen finden Sie in unseren Empfehlungen.

Geräteenumeration

Geräteverfügbarkeit – Überprüft, ob Mikrofon, Kamera und Lautsprecher des Systems erkannt und zur Verwendung bereit sind. Gibt den Wert Available oder NotAvailable zurück.


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

Wenn Geräte nicht verfügbar sind, sollte der Benutzer nicht weiter an einem Anruf teilnehmen. Der Benutzer sollte stattdessen aufgefordert werden, die Geräteverbindungen zu überprüfen, um sicherzustellen, dass Headsets, Kameras oder Lautsprecher ordnungsgemäß verbunden sind. Weitere Informationen zur Geräteverwaltung finden Sie in unserer Dokumentation

InCall-Diagnose

Führt einen schnellen Anruf aus, um die Audio- und Videoqualität von Anrufen zu überprüfen und Ergebnismetriken zurückzugeben. Diese umfassen Konnektivität (connected, boolean), Bandbreitenqualität (bandWidth, 'Bad' | 'Average' | 'Good') und Diagnosewerte für Audio und Video von Anrufen (diagnostics). Auf Grundlage der Ergebnisse für jitter, packetLoss und rtt wird eine einfache Qualitätsnote ('Bad' | 'Average' | 'Good') generiert.

InCall Diagnose verwendet Medienqualitätsstatistiken, um Qualitätsbewertungen zu berechnen und Probleme zu diagnostizieren. Während der Vorabdiagnose stehen die vollständigen Medienqualitätsstatistiken für den Verbrauch zur Verfügung. Zu diesen Statistiken gehören Rohwerte über Video- und Audiometriken hinweg, die programmgesteuert verwendet werden können. InCall-Diagnose bietet eine Komfortschicht auf der Grundlage von Medienqualitätsstatistiken, um die Ergebnisse zu nutzen, ohne dass alle Rohdaten verarbeitet werden müssen. Siehe Abschnitt zu Medienstatistiken für Anweisungen zum Zugriff.


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

Bei diesem Schritt gibt es mehrere Fehlerquellen, auf die geachtet werden muss. Die von der API bereitgestellten Werte basieren auf den vom Dienst benötigten Schwellenwerten. Diese rohen Schwellenwerte finden Sie in unserer Dokumentation zur Medienqualitätsstatistik.

  • Wenn die Verbindung fehlschlägt, sollte der Benutzer aufgefordert werden, die Netzwerkkonnektivität erneut zu überprüfen. Verbindungsfehler können auch durch Netzwerkbedingungen wie DNS, Proxies oder Firewalls entstehen. Weitere Informationen zur empfohlenen Netzwerkeinstellung finden Sie in unserer Dokumentation.
  • Wenn die Bandbreite Bad ist, sollte der Benutzer aufgefordert werden, ein anderes Netzwerk auszuprobieren oder die Bandbreitenverfügbarkeit im aktuellen Netzwerk zu überprüfen. Stellen Sie sicher, dass keine anderen Aktivitäten viel Bandbreite erfordern.

Medienstatistiken

Für detaillierte Statistiken zu Qualitätsmetriken wie Jitter, Paketverlust, RTT usw. werden callMediaStatistics als Teil des preCallDiagnosticsResult-Features bereitgestellt. Sehen Sie sich die vollständige Liste und Beschreibung der verfügbaren Metriken im verknüpften Artikel an. Sie können die Anrufmedienstatistiken abonnieren, um eine vollständige Sammlung davon zu erhalten. Dieser Stata ist die Rohmetriken, die zum Berechnen von InCall-Diagnoseergebnissen verwendet werden und die für die weitere Analyse präzise genutzt werden können.


const mediaStatsCollector = callMediaStatistics.startCollector(); 

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

Preiskalkulation

Wenn der Pre-Call-Diagnosetest ausgeführt wird, verwendet er hinter den Kulissen Anrufminuten. Der Test dauert ca. 30 Sekunden und verbraucht dabei 30 Sekunden Anrufzeit, die mit dem Standardsatz von 0,004 USD pro Teilnehmer pro Minute abgerechnet wird. Bei der Pre-Call-Diagnose entsteht eine Gebühr für 1 Teilnehmer x 30 Sekunden = 0,002 USD.

Nächste Schritte