Freigeben über


Benutzerseitige Diagnose

Wenn Sie mit Anrufen in Azure Communication Services arbeiten, treten möglicherweise Probleme auf, die sich auf Ihre Kunden auswirken. Um diese zu beheben, bietet Azure Communication Services ein Feature mit dem Namen „Benutzerseitige Diagnose“ (User Facing Diagnostics, UFD), das verwendet werden kann, um verschiedene Eigenschaften eines Anrufs zu untersuchen, um das mögliche Problem zu bestimmen. Benutzerseitige Diagnosen (UFD) sind ausgelöste Ereignisse, die auf ein zugrunde liegendes Problem (schlechtes Netzwerk, Mikrofon des Benutzers ist stummgeschaltet) hinweisen könnten, dass ein Benutzer möglicherweise ein schlechtes Erlebnis hat. Nachdem eine benutzerseitige Diagnose (UFD) ausgelöst wurde, sollten Sie einem Endbenutzer Feedback geben, dass er möglicherweise ein zugrunde liegendes Problem hat. Die Ausgabe der benutzerseitigen Diagnose (UFD) hat jedoch nur informativen Charakter, und der Anrufstapel nimmt keine Änderungen basierend auf einer ausgelösten benutzerseitigen Diagnose vor.

Diagnose für lokale und Remotebenutzende

Benutzerorientierte Diagnosen (User Facing Diagnostics, UFD) sind aktiviert, um benutzerbezogene Ereignisse verfügbar zu machen, die auf einem Gerät über eine programmgesteuerte API ausgeführt werden. In Azure Communication Services gibt es zwei Methoden zum Verwenden und Generieren von UFDs: lokale UFDs und Remote-UFDs. Lokale UFDs werden auf dem Telefon oder Browser des lokalen Benutzers generiert. Remote-UFDs sind Ereignisse, die in der Umgebung von Remoteteilnehmenden auftreten, was es lokalen Benutzenden ermöglicht, diese Remotebenutzer lokal zu nutzen und anzuzeigen.

Von Bedeutung

Die in diesem Dokument beschriebene Funktionalität befindet sich derzeit in der privaten Vorschau. Die private Vorschau umfasst zu Testzwecken den Zugriff auf SDKs und Dokumentationen, die noch nicht öffentlich verfügbar sind. Bewerben Sie sich, um Early Adopter zu werden, indem Sie das Formular für den Zugriff auf die Vorschauversion von Azure Communication Services ausfüllen.

Hinweis

Version 1.34.1-beta.2 und höher des Public Preview Calling-SDK unterstützen das Senden von Remote-UFDs aus dem WebJS-Aufrufen-SDK. Lokale UFDS, die vom Calling-SDK ausgegeben werden, sind allgemein verfügbar.

Die User Facing Diagnostics (Benutzerdiagnose, UFD) ermöglichen Ihnen, zu sehen, wann lokale oder Fernteilnehmer Probleme haben, die sich auf die Qualität der Audio-Video-Anrufe auswirken. UFD bietet Echtzeitdiagnosen für Netzwerkbedingungen, Gerätefunktionen und Medienleistung. Diese Diagnoseinformationen helfen Entwicklern, Probleme wie schlechte Konnektivität, stummgeschaltete Mikrofone oder geringe Bandbreite zu erkennen. Während UFD diese Probleme nicht automatisch beheben kann, ermöglicht es Anwendungen, benutzern proaktives Feedback zu geben und Lösungen vorzuschlagen, z. B. die Internetverbindung zu überprüfen oder Geräteeinstellungen anzupassen. Basierend auf diesen Daten können Benutzer entweder das Problem selbst beheben (z. B. das Deaktivieren von Video, wenn das Netzwerk schwach ist) oder die Informationen über die Benutzeroberfläche anzeigen.

Es gibt einige geringfügige Unterschiede bei der Verwendung von Remote-UFDs und lokalen UFDs. Diese Unterschiede sind:

  • Das Calling-SDK macht speakingWhileMicrophoneIsMuted über Remote-UFDs aufgrund von Datenschutzbedenken nicht verfügbar.
  • Das Calling-SDK macht nur UFDs bis zu maximal 20 Teilnehmende im Anruf verfügbar und streamt sie. Wenn die Anzahl der Teilnehmer 20 überschreitet, begrenzen und beenden wir die Übertragung von Remote-UFDs , um zu verhindern, dass das Netzwerk mit diesen Ereignissen überlastet wird.
  • Das aufrufende SDK filtert, sodass nur drei (3) Remote-UFD-Ereignisse pro Minute angezeigt werden, die von einem einzelnen Client stammen.
  • Aus Client-SDK-Sicht müssen Sie die Funktionalität für die lokalen UFDs aktivieren, die remote gesendet werden.

Diagnosewerte

Die folgenden benutzerseitigen Diagnosen sind verfügbar:

Netzwerkwerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
keinNetzwerk Es ist kein Netzwerk verfügbar. – Wird auf True festgelegt, wenn ein Anruf nicht gestartet werden kann, weil kein Netzwerk verfügbar ist.
- Wird auf False festgelegt, wenn ICE-Kandidaten vorhanden sind.
Das Gerät ist nicht mit einem Netzwerk verbunden. Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Netzwerkoptimierung.
Netzwerk-Relais nicht erreichbar Probleme mit einem Netzwerk. – Wird auf True festgelegt, wenn das Netzwerk eine Einschränkung aufweist, die es Ihnen nicht erlaubt, Azure Communication Services-Relays zu erreichen.
- Wird bei einem neuen Anruf auf False festgelegt.
Bei einem aktiven Anruf und wenn das WLAN-Signal ein- und ausgeschaltet wird. Stellen Sie sicher, dass Firewallregeln und Netzwerkrouting es dem Client ermöglichen, Microsoft TURN-Server zu erreichen. Weitere Informationen finden Sie im Abschnitt Firewallkonfiguration.
networkReconnect Die Verbindung wurde verloren, und der Client stellt eine erneute Verbindung mit dem Netzwerk her. - Wird auf Bad festgelegt, wenn das Netzwerk getrennt ist.
- Wird auf Poor festgelegt, wenn die Medientransportkonnektivität verloren gegangen ist.
- Wird auf Good festgelegt, wenn eine neue Sitzung hergestellt wird.
Geringe Bandbreite, kein Internet Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
networkReceiveQuality Ein Indikator für die Qualität des eingehenden Datenstroms. – Auf Bad setzen, wenn ein schwerwiegendes Problem beim Empfangen des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Empfang des Datenstroms vorliegt.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.
networkSendQuality Ein Indikator für die Qualität des ausgehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Senden des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Senden des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Senden des Datenstroms vorliegt.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie außerdem vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.

Audiowerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
keine Lautsprechergeräte aufgelistet Im System des Benutzers ist kein Audioausgabegerät (Lautsprecher) vorhanden. - Wird auf True festgelegt, wenn keine Lautsprechergeräte im System vorhanden sind und die Lautsprecherauswahl unterstützt wird.
– Wird auf False festgelegt, wenn mindestens ein Lautsprecher im System vorhanden ist und die Lautsprecherauswahl unterstützt wird.
Kein Lautsprecher ist angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Lautsprecher verfügbar sind.
SprechenWährendMikrofonStummgeschaltetIst Sprechen während der Stummschaltung. - Wird auf True festgelegt, wenn das lokale Mikrofon stummgeschaltet ist und der lokale Benutzer spricht.
- Wird auf False festgelegt, wenn der lokale Benutzer entweder aufhört zu sprechen oder die Stummschaltung des Mikrofons aufhebt.
* Hinweis: Derzeit wird diese Option für Safari nicht unterstützt, da die Beispiele auf Audioebene aus WebRTC-Statistiken stammen. Der Audiowert "speakingWhileMicrophoneIsMuted" ist nicht als Remote-UFD verfügbar.
Schalten Sie Ihr Mikrofon während eines Anrufs stumm, und sprechen Sie in das Mikrofon. Wenn der Wert auf True festgelegt ist, sollte eine visuelle Benachrichtigung angezeigt werden, um den Endbenutzer darauf hinzuweisen, dass er möglicherweise spricht und nicht bemerkt, dass sein Audio stummgeschaltet ist.
Keine Mikrofongeräte aufgelistet Keine Audioaufnahmegeräte (Mikrofon) im System des Benutzers vorhanden. - Wird auf True festgelegt, wenn keine Mikrofongeräte im System vorhanden sind.
– Wird auf False festgelegt, wenn mindestens ein Mikrofon im System vorhanden ist.
Alle Mikrofone sind während des Gesprächs nicht angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Mikrofone vorhanden sind. Weitere Informationen finden Sie im Abschnitt zum Aktivieren des Mikrofons im Abschnitt "Geräte-Manager ".
Mikrofon funktioniert nicht Das Mikrofon funktioniert nicht. – Wird auf True festgelegt, wenn die Übertragung des lokalen Audiodatenstroms nicht gestartet werden kann, da das Mikrofon möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird. Es dauert ungefähr 10 Sekunden, bis dieses UFD ausgelöst wird.
- Wird auf False festgelegt, wenn das Mikrofon wieder erfolgreich einen Audiodatenstrom sendet.
Keine Mikrofone verfügbar, Mikrofonzugriff in einem System deaktiviert Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ein Problem mit dem Mikrofon vorliegt.
microphoneMuteUnexpectedly Das Mikrofon ist stummgeschaltet. - Wird auf True festgelegt, wenn das Mikrofon unerwartet stummgeschaltet wird.
- Wird auf False festgelegt, wenn das Mikrofon erfolgreich einen Audiodatenstrom sendet.
Das Mikrofon wird vom System stummgeschaltet. Dies tritt meistens dann auf, wenn sich Benutzer auf einem mobilen Gerät in einem Azure Communication Services-Anruf befinden und ein Telefonanruf eingeht. In den meisten Fällen schaltet das Betriebssystem den Azure Communication Services-Anruf stumm, damit Benutzer den Telefonanruf entgegennehmen können. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ihr Anruf stummgeschaltet wurde, da ein Telefonanruf einging. Weitere Informationen finden Sie im Abschnitt Behandeln des Stummschaltens eines Azure Communication Services-Anrufs durch das Betriebssystem.
MikrofonberechtigungVerweigert Die Lautstärke des Geräts ist gering, oder es ist unter macOS fast lautlos. – Wird auf True festgelegt, wenn die Audioberechtigung von den Systemeinstellungen (Audio) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS.
Die Mikrofonberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden des Mikrofons für einen Azure Communication Services-Anruf nicht aktiviert haben.

Kamerawerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Kameraeinfrieren Die Kamera erzeugt keine Bilder für mehr als fünf Sekunden. - Wird auf True festgelegt, wenn der lokale Videodatenstrom eingefroren ist. Diese Diagnose bedeutet, dass die Remoteseite Ihr Video auf ihrem Bildschirm eingefroren sieht oder dass die Remoteteilnehmer Ihr Video nicht auf ihrem Bildschirm rendern.
- Wird auf False festgelegt, wenn das Einfrieren beendet ist und die Benutzer Ihr Video wie gewohnt sehen können.
Die Kamera wurde während des Anrufs verloren, oder das schlechte Netzwerk führte dazu, dass die Kamera eingefroren war. Wenn der Wert auf True festgelegt ist, erwägen Sie, dem Endnutzer eine Benachrichtigung zu geben, dass das Remoteteilnehmernetzwerk möglicherweise schlecht ist. Schlagen Sie vor, dass der Benutzer seine Kamera ausschaltet, um Bandbreite zu sparen. Weitere Informationen zu den erforderlichen Internetvoraussetzungen für einen Azure Communication Services-Anruf finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
KameraStartFehlgeschlagen Generischer Kamerafehler. – Wird auf True festgelegt, wenn die Übertragung des lokalen Videos nicht gestartet werden kann, da die Kamera möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera nicht gestartet werden konnte.
cameraStartTimedOut Häufiges Szenario, in dem die Kamera einen fehlerhaften Zustand aufweist. - Wird auf True festgelegt, wenn das Kameragerät einen Timeout aufweist, um mit dem Senden des Videodatenstroms zu beginnen.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).
Kameraerlaubnis verweigert Die Kameraberechtigungen wurden in den Einstellungen verweigert. – Wird auf True festgelegt, wenn die Kameraberechtigung von den Systemeinstellungen (Video) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS Chrome.
Die Kameraberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden der Kamera für einen Azure Communication Services-Anruf nicht aktiviert haben.
Kamera unerwartet gestoppt Fehlfunktion der Kamera - Wird auf True festgelegt, wenn die Kamera unerwartet in den Zustand „Beendet“ wechselt
- Wird auf False festgelegt, wenn die Kamera wieder erfolgreich einen Videodatenstrom sendet
Überprüfen der ordnungsgemäßen Funktion der Kamera Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).

Sonstige Werte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
screenshareRecordingDisabled Die Freigabe des Systembildschirms wurde von den Einstellungen verweigert. – Wird auf True festgelegt, wenn die Berechtigung zur Bildschirmfreigabe von den Systemeinstellungen (Freigabe) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS.Chrome.
Die Bildschirmaufzeichnung ist in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, geben Sie den Endbenutzern eine visuelle Benachrichtigung, dass sie die Berechtigung zum Freigeben ihres Bildschirms für einen Azure Communication Services-Anruf nicht aktiviert haben.
capturerStartFailed Systemfehler bei der Bildschirmfreigabe - Wird auf True festgelegt, wenn die Bildschirmerfassung nicht gestartet werden kann
- Wird auf False festgelegt, wenn die Bildschirmerfassung erfolgreich gestartet werden kann
Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass möglicherweise ein Problem beim Freigeben des Bildschirms aufgetreten ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).
capturerStoppedUnexpectedly Fehlfunktion des Systems bei der Bildschirmfreigabe - Wird auf True festgelegt, wenn die Bildschirmaufzeichnung unerwartet in den Zustand „Beendet“ wechselt
- Wird auf False festgelegt, wenn die Bildschirmaufzeichnung wieder erfolgreich durchgeführt wird
Überprüfen der ordnungsgemäßen Funktion der Bildschirmfreigabe Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer darüber, dass möglicherweise ein Problem vorliegt, das dazu führt, dass die Freigabe des Bildschirms beendet wird. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).

Zugreifen auf die Diagnose

Die vom Benutzer zugängliche Diagnose ist ein erweitertes Feature der Kern-API Call . Weitere Informationen zur UserFacingDiagnosticsFeature Schnittstelle finden Sie hier.

const userFacingDiagnostics = call.feature(Features.UserFacingDiagnostics);

Lokale benutzerseitige Diagnoseereignisse

Jede Diagnose hat die folgenden Daten:

  • Diagnose ist der Typ der UFD-Diagnose, der auf dem lokalen Computer ausgelöst wurde. Beispiel: eine UFD von NetworkSendQuality oder DeviceSpeakWhileMuted.
  • Der Wert ist DiagnosticQuality oder DiagnosticFlag
  • DiagnosticQuality = Enumeration { Good = 1, Poor = 2, Bad = 3 }.
  • DiagnosticFlag = true | false
const diagnosticChangedListener = (diagnosticInfo: NetworkDiagnosticChangedEventArgs | MediaDiagnosticChangedEventArgs) => {
    console.log(`Diagnostic changed: ` +
        `Diagnostic: ${diagnosticInfo.diagnostic}` +
        `Value: ${diagnosticInfo.value}` +
        `Value type: ${diagnosticInfo.valueType}`);

    if (diagnosticInfo.valueType === 'DiagnosticQuality') {
        if (diagnosticInfo.value === DiagnosticQuality.Bad) {
            console.error(`${diagnosticInfo.diagnostic} is bad quality`);

        } else if (diagnosticInfo.value === DiagnosticQuality.Poor) {
            console.error(`${diagnosticInfo.diagnostic} is poor quality`);
        }

    } else if (diagnosticInfo.valueType === 'DiagnosticFlag') {
        if (diagnosticInfo.value === true) {
            console.error(`${diagnosticInfo.diagnostic}`);
        }
    }
};


// Subscribe to the `diagnosticChanged` event to monitor when any local user-facing diagnostic changes.
userFacingDiagnostics.network.on('diagnosticChanged', diagnosticChangedListener);
userFacingDiagnostics.media.on('diagnosticChanged', diagnosticChangedListener);

Zugreifen auf remotebenutzerseitige Diagnoseereignisse

Um remote UFDs an alle Teilnehmer eines Anrufs zu übertragen, muss die Funktion von jedem Client aktiviert werden. Dies kann pro Client aktiviert oder deaktiviert werden. Nach der Aktivierung sendet der Client seine lokalen UFDs remote an alle Teilnehmer, um sie zu verwenden und zu verarbeiten. Beachten Sie, dass die Übertragung von Remote-UFDs vom lokalen Client beendet wird, wenn die Anzahl der Teilnehmer 20 überschreitet. Diese Maßnahme wird implementiert, um einen übermäßigen Netzwerkbandbreitenverbrauch aufgrund von UFD-Datenverkehr zu verhindern.

// Start the local client to send its local UFD to all participants (send local UFD to remote clients).
remoteUfdsFeature.startSendingDiagnostics();
// Stop sending local UFDs to remote clients.
remoteUfdsFeature.stopSendingDiagnostics();

Im folgenden Codebeispiel sind RemoteParticipantDiagnosticsData die folgenden Daten zugeordnet:

  • diagnostic enthält ein Array von Diagnose-UFD, die von einem Remotecomputer ausgelöst wurden. Beispiel: eine UFD von NetworkSendQuality.
  • Der Wert dieses Elements wird wie folgt definiert: DiagnosticQuality oder DiagnosticFlag:
  • DiagnosticQuality = Enumeration { Good = 1, Poor = 2, Bad = 3 }.
  • DiagnosticFlag = true | false
  • Werttyp des Arrays = DiagnosticQuality | DiagnosticFlag
const remoteDiagnosticChangedListener = (diagnosticInfo: RemoteParticipantDiagnosticsData) => {
    for (const diagnostic of diagnosticInfo.diagnostics) {
        if (diagnostic.valueType === 'DiagnosticQuality') {
            if (diagnostic.value === SDK.DiagnosticQuality.Bad) {
                console.error(`${diagnostic.diagnostic} is bad quality`);

            } else if (diagnostic.value === SDK.DiagnosticQuality.Poor) {
                console.error(`${diagnostic.diagnostic} is poor quality`);
            }

        } else if (diagnostic.valueType === 'DiagnosticFlag') {
            console.error(`${diagnostic.diagnostic} diagnostic flag raised`);
        }
    }
};

// Subscribe to the `diagnosticChanged` event to monitor when any local user-facing diagnostic changes.
userFacingDiagnostics.remote.on('diagnosticChanged', remoteDiagnosticChangedListener);

Lösen Sie das neueste benutzerseitige Diagnoseereignis aus, das empfangen wurde:

Im Folgenden finden Sie Beispielcode zum Generieren des neuesten Vom aufrufenden SDK ausgelösten Diagnosewerts. Wenn eine Diagnose nicht definiert ist, bedeutet dies, dass die UFD nicht ausgelöst wurde.

const latestNetworkDiagnostics = userFacingDiagnostics.network.getLatest();

console.log(
  `noNetwork: ${latestNetworkDiagnostics.noNetwork.value}, ` +
    `value type = ${latestNetworkDiagnostics.noNetwork.valueType}`
);

console.log(
  `networkReconnect: ${latestNetworkDiagnostics.networkReconnect.value}, ` +
    `value type = ${latestNetworkDiagnostics.networkReconnect.valueType}`
);

console.log(
  `networkReceiveQuality: ${latestNetworkDiagnostics.networkReceiveQuality.value}, ` +
    `value type = ${latestNetworkDiagnostics.networkReceiveQuality.valueType}`
);

const latestMediaDiagnostics = userFacingDiagnostics.media.getLatest();

console.log(
  `speakingWhileMicrophoneIsMuted: ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.value}, ` +
    `value type = ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.valueType}`
);

console.log(
  `cameraStartFailed: ${latestMediaDiagnostics.cameraStartFailed.value}, ` +
    `value type = ${latestMediaDiagnostics.cameraStartFailed.valueType}`
);

console.log(
  `microphoneNotFunctioning: ${latestMediaDiagnostics.microphoneNotFunctioning.value}, ` +
    `value type = ${latestMediaDiagnostics.microphoneNotFunctioning.valueType}`
);

Diagnosewerte

Die folgenden benutzerseitigen Diagnosen sind verfügbar:

Netzwerkwerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Netzwerk nicht verfügbar Es ist kein Netzwerk verfügbar. – Wird auf True festgelegt, wenn ein Anruf nicht gestartet werden kann, weil kein Netzwerk verfügbar ist.
- Wird auf False festgelegt, wenn ICE-Kandidaten vorhanden sind.
Das Gerät ist nicht mit einem Netzwerk verbunden. Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Netzwerkoptimierung.
networkRelaysUnreachable Probleme mit einem Netzwerk. – Wird auf True festgelegt, wenn das Netzwerk eine Einschränkung aufweist, die es Ihnen nicht erlaubt, Azure Communication Services-Relays zu erreichen.
- Wird bei einem neuen Anruf auf False festgelegt.
Während eines Anrufs, wenn das WLAN-Signal aktiviert und deaktiviert wird. Stellen Sie sicher, dass Firewallregeln und Netzwerkrouting es dem Client ermöglichen, Microsoft TURN-Server zu erreichen. Weitere Informationen finden Sie im Abschnitt Firewallkonfiguration.
networkReconnectionQuality Die Verbindung wurde unterbrochen und wir stellen die Verbindung zum Netzwerk wieder her. - Wird auf Bad festgelegt, wenn das Netzwerk getrennt ist.
- Wird auf Poor festgelegt, wenn die Medientransportkonnektivität verloren gegangen ist.
- Wird auf Good festgelegt, wenn eine neue Sitzung hergestellt wird.
Geringe Bandbreite, kein Internet Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
networkReceiveQuality Ein Indikator für die Qualität des eingehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Empfang des Datenstroms vorliegt.
– Es ist nur sichtbar, wenn im Anruf ein aktiver Audiofluss vorhanden ist, was bedeutet, dass ein Teilnehmer aktiv für einen bestimmten Zeitraum spricht.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.
networkSendQuality Ein Indikator für die Qualität des ausgehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Senden des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Senden des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Senden des Datenstroms vorliegt.
– Ähnlich wie beim Empfang einer Qualitätsdiagnose ist es nur sichtbar, wenn im Anruf ein aktiver Audiofluss vorhanden ist, was bedeutet, dass ein Teilnehmer aktiv für einen bestimmten Zeitraum spricht. Aber es funktioniert nur bei einem 1:1-Aufruf, da es auf Informationen von der anderen Seite angewiesen ist, um die Qualität zu überprüfen. Wo die andere Seite die empfangenen Daten signalisieren muss.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie außerdem vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.

Audiowerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Keine Lautsprechergeräte verfügbar Im System des Benutzers ist kein Audioausgabegerät (Lautsprecher) vorhanden. - Wird auf True festgelegt, wenn keine Lautsprechergeräte im System vorhanden sind und die Lautsprecherauswahl unterstützt wird.
– Wird auf False festgelegt, wenn mindestens ein Lautsprecher im System vorhanden ist und die Lautsprecherauswahl unterstützt wird.
Kein Lautsprecher ist angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Lautsprecher verfügbar sind.
SprechenWährendMikrofonStummgeschaltetIst Sprechen während der Stummschaltung. - Wird auf True festgelegt, wenn das lokale Mikrofon stummgeschaltet ist und der lokale Benutzer spricht.
- Wird auf False festgelegt, wenn der lokale Benutzer entweder aufhört zu sprechen oder die Stummschaltung des Mikrofons aufhebt.
– Dieses Diagnoseereignis kann automatisch deaktiviert werden, wenn es für eine bestimmte Anzahl von Malen ohne Benutzeraktion ausgelöst wird, um Rauschen zu vermeiden und ein besseres Benutzererlebnis zu bieten. Es wird erneut aktiviert, wenn eine neue Stummschaltungsaktion auftritt.
Schalten Sie Ihr Mikrofon während eines Anrufs stumm, und sprechen Sie in das Mikrofon. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass sie möglicherweise sprechen und nicht bemerken, dass ihr Audio stummgeschaltet ist.
Keine Mikrofongeräte verfügbar Keine Audioaufnahmegeräte (Mikrofon) im System des Benutzers vorhanden. - Wird auf True festgelegt, wenn keine Mikrofongeräte im System vorhanden sind.
– Wird auf False festgelegt, wenn mindestens ein Mikrofon im System vorhanden ist.
Alle Mikrofone sind während des Gesprächs nicht angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Mikrofone vorhanden sind. Weitere Informationen finden Sie im Abschnitt zum Aktivieren des Mikrofons im Abschnitt "Geräte-Manager ".
Mikrofon funktioniert nicht Das Mikrofon funktioniert nicht. – Wird auf True festgelegt, wenn die Übertragung des lokalen Audiodatenstroms nicht gestartet werden kann, da das Mikrofon möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird. Es dauert ungefähr 10 Sekunden, bis dieses UFD ausgelöst wird.
- Wird auf False festgelegt, wenn das Mikrofon wieder erfolgreich einen Audiodatenstrom sendet.
Keine Mikrofone verfügbar, Mikrofonzugriff in einem System deaktiviert Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ein Problem mit dem Mikrofon vorliegt.
microphoneMuteUnexpectedly Das Mikrofon ist stummgeschaltet. - Wird auf True festgelegt, wenn das Mikrofon unerwartet stummgeschaltet wird.
- Wird auf False festgelegt, wenn das Mikrofon erfolgreich einen Audiodatenstrom sendet.
Das Mikrofon wird vom System stummgeschaltet. Dies tritt meistens dann auf, wenn sich Benutzer auf einem mobilen Gerät in einem Azure Communication Services-Anruf befinden und ein Telefonanruf eingeht. In den meisten Fällen schaltet das Betriebssystem den Azure Communication Services-Anruf stumm, damit Benutzer den Telefonanruf entgegennehmen können. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ihr Anruf stummgeschaltet wurde, da ein Telefonanruf einging. Weitere Informationen finden Sie im Abschnitt Behandeln des Stummschaltens eines Azure Communication Services-Anrufs durch das Betriebssystem.
MikrofonberechtigungVerweigert Die Lautstärke des Geräts ist gering, oder es ist unter macOS fast lautlos. – Wird auf True festgelegt, wenn die Audioberechtigung von den Systemeinstellungen (Audio) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS.
Die Mikrofonberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden des Mikrofons für einen Azure Communication Services-Anruf nicht aktiviert haben.

Kamerawerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Kamera eingefroren Die Kamera erzeugt keine Bilder für mehr als fünf Sekunden. - Wird auf True festgelegt, wenn der lokale Videodatenstrom eingefroren ist. Diese Diagnose bedeutet, dass die Remoteseite Ihr Video auf ihrem Bildschirm eingefroren sieht oder dass die Remoteteilnehmer Ihr Video nicht auf ihrem Bildschirm rendern.
- Wird auf False festgelegt, wenn das Einfrieren beendet ist und die Benutzer Ihr Video wie gewohnt sehen können.
Die Kamera wurde während des Anrufs getrennt oder ein schlechtes Netzwerk hat zum Einfrieren der Kamera geführt. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer darüber benachrichtigen, dass das Remoteteilnehmernetzwerk möglicherweise fehlerhaft ist. Schlagen Sie eventuell vor, die Kamera zu deaktivieren, um Bandbreite zu sparen. Weitere Informationen zu den erforderlichen Internetvoraussetzungen für einen Azure Communication Services-Anruf finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
KameraStartFehlgeschlagen Generischer Kamerafehler. – Wird auf True festgelegt, wenn die Übertragung des lokalen Videos nicht gestartet werden kann, da die Kamera möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera nicht gestartet werden konnte.
cameraStartTimedOut Häufiges Szenario, in dem die Kamera einen fehlerhaften Zustand aufweist. - Wird auf True festgelegt, wenn das Kameragerät einen Timeout aufweist, um mit dem Senden des Videodatenstroms zu beginnen.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).
Kameraerlaubnis verweigert Die Kameraberechtigungen wurden in den Einstellungen verweigert. – Wird auf True festgelegt, wenn die Kameraberechtigung von den Systemeinstellungen (Video) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS Chrome.
Die Kameraberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden der Kamera für einen Azure Communication Services-Anruf nicht aktiviert haben.
Kamera unerwartet gestoppt Fehlfunktion der Kamera - Wird auf True festgelegt, wenn die Kamera unerwartet in den Zustand „Beendet“ wechselt
- Wird auf False festgelegt, wenn die Kamera wieder erfolgreich einen Videodatenstrom sendet
Überprüfen der ordnungsgemäßen Funktion der Kamera Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).

Nur systemeigen

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
speakerVolumeIsZero Null Lautstärke auf einem Gerät (Lautsprecher). – Wird auf True festgelegt, wenn die Lautsprecherlautstärke null ist.
– Wird auf False festgelegt, wenn die Lautsprecherlautstärke nicht null ist.
Das Audio der Anrufteilnehmer ist nicht zu hören. Wenn der Wert auf Truefestgelegt ist, haben Sie möglicherweise versehentlich die Lautstärke auf den untersten Wert (Null) eingestellt.
speakerMuted Der Lautsprecher ist stummgeschaltet. – Wird auf True festgelegt, wenn der Lautsprecher stummgeschaltet ist.
– Wird auf False festgelegt, wenn der Lautsprecher nicht stummgeschaltet ist.
Das Audio der Anrufteilnehmer ist nicht zu hören. Wenn der Wert auf Truefestgelegt ist, haben Sie möglicherweise versehentlich den Lautsprecher stummgeschaltet.
speakerBusy Der Lautsprecher wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus oder im freigegebenen Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. – Wird auf True festgelegt, wenn ein Timeout der Lautsprecherdatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Lautsprechererfassung erfolgreich ist.
Das Audio der Anrufteilnehmer ist über den Lautsprecher nicht zu hören. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell, damit sie überprüfen können, ob eine andere Anwendung den Lautsprecher verwendet, und versuchen Sie, sie zu schließen.
speakerNotFunctioning Der Lautsprecher funktioniert nicht (Fehler beim Initialisieren des Audiogeräteclients oder das Gerät war für mehr als 5 Sek. inaktiv) – Wird auf True festgelegt, wenn der Lautsprecher nicht verfügbar ist oder ein Timeout der Lautsprecherdatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Lautsprechererfassung erfolgreich ist.
Das Audio der Anrufteilnehmer ist über den Lautsprecher nicht zu hören. Versuchen Sie, den Zustand des Lautsprechers zu überprüfen.
microphoneBusy Das Mikrofon wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus oder im freigegebenen Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. – Wird auf True festgelegt, wenn ein Timeout der Mikrofondatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Mikrofonerfassung erfolgreich ist.
Ihr Audio erreicht keine anderen Anrufteilnehmer. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell, damit sie überprüfen können, ob eine andere Anwendung das Mikrofon verwendet, und versuchen Sie, sie zu schließen.

Zugreifen auf die Diagnose

Die benutzerseitige Diagnose ist ein erweitertes Feature der Kern-API Call und ermöglicht Ihnen, einen aktiven Anruf zu diagnostizieren.

DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);

Benutzerseitige Diagnoseereignisse

  • Abrufen eines Featureobjekts und Hinzufügen von Listenern zu Diagnoseereignissen.
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);

/* NetworkDiagnostic */
FlagDiagnosticChangedListener listener = (FlagDiagnosticChangedEvent args) -> {
  Boolean mediaValue = args.getValue();
  // Handle new value for no network diagnostic.
};

NetworkDiagnostics networkDiagnostics = diagnosticsCallFeature.getNetworkDiagnostics();
networkDiagnostics.addOnNetworkUnreachableChangedListener(listener);

// To remove listener for network quality event
networkDiagnostics.removeOnNetworkUnreachableChangedListener(listener);

// Quality Diagnostics
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
QualityDiagnosticChangedListener listener = (QualityDiagnosticChangedEvent args) -> {
  DiagnosticQuality diagnosticQuality = args.getValue();
  // Handle new value for network reconnect diagnostic.
};

NetworkDiagnostics networkDiagnostics = diagnosticsCallFeature.getNetworkDiagnostics();
networkDiagnostics.addOnNetworkReconnectionQualityChangedListener(listener);

// To remove listener for media flag event
networkDiagnostics.removeOnNetworkReconnectionQualityChangedListener(listener);

/* MediaDiagnostic */
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
FlagDiagnosticChangedListener listener = (FlagDiagnosticChangedEvent args) -> {
  Boolean mediaValue = args.getValue();
  // Handle new value for speaker not functioning diagnostic.
};

MediaDiagnostics mediaDiagnostics = diagnosticsCallFeature.getMedia();
mediaDiagnostics.addOnIsSpeakerNotFunctioningChangedListener(listener);

// To remove listener for media flag event
mediaDiagnostics.removeOnIsSpeakerNotFunctioningChangedListener(listener);

Abrufen der aktuellen benutzerseitigen Diagnose

  • Abrufen der neuesten Diagnosewerte, die im aktuellen Anruf ausgelöst wurden. Wenn weiterhin kein Wert für die Diagnose empfangen wurde, wird eine Ausnahme ausgelöst.
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
NetworkDiagnostics networkDiagnostics = diagnosticsCallFeature.getNetwork();
MediaDiagnostics mediaDiagnostics = diagnosticsCallFeature.getMedia();

NetworkDiagnosticValues latestNetwork = networkDiagnostics.getLatestDiagnostics();
Boolean lastNetworkValue = latestNetwork.isNetworkUnavailable(); // null if there isn't a value for this diagnostic.
DiagnosticQuality lastReceiveQualityValue = latestNetwork.getNetworkReceiveQuality(); //  UNKNOWN if there isn't a value for this diagnostic.

MediaDiagnosticValues latestMedia = networkDiagnostics.getLatestDiagnostics();
Boolean lastSpeakerNotFunctionValue = latestMedia.isSpeakerNotFunctioning(); // null if there isn't a value for this diagnostic.

// Use the last values ...

Diagnosewerte

Die folgenden benutzerseitigen Diagnosen sind verfügbar:

Netzwerkwerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Netzwerk nicht verfügbar Es ist kein Netzwerk verfügbar. – Wird auf True festgelegt, wenn ein Anruf nicht gestartet werden kann, weil kein Netzwerk verfügbar ist.
- Wird auf False festgelegt, wenn ICE-Kandidaten vorhanden sind.
Das Gerät ist nicht mit einem Netzwerk verbunden. Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Netzwerkoptimierung.
networkRelaysUnreachable Probleme mit einem Netzwerk. – Wird auf True festgelegt, wenn das Netzwerk eine Einschränkung aufweist, die es Ihnen nicht erlaubt, Azure Communication Services-Relays zu erreichen.
- Wird bei einem neuen Anruf auf False festgelegt.
Während eines Anrufs, wenn das WLAN-Signal aktiviert und deaktiviert wird. Stellen Sie sicher, dass Firewallregeln und Netzwerkrouting es dem Client ermöglichen, Microsoft TURN-Server zu erreichen. Weitere Informationen finden Sie im Abschnitt Firewallkonfiguration.
networkReconnectionQuality Die Verbindung wurde unterbrochen und wir stellen die Verbindung zum Netzwerk wieder her. - Wird auf Bad festgelegt, wenn das Netzwerk getrennt ist.
- Wird auf Poor festgelegt, wenn die Medientransportkonnektivität verloren gegangen ist.
- Wird auf Good festgelegt, wenn eine neue Sitzung hergestellt wird.
Geringe Bandbreite, kein Internet Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
networkReceiveQuality Ein Indikator für die Qualität des eingehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Empfang des Datenstroms vorliegt.
– Es ist nur sichtbar, wenn im Anruf ein aktiver Audiofluss vorhanden ist, was bedeutet, dass ein Teilnehmer aktiv für einen bestimmten Zeitraum spricht.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.
networkSendQuality Ein Indikator für die Qualität des ausgehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Senden des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Senden des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Senden des Datenstroms vorliegt.
– Ähnlich wie beim Empfang einer Qualitätsdiagnose ist es nur sichtbar, wenn im Anruf ein aktiver Audiofluss vorhanden ist, was bedeutet, dass ein Teilnehmer aktiv für einen bestimmten Zeitraum spricht. Aber es funktioniert nur bei einem 1:1-Aufruf, da es auf Informationen von der anderen Seite angewiesen ist, um die Qualität zu überprüfen. Wo die andere Seite die empfangenen Daten signalisieren muss.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie außerdem vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.

Audiowerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Keine Lautsprechergeräte verfügbar Im System des Benutzers ist kein Audioausgabegerät (Lautsprecher) vorhanden. - Wird auf True festgelegt, wenn keine Lautsprechergeräte im System vorhanden sind und die Lautsprecherauswahl unterstützt wird.
– Wird auf False festgelegt, wenn mindestens ein Lautsprecher im System vorhanden ist und die Lautsprecherauswahl unterstützt wird.
Kein Lautsprecher ist angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Lautsprecher verfügbar sind.
SprechenWährendMikrofonStummgeschaltetIst Sprechen während der Stummschaltung. - Wird auf True festgelegt, wenn das lokale Mikrofon stummgeschaltet ist und der lokale Benutzer spricht.
- Wird auf False festgelegt, wenn der lokale Benutzer entweder aufhört zu sprechen oder die Stummschaltung des Mikrofons aufhebt.
– Dieses Diagnoseereignis kann automatisch deaktiviert werden, wenn es für eine bestimmte Anzahl von Malen ohne Benutzeraktion ausgelöst wird, um Rauschen zu vermeiden und ein besseres Benutzererlebnis zu bieten. Es wird erneut aktiviert, wenn eine neue Stummschaltungsaktion auftritt.
Schalten Sie Ihr Mikrofon während eines Anrufs stumm, und sprechen Sie in das Mikrofon. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass sie möglicherweise sprechen und nicht bemerken, dass ihr Audio stummgeschaltet ist.
Keine Mikrofongeräte verfügbar Keine Audioaufnahmegeräte (Mikrofon) im System des Benutzers vorhanden. - Wird auf True festgelegt, wenn keine Mikrofongeräte im System vorhanden sind.
– Wird auf False festgelegt, wenn mindestens ein Mikrofon im System vorhanden ist.
Alle Mikrofone sind während des Gesprächs nicht angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Mikrofone vorhanden sind. Weitere Informationen finden Sie im Abschnitt zum Aktivieren des Mikrofons im Abschnitt "Geräte-Manager ".
Mikrofon funktioniert nicht Das Mikrofon funktioniert nicht. – Wird auf True festgelegt, wenn die Übertragung des lokalen Audiodatenstroms nicht gestartet werden kann, da das Mikrofon möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird. Es dauert ungefähr 10 Sekunden, bis dieses UFD ausgelöst wird.
- Wird auf False festgelegt, wenn das Mikrofon wieder erfolgreich einen Audiodatenstrom sendet.
Keine Mikrofone verfügbar, Mikrofonzugriff in einem System deaktiviert Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ein Problem mit dem Mikrofon vorliegt.
microphoneMuteUnexpectedly Das Mikrofon ist stummgeschaltet. - Wird auf True festgelegt, wenn das Mikrofon unerwartet stummgeschaltet wird.
- Wird auf False festgelegt, wenn das Mikrofon erfolgreich einen Audiodatenstrom sendet.
Das Mikrofon wird vom System stummgeschaltet. Dies tritt meistens dann auf, wenn sich Benutzer auf einem mobilen Gerät in einem Azure Communication Services-Anruf befinden und ein Telefonanruf eingeht. In den meisten Fällen schaltet das Betriebssystem den Azure Communication Services-Anruf stumm, damit Benutzer den Telefonanruf entgegennehmen können. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ihr Anruf stummgeschaltet wurde, da ein Telefonanruf einging. Weitere Informationen finden Sie im Abschnitt Behandeln des Stummschaltens eines Azure Communication Services-Anrufs durch das Betriebssystem.
MikrofonberechtigungVerweigert Die Lautstärke des Geräts ist gering, oder es ist unter macOS fast lautlos. – Wird auf True festgelegt, wenn die Audioberechtigung von den Systemeinstellungen (Audio) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS.
Die Mikrofonberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden des Mikrofons für einen Azure Communication Services-Anruf nicht aktiviert haben.

Kamerawerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Kamera eingefroren Die Kamera erzeugt keine Bilder für mehr als fünf Sekunden. - Wird auf True festgelegt, wenn der lokale Videodatenstrom eingefroren ist. Diese Diagnose bedeutet, dass die Remoteseite Ihr Video auf ihrem Bildschirm eingefroren sieht oder dass die Remoteteilnehmer Ihr Video nicht auf ihrem Bildschirm rendern.
- Wird auf False festgelegt, wenn das Einfrieren beendet ist und die Benutzer Ihr Video wie gewohnt sehen können.
Die Kamera wurde während des Anrufs getrennt oder ein schlechtes Netzwerk hat zum Einfrieren der Kamera geführt. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer darüber benachrichtigen, dass das Remoteteilnehmernetzwerk möglicherweise fehlerhaft ist. Schlagen Sie eventuell vor, die Kamera zu deaktivieren, um Bandbreite zu sparen. Weitere Informationen zu den erforderlichen Internetvoraussetzungen für einen Azure Communication Services-Anruf finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
KameraStartFehlgeschlagen Generischer Kamerafehler. – Wird auf True festgelegt, wenn die Übertragung des lokalen Videos nicht gestartet werden kann, da die Kamera möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera nicht gestartet werden konnte.
cameraStartTimedOut Häufiges Szenario, in dem die Kamera einen fehlerhaften Zustand aufweist. - Wird auf True festgelegt, wenn das Kameragerät einen Timeout aufweist, um mit dem Senden des Videodatenstroms zu beginnen.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).
Kameraerlaubnis verweigert Die Kameraberechtigungen wurden in den Einstellungen verweigert. – Wird auf True festgelegt, wenn die Kameraberechtigung von den Systemeinstellungen (Video) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS Chrome.
Die Kameraberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden der Kamera für einen Azure Communication Services-Anruf nicht aktiviert haben.
Kamera unerwartet gestoppt Fehlfunktion der Kamera - Wird auf True festgelegt, wenn die Kamera unerwartet in den Zustand „Beendet“ wechselt
- Wird auf False festgelegt, wenn die Kamera wieder erfolgreich einen Videodatenstrom sendet
Überprüfen der ordnungsgemäßen Funktion der Kamera Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).

Nur systemeigen

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
speakerVolumeIsZero Null Lautstärke auf einem Gerät (Lautsprecher). – Wird auf True festgelegt, wenn die Lautsprecherlautstärke null ist.
– Wird auf False festgelegt, wenn die Lautsprecherlautstärke nicht null ist.
Das Audio der Anrufteilnehmer ist nicht zu hören. Wenn der Wert auf Truefestgelegt ist, haben Sie möglicherweise versehentlich die Lautstärke auf den untersten Wert (Null) eingestellt.
speakerMuted Der Lautsprecher ist stummgeschaltet. – Wird auf True festgelegt, wenn der Lautsprecher stummgeschaltet ist.
– Wird auf False festgelegt, wenn der Lautsprecher nicht stummgeschaltet ist.
Das Audio der Anrufteilnehmer ist nicht zu hören. Wenn der Wert auf Truefestgelegt ist, haben Sie möglicherweise versehentlich den Lautsprecher stummgeschaltet.
speakerBusy Der Lautsprecher wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus oder im freigegebenen Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. – Wird auf True festgelegt, wenn ein Timeout der Lautsprecherdatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Lautsprechererfassung erfolgreich ist.
Das Audio der Anrufteilnehmer ist über den Lautsprecher nicht zu hören. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell, damit sie überprüfen können, ob eine andere Anwendung den Lautsprecher verwendet, und versuchen Sie, sie zu schließen.
speakerNotFunctioning Der Lautsprecher funktioniert nicht (Fehler beim Initialisieren des Audiogeräteclients oder das Gerät war für mehr als 5 Sek. inaktiv) – Wird auf True festgelegt, wenn der Lautsprecher nicht verfügbar ist oder ein Timeout der Lautsprecherdatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Lautsprechererfassung erfolgreich ist.
Das Audio der Anrufteilnehmer ist über den Lautsprecher nicht zu hören. Versuchen Sie, den Zustand des Lautsprechers zu überprüfen.
microphoneBusy Das Mikrofon wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus oder im freigegebenen Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. – Wird auf True festgelegt, wenn ein Timeout der Mikrofondatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Mikrofonerfassung erfolgreich ist.
Ihr Audio erreicht keine anderen Anrufteilnehmer. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell, damit sie überprüfen können, ob eine andere Anwendung das Mikrofon verwendet, und versuchen Sie, sie zu schließen.

Zugreifen auf die Diagnose

Die benutzerseitige Diagnose ist ein erweitertes Feature der Kern-API Call und ermöglicht Ihnen, einen aktiven Anruf zu diagnostizieren.

let userFacingDiagnostics = self.call?.feature(Features.localUserDiagnostics)

Benutzerseitige Diagnoseereignisse

  • Implementieren der Delegierten für media- und network-Diagnosequellen. MediaDiagnosticsDelegate bzw. NetworkDiagnosticsDelegate verwenden.
extension CallObserver: MediaDiagnosticsDelegate {
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraFrozen args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerMuted args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraStartFailed args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerVolumeZero args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerNotFunctioning args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraPermissionDenied args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneNotFunctioning args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraStartTimedOut args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneMutedUnexpectedly args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsZeroSpeakerDevicesAvailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...                            
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsZeroMicrophoneDevicesAvailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakingWhileMicrophoneIsMuted args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerBusy args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneBusy args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
}

extension CallObserver: NetworkDiagnosticsDelegate {
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeIsNetworkRelaysUnreachable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkReconnectionQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkSendQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeIsNetworkUnavailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkReceiveQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
}
  • Verweis auf die media- und network-Diagnose und Festlegen des Delegatobjekts für das Überwachen von Ereignissen.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Hinweis

Wenn Sie CallKit über das SDK aktiviert haben oder die CallKit-Integration in Ihre Anwendung implementieren, kann die Meldung des Status „Stummschalten“ an CallKit dazu führen, dass das Betriebssystem dafür sorgt, dass die Anwendung den Zugriff auf das Mikrofon aus Datenschutzgründen verliert, was bewirken würde, dass das didIsSpeakingWhileMicrophoneIsMuted-Ereignis nicht wie erwartet funktioniert, da keine Eingaben vom Mikrofon erfasst werden können, um zu erkennen, dass der Benutzer spricht.

Abrufen der aktuellen benutzerseitigen Diagnose

  • Rufen Sie die neuesten Diagnosewerte ab, die ausgelöst wurden. Wenn weiterhin kein Wert für die Diagnose empfangen wurde, wird nil oder .unknown zurückgegeben.
let lastSpeakerNotFunctionValue = self.mediaDiagnostics.latest.isSpeakerNotFunctioning // Boolean?
let lastNetworkRelayNotReachableValue = self.networkDiagnostics.latest.networkRelaysUnreachable // Boolean?
let lastReceiveQualityValue = self.networkDiagnostics.latest.networkReceiveQuality // DiagnosticQuality (.good, .poor, .bad)
// or .unknown if there isn't a diagnostic for this.

Diagnosewerte

Die folgenden benutzerseitigen Diagnosen sind verfügbar:

Netzwerkwerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Netzwerk nicht verfügbar Es ist kein Netzwerk verfügbar. – Wird auf True festgelegt, wenn ein Anruf nicht gestartet werden kann, weil kein Netzwerk verfügbar ist.
- Wird auf False festgelegt, wenn ICE-Kandidaten vorhanden sind.
Das Gerät ist nicht mit einem Netzwerk verbunden. Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Netzwerkoptimierung.
networkRelaysUnreachable Probleme mit einem Netzwerk. – Wird auf True festgelegt, wenn das Netzwerk eine Einschränkung aufweist, die es Ihnen nicht erlaubt, Azure Communication Services-Relays zu erreichen.
- Wird bei einem neuen Anruf auf False festgelegt.
Während eines Anrufs, wenn das WLAN-Signal aktiviert und deaktiviert wird. Stellen Sie sicher, dass Firewallregeln und Netzwerkrouting es dem Client ermöglichen, Microsoft TURN-Server zu erreichen. Weitere Informationen finden Sie im Abschnitt Firewallkonfiguration.
networkReconnectionQuality Die Verbindung wurde unterbrochen und wir stellen die Verbindung zum Netzwerk wieder her. - Wird auf Bad festgelegt, wenn das Netzwerk getrennt ist.
- Wird auf Poor festgelegt, wenn die Medientransportkonnektivität verloren gegangen ist.
- Wird auf Good festgelegt, wenn eine neue Sitzung hergestellt wird.
Geringe Bandbreite, kein Internet Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
networkReceiveQuality Ein Indikator für die Qualität des eingehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Empfang des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Empfang des Datenstroms vorliegt.
– Es ist nur sichtbar, wenn im Anruf ein aktiver Audiofluss vorhanden ist, was bedeutet, dass ein Teilnehmer aktiv für einen bestimmten Zeitraum spricht.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.
networkSendQuality Ein Indikator für die Qualität des ausgehenden Datenstroms. – Wird auf Bad festgelegt, wenn ein schwerwiegendes Problem beim Senden des Datenstroms vorliegt.
– Wird auf Poor festgelegt, wenn ein geringfügiges Problem beim Senden des Datenstroms vorliegt.
– Wird auf Good festgelegt, wenn kein Problem beim Senden des Datenstroms vorliegt.
– Ähnlich wie beim Empfang einer Qualitätsdiagnose ist es nur sichtbar, wenn im Anruf ein aktiver Audiofluss vorhanden ist, was bedeutet, dass ein Teilnehmer aktiv für einen bestimmten Zeitraum spricht. Aber es funktioniert nur bei einem 1:1-Aufruf, da es auf Informationen von der anderen Seite angewiesen ist, um die Qualität zu überprüfen. Wo die andere Seite die empfangenen Daten signalisieren muss.
Geringe Bandbreite Stellen Sie sicher, dass Sie über eine zuverlässige Internetverbindung verfügen, die einen Sprachanruf aufrechterhalten kann. Weitere Informationen finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite. Schlagen Sie außerdem vor, dass der Endbenutzer seine Kamera deaktiviert, um die verfügbare Internetbandbreite zu sparen.

Audiowerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Keine Lautsprechergeräte verfügbar Im System des Benutzers ist kein Audioausgabegerät (Lautsprecher) vorhanden. - Wird auf True festgelegt, wenn keine Lautsprechergeräte im System vorhanden sind und die Lautsprecherauswahl unterstützt wird.
– Wird auf False festgelegt, wenn mindestens ein Lautsprecher im System vorhanden ist und die Lautsprecherauswahl unterstützt wird.
Kein Lautsprecher ist angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Lautsprecher verfügbar sind.
SprechenWährendMikrofonStummgeschaltetIst Sprechen während der Stummschaltung. - Wird auf True festgelegt, wenn das lokale Mikrofon stummgeschaltet ist und der lokale Benutzer spricht.
- Wird auf False festgelegt, wenn der lokale Benutzer entweder aufhört zu sprechen oder die Stummschaltung des Mikrofons aufhebt.
– Dieses Diagnoseereignis kann automatisch deaktiviert werden, wenn es für eine bestimmte Anzahl von Malen ohne Benutzeraktion ausgelöst wird, um Rauschen zu vermeiden und ein besseres Benutzererlebnis zu bieten. Es wird erneut aktiviert, wenn eine neue Stummschaltungsaktion auftritt.
Schalten Sie Ihr Mikrofon während eines Anrufs stumm, und sprechen Sie in das Mikrofon. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass sie möglicherweise sprechen und nicht bemerken, dass ihr Audio stummgeschaltet ist.
Keine Mikrofongeräte verfügbar Keine Audioaufnahmegeräte (Mikrofon) im System des Benutzers vorhanden. - Wird auf True festgelegt, wenn keine Mikrofongeräte im System vorhanden sind.
– Wird auf False festgelegt, wenn mindestens ein Mikrofon im System vorhanden ist.
Alle Mikrofone sind während des Gesprächs nicht angeschlossen. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer visuell darüber benachrichtigen, dass in ihrer aktuellen Anrufsitzung keine Mikrofone vorhanden sind. Weitere Informationen finden Sie im Abschnitt zum Aktivieren des Mikrofons im Abschnitt "Geräte-Manager ".
Mikrofon funktioniert nicht Das Mikrofon funktioniert nicht. – Wird auf True festgelegt, wenn die Übertragung des lokalen Audiodatenstroms nicht gestartet werden kann, da das Mikrofon möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird. Es dauert ungefähr 10 Sekunden, bis dieses UFD ausgelöst wird.
- Wird auf False festgelegt, wenn das Mikrofon wieder erfolgreich einen Audiodatenstrom sendet.
Keine Mikrofone verfügbar, Mikrofonzugriff in einem System deaktiviert Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ein Problem mit dem Mikrofon vorliegt.
microphoneMuteUnexpectedly Das Mikrofon ist stummgeschaltet. - Wird auf True festgelegt, wenn das Mikrofon unerwartet stummgeschaltet wird.
- Wird auf False festgelegt, wenn das Mikrofon erfolgreich einen Audiodatenstrom sendet.
Das Mikrofon wird vom System stummgeschaltet. Dies tritt meistens dann auf, wenn sich Benutzer auf einem mobilen Gerät in einem Azure Communication Services-Anruf befinden und ein Telefonanruf eingeht. In den meisten Fällen schaltet das Betriebssystem den Azure Communication Services-Anruf stumm, damit Benutzer den Telefonanruf entgegennehmen können. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass ihr Anruf stummgeschaltet wurde, da ein Telefonanruf einging. Weitere Informationen finden Sie im Abschnitt Behandeln des Stummschaltens eines Azure Communication Services-Anrufs durch das Betriebssystem.
MikrofonberechtigungVerweigert Die Lautstärke des Geräts ist gering, oder es ist unter macOS fast lautlos. – Wird auf True festgelegt, wenn die Audioberechtigung von den Systemeinstellungen (Audio) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS.
Die Mikrofonberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden des Mikrofons für einen Azure Communication Services-Anruf nicht aktiviert haben.

Kamerawerte

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
Kamera eingefroren Die Kamera erzeugt keine Bilder für mehr als fünf Sekunden. - Wird auf True festgelegt, wenn der lokale Videodatenstrom eingefroren ist. Diese Diagnose bedeutet, dass die Remoteseite Ihr Video auf ihrem Bildschirm eingefroren sieht oder dass die Remoteteilnehmer Ihr Video nicht auf ihrem Bildschirm rendern.
- Wird auf False festgelegt, wenn das Einfrieren beendet ist und die Benutzer Ihr Video wie gewohnt sehen können.
Die Kamera wurde während des Anrufs getrennt oder ein schlechtes Netzwerk hat zum Einfrieren der Kamera geführt. Wenn der Wert auf True festgelegt ist, sollten Sie Endbenutzer darüber benachrichtigen, dass das Remoteteilnehmernetzwerk möglicherweise fehlerhaft ist. Schlagen Sie eventuell vor, die Kamera zu deaktivieren, um Bandbreite zu sparen. Weitere Informationen zu den erforderlichen Internetvoraussetzungen für einen Azure Communication Services-Anruf finden Sie im Abschnitt Anforderung an die Netzwerkbandbreite.
KameraStartFehlgeschlagen Generischer Kamerafehler. – Wird auf True festgelegt, wenn die Übertragung des lokalen Videos nicht gestartet werden kann, da die Kamera möglicherweise im System deaktiviert wurde oder von einem anderen Prozess verwendet wird.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera nicht gestartet werden konnte.
cameraStartTimedOut Häufiges Szenario, in dem die Kamera einen fehlerhaften Zustand aufweist. - Wird auf True festgelegt, wenn das Kameragerät einen Timeout aufweist, um mit dem Senden des Videodatenstroms zu beginnen.
- Wird auf False festgelegt, wenn das ausgewählte Kameragerät wieder erfolgreich ein lokales Video sendet.
Kamerafehler Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).
Kameraerlaubnis verweigert Die Kameraberechtigungen wurden in den Einstellungen verweigert. – Wird auf True festgelegt, wenn die Kameraberechtigung von den Systemeinstellungen (Video) verweigert wird.
- Wird bei erfolgreicher Datenstromerfassung auf False festgelegt.
Hinweis: Diese Diagnose funktioniert nur unter macOS Chrome.
Die Kameraberechtigungen sind in den Einstellungen deaktiviert. Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass sie die Berechtigung zum Verwenden der Kamera für einen Azure Communication Services-Anruf nicht aktiviert haben.
Kamera unerwartet gestoppt Fehlfunktion der Kamera - Wird auf True festgelegt, wenn die Kamera unerwartet in den Zustand „Beendet“ wechselt
- Wird auf False festgelegt, wenn die Kamera wieder erfolgreich einen Videodatenstrom sendet
Überprüfen der ordnungsgemäßen Funktion der Kamera Wenn der Wert auf True festgelegt ist, benachrichtigen Sie Endbenutzer visuell darüber, dass die Kamera eventuell fehlerhaft ist. (Wenn der Wert zurück auf False festgelegt wird, entfernen Sie die Benachrichtigung).

Nur systemeigen

Name Beschreibung Mögliche Werte Anwendungsfälle Schritte zur Problembehebung
speakerVolumeIsZero Null Lautstärke auf einem Gerät (Lautsprecher). – Wird auf True festgelegt, wenn die Lautsprecherlautstärke null ist.
– Wird auf False festgelegt, wenn die Lautsprecherlautstärke nicht null ist.
Das Audio der Anrufteilnehmer ist nicht zu hören. Wenn der Wert auf Truefestgelegt ist, haben Sie möglicherweise versehentlich die Lautstärke auf den untersten Wert (Null) eingestellt.
speakerMuted Der Lautsprecher ist stummgeschaltet. – Wird auf True festgelegt, wenn der Lautsprecher stummgeschaltet ist.
– Wird auf False festgelegt, wenn der Lautsprecher nicht stummgeschaltet ist.
Das Audio der Anrufteilnehmer ist nicht zu hören. Wenn der Wert auf Truefestgelegt ist, haben Sie möglicherweise versehentlich den Lautsprecher stummgeschaltet.
speakerBusy Der Lautsprecher wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus oder im freigegebenen Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. – Wird auf True festgelegt, wenn ein Timeout der Lautsprecherdatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Lautsprechererfassung erfolgreich ist.
Das Audio der Anrufteilnehmer ist über den Lautsprecher nicht zu hören. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell, damit sie überprüfen können, ob eine andere Anwendung den Lautsprecher verwendet, und versuchen Sie, sie zu schließen.
speakerNotFunctioning Der Lautsprecher funktioniert nicht (Fehler beim Initialisieren des Audiogeräteclients oder das Gerät war für mehr als 5 Sek. inaktiv) – Wird auf True festgelegt, wenn der Lautsprecher nicht verfügbar ist oder ein Timeout der Lautsprecherdatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Lautsprechererfassung erfolgreich ist.
Das Audio der Anrufteilnehmer ist über den Lautsprecher nicht zu hören. Versuchen Sie, den Zustand des Lautsprechers zu überprüfen.
microphoneBusy Das Mikrofon wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus oder im freigegebenen Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. – Wird auf True festgelegt, wenn ein Timeout der Mikrofondatenstromerfassung auftritt (Audio).
– Wird aufFalse festgelegt, wenn die Mikrofonerfassung erfolgreich ist.
Ihr Audio erreicht keine anderen Anrufteilnehmer. Wenn der Wert auf Truefestgelegt ist, benachrichtigen Sie Endbenutzer visuell, damit sie überprüfen können, ob eine andere Anwendung das Mikrofon verwendet, und versuchen Sie, sie zu schließen.

Zugreifen auf die Diagnose

Die benutzerseitige Diagnose ist ein erweitertes Feature der Kern-API Call und ermöglicht Ihnen, einen aktiven Anruf zu diagnostizieren.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Benutzerseitige Diagnoseereignisse

  • Implementieren von Listenern für Diagnoseereignisse.
private async void Call__OnNetworkUnavailableChanged(object sender, FlagDiagnosticChangedEventArgs args)
{
  var value = args.Value;
  // Handle the diagnostic event value changed...
}

// Listen to other network diagnostics

private async void Call__OnMediaSpeakerNotFunctioningChanged(object sender, FlagDiagnosticChangedEventArgs args)
{
  var value = args.Value;
  // Handle the diagnostic event value changed...
}

// Listen to other media diagnostics
  • Festlegen von Ereignismethoden zum Überwachen von Ereignissen.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
this.networkDiagnostics = diagnosticsCallFeature.Network;
this.mediaDiagnostics = diagnosticsCallFeature.Media;

this.networkDiagnostics.NetworkUnavailableChanged += Call__OnNetworkUnavailableChanged;
// Listen to other network events as well ... 

this.mediaDiagnostics.SpeakerNotFunctioningChanged += Call__OnMediaSpeakerNotFunctioningChanged;
// Listen to other media events as well ... 

// Removing listeners

this.networkDiagnostics.NetworkUnavailable -= Call__NetworkUnavailableChanged;
// Remove the other listeners as well ... 

this.mediaDiagnostics.SpeakerNotFunctioningChanged -= Call__OnMediaSpeakerNotFunctioningChanged;
// Remove the other listeners as well ... 

Abrufen der aktuellen benutzerseitigen Diagnose

  • Abrufen der neuesten Diagnosewerte, die im aktuellen Anruf ausgelöst wurden. Wenn weiterhin kein Wert für die Diagnose empfangen wurde, wird null oder .unknown zurückgegeben.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
this.networkDiagnostics = diagnosticsCallFeature.Network;
this.mediaDiagnostics = diagnosticsCallFeature.Media;

bool? lastSpeakerNotFunctionValue = this.mediaDiagnostics.GetLatestDiagnostics().IsSpeakerNotFunctioning; // Boolean?
bool? lastNetworkRelayNotReachableValue = this.networkDiagnostics.GetLatestDiagnostics().IsNetworkRelaysUnreachable; // Boolean?
DiagnosticQuality lastReceiveQualityValue = this.networkDiagnostics.GetLatestDiagnostics().NetworkReceiveQuality; // DiagnosticQuality (.good, .poor, .bad)
// or .unknown if there isn't a diagnostic for this.