Användarinriktad diagnostik

När du arbetar med samtal i Azure Communication Services kan det uppstå problem som påverkar dina kunder. För att hjälpa till med detta tillhandahåller Azure Communication Services en funktion med namnet "Användarinriktad diagnostik" (UFD) som kan användas för att undersöka olika egenskaper för ett anrop för att avgöra vad problemet kan vara. Användarinriktad diagnostik är händelser som utlöses som kan tyda på att ett underliggande problem (dåligt nätverk, användarens mikrofon är avstängt) att en användare kan ha en dålig upplevelse. När en användarinriktad diagnostik har utlösts bör du överväga att ge feedback till en slutanvändare om att de kan ha ett underliggande problem. Utdata för användarriktad diagnostik är dock endast informationsbaserade och den anropande stacken gör inga ändringar baserat på att en användarinriktad diagnostik utlöses.

Diagnostikvärden

Följande användarinriktade diagnostik är tillgänglig:

Nätverksvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
noNetwork Det finns inget tillgängligt nätverk. – Ange till True när ett anrop inte kan starta eftersom det inte finns något tillgängligt nätverk.
- Ange till False när det finns ICE-kandidater närvarande.
Enheten är inte ansluten till ett nätverk. Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Nätverksoptimering .
networkRelaysNotReachable Problem med ett nätverk. – Ange till True när nätverket har vissa begränsningar som inte tillåter att du når Azure Communication Services-reläer.
- Ställ in False på när du ringer ett nytt samtal.
Under ett samtal när WiFi-signalen går på och av. Se till att brandväggsregler och nätverksroutning tillåter att klienten når Microsofts vändservrar. Mer information finns i avsnittet Brandväggskonfiguration .
networkReconnect Anslutningen gick förlorad och vi återansluter till nätverket. – Ange tillBad när nätverket är frånkopplat
– Ange till Poornär medietransportanslutningen går förlorad
– Ange till Good när en ny session är ansluten.
Låg bandbredd, inget Internet Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd.
networkReceiveQuality En indikator för inkommande strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att ta emot strömmen.
– Ange till Poor när det är ett milt problem med att ta emot strömmen.
– Ange till Good när det inte är några problem med att ta emot strömmen.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå att slutanvändaren stänger av kameran för att spara tillgänglig Internetbandbredd.
networkSendQuality En indikator för utgående strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att skicka strömmen.
– Ange till Poor när det är ett milt problem med att skicka strömmen.
– Ange till Good när det inte är några problem med att skicka strömmen.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå också att slutanvändaren stänger av kameran för att spara tillgänglig internetbandbredd.

Ljudvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
noSpeakerDevicesEnumerated Det finns ingen ljudutdataenhet (högtalare) i användarens system. – Ange till True när det inte finns några högtalarenheter i systemet och talarval stöds.
– Ange till False när det finns minst en högtalarenhet i systemet, och val av talare stöds.
Alla högtalare är urkopplade När värdet är inställt på Truekan du ge slutanvändaren ett visuellt meddelande om att deras aktuella samtalssession inte har några tillgängliga talare.
speakingWhileMicrophoneIsMuted Talar medan du är på mute. – Ställ in på True när den lokala mikrofonen är avstängd och den lokala användaren talar.
– Ställ in på False när den lokala användaren antingen slutar tala eller avaktiverar mikrofonen.
* Obs! För närvarande stöds inte det här alternativet i Safari eftersom exempel på ljudnivå tas från WebRTC-statistik.
Under ett samtal stänger du av mikrofonen och talar in i den. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att de kanske pratar och inte inser att deras ljud är avstängt.
noMicrophoneDevicesEnumerated Inga ljudinspelningsenheter (mikrofon) i användarens system – Ställ in på True när det inte finns några mikrofonenheter i systemet.
– Ange till False när det finns minst en mikrofonenhet i systemet.
Alla mikrofoner kopplas från under samtalet. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession inte har någon mikrofon. Mer information finns i avsnittet aktivera mikrofon från enhetshanteraren .
microphoneNotFunctioning Mikrofonen fungerar inte. – Ange till True när vi inte kan börja skicka lokal ljudström eftersom mikrofonenheten kan ha inaktiverats i systemet eller används av en annan process. Det tar cirka 10 sekunder för den här UFD:n att höjas.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen igen.
Inga mikrofoner tillgängliga, mikrofonåtkomst inaktiverad i ett system När värdet är inställt på att True ge ett visuellt meddelande till slutanvändaren om att det är problem med mikrofonen.
mikrofonMuteUnexpectedly Mikrofonen är avstängd – Ställ in på True när mikrofonen oväntat går in i ett avstängt tillstånd.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen
Mikrofonen är avstängd från systemet. De flesta fall inträffar när användaren är på ett Azure Communication Services-samtal på en mobil enhet och ett telefonsamtal kommer in. I de flesta fall stänger operativsystemet av Azure Communication Services-samtalet så att en användare kan svara på telefonsamtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras samtal har stängts av eftersom ett telefonsamtal kom in. Mer information finns i hur du bäst hanterar operativsystemets muting för ett Azure Communication Services-anropsavsnitt för mer information.
microphonePermissionDenied det finns låg volym från enheten eller det är nästan tyst på macOS. – Ange till True när ljudbehörighet nekas från systeminställningarna (ljud).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS.
Mikrofonbehörigheter är inaktiverade i Inställningar. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda mikrofon för ett Azure Communication Services-anrop.

Kamera värden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
cameraFreeze Kamera slutar producera ramar i mer än 5 sekunder. – Ange till True när den lokala videoströmmen är låst. Den här diagnostiken innebär att fjärrsidan ser videon frusen på skärmen eller att fjärrdeltagarna inte återger videon på skärmen.
– Ställ in på False när frysningen slutar och användarna kan se videon som vanligt.
Den Kamera gick förlorad under samtalet eller dåligt nätverk fick kameran att frysa. När värdet är inställt på kan du överväga att Truemeddela slutanvändaren om att fjärrdeltagarnas nätverk kan vara dåligt , vilket möjligen tyder på att de stänger av kameran för att spara bandbredd. Mer information finns i avsnittet Krav på nätverksbandbredd om nödvändiga Internetfunktioner för ett Azure Communication Services-anrop.
cameraStartFailed Allmänt kamerafel. - Ange till True när vi inte kan börja skicka lokal video eftersom kameraenheten kan ha inaktiverats i systemet eller används av en annan process~.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta.
cameraStartTimedOut Vanligt scenario där kameran är i dåligt tillstånd. – Ställ in på True när kamerans enhet överskrider tidsgränsen för att börja skicka videoström.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).
cameraPermissionDenied Kamera behörigheter nekades i inställningarna. – Ange till True när kamerabehörighet nekas från systeminställningarna (video).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS Chrome.
Kamera behörigheter är inaktiverade i inställningarna. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda kameran för ett Azure Communication Services-anrop.
cameraStoppedUnexpectedly Kamera fel – Ställ in på True när kameran oväntat kommer in i stoppat tillstånd.
– Ställ in på False när kameran börjar skicka videoströmmen igen.
Kontrollera att kameran fungerar korrekt. När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).

Felvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
screenshareRecordingDisabled Systemskärmsdelning nekades från inställningarna i Inställningar. – Ange till när behörigheten för True skärmdelning nekas från systeminställningarna (delning).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS.Chrome.
Skärminspelning är inaktiverad i Inställningar. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att dela sin skärm för ett Azure Communication Services-anrop.
capturerStartFailed Det gick inte att dela systemskärmen. – Ange till True när vi inte kan börja fånga skärmen.
– Ange till False när skärmen ska hämtas kan startas.
När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att det eventuellt uppstod ett problem med att dela skärmen. (När värdet är inställt på Falsetar du bort meddelande).
capturerStoppedUnexpectedly Fel vid systemskärmsdelning – Ange till True när skärmdumpen oväntat kommer in i stoppat tillstånd.
– Ange till False när skärmdumpen börjar avbildas igen.
Kontrollera att skärmdelningen fungerar korrekt När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att det eventuellt finns ett problem som gör att delning av skärmen stoppas. (När värdet anges tillbaka för att False ta bort meddelande).

Åtkomst till diagnostik

Användarinriktad diagnostik är en utökad funktion i kärn-API Call :et och gör att du kan diagnostisera ett aktivt anrop.

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

Användarriktade diagnostikhändelser

  • diagnosticChanged Prenumerera på händelsen för att övervaka när någon användarinriktad diagnostik ändras.
/**
 *  Each diagnostic has the following data:
 * - diagnostic is the type of diagnostic, e.g. NetworkSendQuality, DeviceSpeakWhileMuted, etc...
 * - value is DiagnosticQuality or DiagnosticFlag:
 *     - DiagnosticQuality = enum { Good = 1, Poor = 2, Bad = 3 }.
 *     - DiagnosticFlag = true | false.
 * - valueType = 'DiagnosticQuality' | 'DiagnosticFlag'
 */
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}`);
        }
    }
};

userFacingDiagnostics.network.on('diagnosticChanged', diagnosticChangedListener);
userFacingDiagnostics.media.on('diagnosticChanged', diagnosticChangedListener);

Hämta den senaste användarinriktade diagnostiken

  • Hämta de senaste diagnostikvärdena som har genererats. Om en diagnostik är odefinierad beror det på att den aldrig har skapats.
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}`
);

Diagnostikvärden

Följande användarinriktade diagnostik är tillgänglig:

Nätverksvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
networkUnavailable Det finns inget tillgängligt nätverk. – Ange till True när ett anrop inte kan starta eftersom det inte finns något tillgängligt nätverk.
- Ange till False när det finns ICE-kandidater närvarande.
Enheten är inte ansluten till ett nätverk. Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Nätverksoptimering .
networkRelaysUnreachable Problem med ett nätverk. – Ange till True när nätverket har vissa begränsningar som inte tillåter att du når Azure Communication Services-reläer.
- Ställ in False på när du ringer ett nytt samtal.
Under ett samtal när WiFi-signalen går på och av. Se till att brandväggsregler och nätverksroutning tillåter att klienten når Microsofts vändservrar. Mer information finns i avsnittet Brandväggskonfiguration .
networkReconnectionQuality Anslutningen gick förlorad och vi återansluter till nätverket. – Ange tillBad när nätverket är frånkopplat
– Ange till Poornär medietransportanslutningen går förlorad
– Ange till Good när en ny session är ansluten.
Låg bandbredd, inget Internet Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd.
networkReceiveQuality En indikator för inkommande strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att ta emot strömmen.
– Ange till Poor när det är ett milt problem med att ta emot strömmen.
– Ange till Good när det inte är några problem med att ta emot strömmen.
- Det är bara synligt om det finns ett aktivt ljudflöde i samtalet, vilket innebär att en deltagare aktivt talar under en viss tidsperiod.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå att slutanvändaren stänger av kameran för att spara tillgänglig internetbandbredd.
networkSendQuality En indikator för utgående strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att skicka strömmen.
– Ange till Poor när det är ett milt problem med att skicka strömmen.
– Ange till Good när det inte är några problem med att skicka strömmen.
- Liknar att få kvalitetsdiagnostik är det bara synligt om det finns ett aktivt ljudflöde i samtalet, vilket innebär att en deltagare talar aktivt under en viss tidsperiod. Men det fungerar bara i ett 1:1-anrop eftersom det förlitar sig på information från den andra sidan för att verifiera kvaliteten. Där den andra sidan måste signalera de data som togs emot.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå också att slutanvändaren stänger av kameran för att spara tillgänglig Internetbandbredd.

Ljudvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
noSpeakerDevicesAvailable Det finns ingen ljudutdataenhet (högtalare) i användarens system. – Ange till True när det inte finns några högtalarenheter i systemet och talarval stöds.
– Ange till False när det finns minst en högtalarenhet i systemet, och val av talare stöds.
Alla högtalare är urkopplade När värdet är inställt på Truekan du ge slutanvändaren ett visuellt meddelande om att deras aktuella samtalssession inte har några tillgängliga talare.
speakingWhileMicrophoneIsMuted Talar medan du är på mute. – Ställ in på True när den lokala mikrofonen är avstängd och den lokala användaren talar.
– Ställ in på False när den lokala användaren antingen slutar tala eller avaktiverar mikrofonen.
– Den här diagnostikhändelsen kan inaktiveras automatiskt om den utlöses under en viss tid utan någon användaråtgärd för att undvika brus och ge en bättre användarupplevelse. Den aktiveras igen när en ny mute-åtgärd inträffar.
Under ett samtal stänger du av mikrofonen och talar in i den. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att de kanske pratar och inte inser att deras ljud är avstängt.
noMicrophoneDevicesAvailable Inga ljudinspelningsenheter (mikrofon) i användarens system – Ställ in på True när det inte finns några mikrofonenheter i systemet.
– Ange till False när det finns minst en mikrofonenhet i systemet.
Alla mikrofoner kopplas från under samtalet. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession inte har någon mikrofon. Mer information finns i avsnittet aktivera mikrofon från enhetshanteraren .
microphoneNotFunctioning Mikrofonen fungerar inte. – Ange till True när vi inte kan börja skicka lokal ljudström eftersom mikrofonenheten kan ha inaktiverats i systemet eller används av en annan process. Det tar cirka 10 sekunder för den här UFD:n att höjas.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen igen.
Inga mikrofoner tillgängliga, mikrofonåtkomst inaktiverad i ett system När värdet är inställt på att True ge ett visuellt meddelande till slutanvändaren om att det är problem med mikrofonen.
mikrofonMuteUnexpectedly Mikrofonen är avstängd – Ställ in på True när mikrofonen oväntat går in i ett avstängt tillstånd.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen
Mikrofonen är avstängd från systemet. De flesta fall inträffar när användaren är på ett Azure Communication Services-samtal på en mobil enhet och ett telefonsamtal kommer in. I de flesta fall stänger operativsystemet av Azure Communication Services-samtalet så att en användare kan svara på telefonsamtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras samtal har stängts av eftersom ett telefonsamtal kom in. Mer information finns i hur du bäst hanterar operativsystemets muting för ett Azure Communication Services-anropsavsnitt för mer information.
microphonePermissionDenied det finns låg volym från enheten eller det är nästan tyst på macOS. – Ange till True när ljudbehörighet nekas från systeminställningarna (ljud).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS.
Mikrofonbehörigheter är inaktiverade i Inställningar. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda mikrofon för ett Azure Communication Services-anrop.

Kamera värden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
cameraFrozen Kamera slutar producera ramar i mer än 5 sekunder. – Ange till True när den lokala videoströmmen är låst. Den här diagnostiken innebär att fjärrsidan ser videon frusen på skärmen eller att fjärrdeltagarna inte återger videon på skärmen.
– Ställ in på False när frysningen slutar och användarna kan se videon som vanligt.
Den Kamera gick förlorad under samtalet eller dåligt nätverk fick kameran att frysa. När värdet är inställt på kan du överväga att Truemeddela slutanvändaren om att fjärrdeltagarnas nätverk kan vara dåligt , vilket möjligen tyder på att de stänger av kameran för att spara bandbredd. Mer information finns i avsnittet Krav på nätverksbandbredd om nödvändiga Internetfunktioner för ett Azure Communication Services-anrop.
cameraStartFailed Allmänt kamerafel. – Ange till True när vi inte kan börja skicka lokal video eftersom kameraenheten kan ha inaktiverats i systemet eller används av en annan process~.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta.
cameraStartTimedOut Vanligt scenario där kameran är i dåligt tillstånd. – Ställ in på True när kamerans enhet överskrider tidsgränsen för att börja skicka videoström.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).
cameraPermissionDenied Kamera behörigheter nekades i inställningarna. – Ange till True när kamerabehörighet nekas från systeminställningarna (video).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS Chrome.
Kamera behörigheter är inaktiverade i inställningarna. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda kameran för ett Azure Communication Services-anrop.
cameraStoppedUnexpectedly Kamera fel – Ställ in på True när kameran oväntat kommer in i stoppat tillstånd.
– Ställ in på False när kameran börjar skicka videoströmmen igen.
Kontrollera att kameran fungerar korrekt. När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).

Endast inbyggt

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
speakerVolumeIsZero Noll volym på en enhet (högtalare). – Ange till True när talarvolymen är noll.
– Ange till False när talarvolymen inte är noll.
Hör inte ljud från jourdeltagare. När värdet är inställt Truepå kan du av misstag ha volymen på lägsta (noll).
speakerMuted Talarenheten är avstängd. – Ange till True när högtalarenheten är avstängd.
– Ange till False när talarenheten inte är avstängd.
Hör inte ljud från jourdeltagare. När värdet är inställt på Truekan du av misstag ha stängt av högtalaren.
speakerBusy Högtalaren används redan. Antingen används enheten i exklusivt läge eller så används enheten i delat läge och anroparen uppmanas att använda enheten i exklusivt läge. – Ange till True när hämtningen av talarenhetens enhetsström överskrider tidsgränsen (ljud).
– Ange till False när talarförvärvet lyckas.
Hör inte ljud från deltagare som ringer via högtalare. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren så att de kan kontrollera om ett annat program använder talaren och försöka stänga det.
speakerNotFunctioning Högtalaren fungerar inte (det gick inte att initiera ljudenhetsklienten eller enheten blev inaktiv i mer än 5 sekunder) – Ställ in på True när högtalaren inte är tillgänglig eller om hämtningen av enhetsströmmen överskrider tidsgränsen (ljud).
– Ange till False när talarförvärvet lyckas.
Hör inte ljud från deltagare som ringer via högtalare. Prova att kontrollera talarenhetens tillstånd.
microphoneBusy Mikrofonen används redan. Antingen används enheten i exklusivt läge eller så används enheten i delat läge och anroparen uppmanas att använda enheten i exklusivt läge. – Ange till True när hämtningen av mikrofonenhetens ström överskrider tidsgränsen (ljud).
– Ställ in på False när mikrofonförvärvet lyckas.
Ljudet når inte andra deltagare i samtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren så att de kan kontrollera om ett annat program använder mikrofonen och försöka stänga den.

Åtkomst till diagnostik

Användarinriktad diagnostik är en utökad funktion i kärn-API Call :et och gör att du kan diagnostisera ett aktivt anrop.

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

Användarriktade diagnostikhändelser

  • Hämta funktionsobjekt och lägg till lyssnare i diagnostikhändelserna.
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);

Hämta den senaste användarinriktade diagnostiken

  • Hämta de senaste diagnostikvärdena som har genererats i det aktuella anropet. Om vi fortfarande inte fick något värde för diagnostiken genereras ett undantag.
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 ...

Diagnostikvärden

Följande användarinriktade diagnostik är tillgänglig:

Nätverksvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
networkUnavailable Det finns inget tillgängligt nätverk. – Ange till True när ett anrop inte kan starta eftersom det inte finns något tillgängligt nätverk.
- Ange till False när det finns ICE-kandidater närvarande.
Enheten är inte ansluten till ett nätverk. Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Nätverksoptimering .
networkRelaysUnreachable Problem med ett nätverk. – Ange till True när nätverket har vissa begränsningar som inte tillåter att du når Azure Communication Services-reläer.
- Ställ in False på när du ringer ett nytt samtal.
Under ett samtal när WiFi-signalen går på och av. Se till att brandväggsregler och nätverksroutning tillåter att klienten når Microsofts vändservrar. Mer information finns i avsnittet Brandväggskonfiguration .
networkReconnectionQuality Anslutningen gick förlorad och vi återansluter till nätverket. – Ange tillBad när nätverket är frånkopplat
– Ange till Poornär medietransportanslutningen går förlorad
– Ange till Good när en ny session är ansluten.
Låg bandbredd, inget Internet Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd.
networkReceiveQuality En indikator för inkommande strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att ta emot strömmen.
– Ange till Poor när det är ett milt problem med att ta emot strömmen.
– Ange till Good när det inte är några problem med att ta emot strömmen.
- Det är bara synligt om det finns ett aktivt ljudflöde i samtalet, vilket innebär att en deltagare aktivt talar under en viss tidsperiod.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå att slutanvändaren stänger av kameran för att spara tillgänglig internetbandbredd.
networkSendQuality En indikator för utgående strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att skicka strömmen.
– Ange till Poor när det är ett milt problem med att skicka strömmen.
– Ange till Good när det inte är några problem med att skicka strömmen.
- Liknar att få kvalitetsdiagnostik är det bara synligt om det finns ett aktivt ljudflöde i samtalet, vilket innebär att en deltagare talar aktivt under en viss tidsperiod. Men det fungerar bara i ett 1:1-anrop eftersom det förlitar sig på information från den andra sidan för att verifiera kvaliteten. Där den andra sidan måste signalera de data som togs emot.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå också att slutanvändaren stänger av kameran för att spara tillgänglig Internetbandbredd.

Ljudvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
noSpeakerDevicesAvailable Det finns ingen ljudutdataenhet (högtalare) i användarens system. – Ange till True när det inte finns några högtalarenheter i systemet och talarval stöds.
– Ange till False när det finns minst en högtalarenhet i systemet, och val av talare stöds.
Alla högtalare är urkopplade När värdet är inställt på Truekan du ge slutanvändaren ett visuellt meddelande om att deras aktuella samtalssession inte har några tillgängliga talare.
speakingWhileMicrophoneIsMuted Talar medan du är på mute. – Ställ in på True när den lokala mikrofonen är avstängd och den lokala användaren talar.
– Ställ in på False när den lokala användaren antingen slutar tala eller avaktiverar mikrofonen.
– Den här diagnostikhändelsen kan inaktiveras automatiskt om den utlöses under en viss tid utan någon användaråtgärd för att undvika brus och ge en bättre användarupplevelse. Den aktiveras igen när en ny mute-åtgärd inträffar.
Under ett samtal stänger du av mikrofonen och talar in i den. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att de kanske pratar och inte inser att deras ljud är avstängt.
noMicrophoneDevicesAvailable Inga ljudinspelningsenheter (mikrofon) i användarens system – Ställ in på True när det inte finns några mikrofonenheter i systemet.
– Ange till False när det finns minst en mikrofonenhet i systemet.
Alla mikrofoner kopplas från under samtalet. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession inte har någon mikrofon. Mer information finns i avsnittet aktivera mikrofon från enhetshanteraren .
microphoneNotFunctioning Mikrofonen fungerar inte. – Ange till True när vi inte kan börja skicka lokal ljudström eftersom mikrofonenheten kan ha inaktiverats i systemet eller används av en annan process. Det tar cirka 10 sekunder för den här UFD:n att höjas.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen igen.
Inga mikrofoner tillgängliga, mikrofonåtkomst inaktiverad i ett system När värdet är inställt på att True ge ett visuellt meddelande till slutanvändaren om att det är problem med mikrofonen.
mikrofonMuteUnexpectedly Mikrofonen är avstängd – Ställ in på True när mikrofonen oväntat går in i ett avstängt tillstånd.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen
Mikrofonen är avstängd från systemet. De flesta fall inträffar när användaren är på ett Azure Communication Services-samtal på en mobil enhet och ett telefonsamtal kommer in. I de flesta fall stänger operativsystemet av Azure Communication Services-samtalet så att en användare kan svara på telefonsamtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras samtal har stängts av eftersom ett telefonsamtal kom in. Mer information finns i hur du bäst hanterar operativsystemets muting för ett Azure Communication Services-anropsavsnitt för mer information.
microphonePermissionDenied det finns låg volym från enheten eller det är nästan tyst på macOS. – Ange till True när ljudbehörighet nekas från systeminställningarna (ljud).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS.
Mikrofonbehörigheter är inaktiverade i Inställningar. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda mikrofon för ett Azure Communication Services-anrop.

Kamera värden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
cameraFrozen Kamera slutar producera ramar i mer än 5 sekunder. – Ange till True när den lokala videoströmmen är låst. Den här diagnostiken innebär att fjärrsidan ser videon frusen på skärmen eller att fjärrdeltagarna inte återger videon på skärmen.
– Ställ in på False när frysningen slutar och användarna kan se videon som vanligt.
Den Kamera gick förlorad under samtalet eller dåligt nätverk fick kameran att frysa. När värdet är inställt på kan du överväga att Truemeddela slutanvändaren om att fjärrdeltagarnas nätverk kan vara dåligt , vilket möjligen tyder på att de stänger av kameran för att spara bandbredd. Mer information finns i avsnittet Krav på nätverksbandbredd om nödvändiga Internetfunktioner för ett Azure Communication Services-anrop.
cameraStartFailed Allmänt kamerafel. – Ange till True när vi inte kan börja skicka lokal video eftersom kameraenheten kan ha inaktiverats i systemet eller används av en annan process~.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta.
cameraStartTimedOut Vanligt scenario där kameran är i dåligt tillstånd. – Ställ in på True när kamerans enhet överskrider tidsgränsen för att börja skicka videoström.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).
cameraPermissionDenied Kamera behörigheter nekades i inställningarna. – Ange till True när kamerabehörighet nekas från systeminställningarna (video).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS Chrome.
Kamera behörigheter är inaktiverade i inställningarna. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda kameran för ett Azure Communication Services-anrop.
cameraStoppedUnexpectedly Kamera fel – Ställ in på True när kameran oväntat kommer in i stoppat tillstånd.
– Ställ in på False när kameran börjar skicka videoströmmen igen.
Kontrollera att kameran fungerar korrekt. När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).

Endast inbyggt

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
speakerVolumeIsZero Noll volym på en enhet (högtalare). – Ange till True när talarvolymen är noll.
– Ange till False när talarvolymen inte är noll.
Hör inte ljud från jourdeltagare. När värdet är inställt Truepå kan du av misstag ha volymen på lägsta (noll).
speakerMuted Talarenheten är avstängd. – Ange till True när högtalarenheten är avstängd.
– Ange till False när talarenheten inte är avstängd.
Hör inte ljud från jourdeltagare. När värdet är inställt på Truekan du av misstag ha stängt av högtalaren.
speakerBusy Högtalaren används redan. Antingen används enheten i exklusivt läge eller så används enheten i delat läge och anroparen uppmanas att använda enheten i exklusivt läge. – Ange till True när hämtningen av talarenhetens enhetsström överskrider tidsgränsen (ljud).
– Ange till False när talarförvärvet lyckas.
Hör inte ljud från deltagare som ringer via högtalare. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren så att de kan kontrollera om ett annat program använder talaren och försöka stänga det.
speakerNotFunctioning Högtalaren fungerar inte (det gick inte att initiera ljudenhetsklienten eller enheten blev inaktiv i mer än 5 sekunder) – Ställ in på True när högtalaren inte är tillgänglig eller om hämtningen av enhetsströmmen överskrider tidsgränsen (ljud).
– Ange till False när talarförvärvet lyckas.
Hör inte ljud från deltagare som ringer via högtalare. Prova att kontrollera talarenhetens tillstånd.
microphoneBusy Mikrofonen används redan. Antingen används enheten i exklusivt läge eller så används enheten i delat läge och anroparen uppmanas att använda enheten i exklusivt läge. – Ange till True när hämtningen av mikrofonenhetens ström överskrider tidsgränsen (ljud).
– Ställ in på False när mikrofonförvärvet lyckas.
Ljudet når inte andra deltagare i samtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren så att de kan kontrollera om ett annat program använder mikrofonen och försöka stänga den.

Åtkomst till diagnostik

Användarinriktad diagnostik är en utökad funktion i kärn-API Call :et och gör att du kan diagnostisera ett aktivt anrop.

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

Användarriktade diagnostikhändelser

  • Implementera ombuden för media och network diagnostiska källor. MediaDiagnosticsDelegate respektive NetworkDiagnosticsDelegate .
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...
  }
}
  • Håll en referens till media och network diagnostik och ange ombudsobjekt för att lyssna på händelser.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Kommentar

Om du har CallKit aktiverat via SDK eller implementerat CallKit-integrering i ditt program kan rapportering av ljudavstängningstillstånd till CallKit leda till att operativsystemet släpper spärren till mikrofonen på grund av sekretessskäl som gör didIsSpeakingWhileMicrophoneIsMuted att händelsen inte fungerar som förväntat eftersom vi inte kan samla in indata från mikrofonenheten för att identifiera att användaren talar.

Hämta den senaste användarinriktade diagnostiken

  • Hämta de senaste diagnostikvärdena som har genererats. Om vi fortfarande inte fick något värde för diagnostiken nil eller .unknown returneras.
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.

Diagnostikvärden

Följande användarinriktade diagnostik är tillgänglig:

Nätverksvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
networkUnavailable Det finns inget tillgängligt nätverk. – Ange till True när ett anrop inte kan starta eftersom det inte finns något tillgängligt nätverk.
- Ange till False när det finns ICE-kandidater närvarande.
Enheten är inte ansluten till ett nätverk. Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Nätverksoptimering .
networkRelaysUnreachable Problem med ett nätverk. – Ange till True när nätverket har vissa begränsningar som inte tillåter att du når Azure Communication Services-reläer.
- Ställ in False på när du ringer ett nytt samtal.
Under ett samtal när WiFi-signalen går på och av. Se till att brandväggsregler och nätverksroutning tillåter att klienten når Microsofts vändservrar. Mer information finns i avsnittet Brandväggskonfiguration .
networkReconnectionQuality Anslutningen gick förlorad och vi återansluter till nätverket. – Ange tillBad när nätverket är frånkopplat
– Ange till Poornär medietransportanslutningen går förlorad
– Ange till Good när en ny session är ansluten.
Låg bandbredd, inget Internet Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd.
networkReceiveQuality En indikator för inkommande strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att ta emot strömmen.
– Ange till Poor när det är ett milt problem med att ta emot strömmen.
– Ange till Good när det inte är några problem med att ta emot strömmen.
- Det är bara synligt om det finns ett aktivt ljudflöde i samtalet, vilket innebär att en deltagare aktivt talar under en viss tidsperiod.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå att slutanvändaren stänger av kameran för att spara tillgänglig internetbandbredd.
networkSendQuality En indikator för utgående strömkvalitet. – Ange tillBad när det finns ett allvarligt problem med att skicka strömmen.
– Ange till Poor när det är ett milt problem med att skicka strömmen.
– Ange till Good när det inte är några problem med att skicka strömmen.
- Liknar att få kvalitetsdiagnostik är det bara synligt om det finns ett aktivt ljudflöde i samtalet, vilket innebär att en deltagare talar aktivt under en viss tidsperiod. Men det fungerar bara i ett 1:1-anrop eftersom det förlitar sig på information från den andra sidan för att verifiera kvaliteten. Där den andra sidan måste signalera de data som togs emot.
Låg bandbredd Se till att samtalet har en tillförlitlig Internetanslutning som kan upprätthålla ett röstsamtal. Mer information finns i avsnittet Krav på nätverksbandbredd. Föreslå också att slutanvändaren stänger av kameran för att spara tillgänglig Internetbandbredd.

Ljudvärden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
noSpeakerDevicesAvailable Det finns ingen ljudutdataenhet (högtalare) i användarens system. – Ange till True när det inte finns några högtalarenheter i systemet och talarval stöds.
– Ange till False när det finns minst en högtalarenhet i systemet, och val av talare stöds.
Alla högtalare är urkopplade När värdet är inställt på Truekan du ge slutanvändaren ett visuellt meddelande om att deras aktuella samtalssession inte har några tillgängliga talare.
speakingWhileMicrophoneIsMuted Talar medan du är på mute. – Ställ in på True när den lokala mikrofonen är avstängd och den lokala användaren talar.
– Ställ in på False när den lokala användaren antingen slutar tala eller avaktiverar mikrofonen.
– Den här diagnostikhändelsen kan inaktiveras automatiskt om den utlöses under en viss tid utan någon användaråtgärd för att undvika brus och ge en bättre användarupplevelse. Den aktiveras igen när en ny mute-åtgärd inträffar.
Under ett samtal stänger du av mikrofonen och talar in i den. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att de kanske pratar och inte inser att deras ljud är avstängt.
noMicrophoneDevicesAvailable Inga ljudinspelningsenheter (mikrofon) i användarens system – Ställ in på True när det inte finns några mikrofonenheter i systemet.
– Ange till False när det finns minst en mikrofonenhet i systemet.
Alla mikrofoner kopplas från under samtalet. När värdet är inställt på att överväga att True ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession inte har någon mikrofon. Mer information finns i avsnittet aktivera mikrofon från enhetshanteraren .
microphoneNotFunctioning Mikrofonen fungerar inte. – Ange till True när vi inte kan börja skicka lokal ljudström eftersom mikrofonenheten kan ha inaktiverats i systemet eller används av en annan process. Det tar cirka 10 sekunder för den här UFD:n att höjas.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen igen.
Inga mikrofoner tillgängliga, mikrofonåtkomst inaktiverad i ett system När värdet är inställt på att True ge ett visuellt meddelande till slutanvändaren om att det är problem med mikrofonen.
mikrofonMuteUnexpectedly Mikrofonen är avstängd – Ställ in på True när mikrofonen oväntat går in i ett avstängt tillstånd.
– Ställ in på False när mikrofonen börjar skicka ljudströmmen
Mikrofonen är avstängd från systemet. De flesta fall inträffar när användaren är på ett Azure Communication Services-samtal på en mobil enhet och ett telefonsamtal kommer in. I de flesta fall stänger operativsystemet av Azure Communication Services-samtalet så att en användare kan svara på telefonsamtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras samtal har stängts av eftersom ett telefonsamtal kom in. Mer information finns i hur du bäst hanterar operativsystemets muting för ett Azure Communication Services-anropsavsnitt för mer information.
microphonePermissionDenied det finns låg volym från enheten eller det är nästan tyst på macOS. – Ange till True när ljudbehörighet nekas från systeminställningarna (ljud).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS.
Mikrofonbehörigheter är inaktiverade i Inställningar. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda mikrofon för ett Azure Communication Services-anrop.

Kamera värden

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
cameraFrozen Kamera slutar producera ramar i mer än 5 sekunder. – Ange till True när den lokala videoströmmen är låst. Den här diagnostiken innebär att fjärrsidan ser videon frusen på skärmen eller att fjärrdeltagarna inte återger videon på skärmen.
– Ställ in på False när frysningen slutar och användarna kan se videon som vanligt.
Den Kamera gick förlorad under samtalet eller dåligt nätverk fick kameran att frysa. När värdet är inställt på kan du överväga att Truemeddela slutanvändaren om att fjärrdeltagarnas nätverk kan vara dåligt , vilket möjligen tyder på att de stänger av kameran för att spara bandbredd. Mer information finns i avsnittet Krav på nätverksbandbredd om nödvändiga Internetfunktioner för ett Azure Communication Services-anrop.
cameraStartFailed Allmänt kamerafel. – Ange till True när vi inte kan börja skicka lokal video eftersom kameraenheten kan ha inaktiverats i systemet eller används av en annan process~.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta.
cameraStartTimedOut Vanligt scenario där kameran är i dåligt tillstånd. – Ställ in på True när kamerans enhet överskrider tidsgränsen för att börja skicka videoström.
– Ange till False när den valda kameraenheten skickar lokal video igen.
Kamera fel När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).
cameraPermissionDenied Kamera behörigheter nekades i inställningarna. – Ange till True när kamerabehörighet nekas från systeminställningarna (video).
– Ställ in False på vid lyckat stream-förvärv.
Obs! Den här diagnostiken fungerar bara på macOS Chrome.
Kamera behörigheter är inaktiverade i inställningarna. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att de inte har aktiverat behörighet att använda kameran för ett Azure Communication Services-anrop.
cameraStoppedUnexpectedly Kamera fel – Ställ in på True när kameran oväntat kommer in i stoppat tillstånd.
– Ställ in på False när kameran börjar skicka videoströmmen igen.
Kontrollera att kameran fungerar korrekt. När värdet är inställt på Trueger du slutanvändaren ett visuellt meddelande om att deras kamera eventuellt har problem. (När värdet anges tillbaka för att False ta bort meddelande).

Endast inbyggt

Name beskrivning Möjliga värden Användningsfall Åtgärdssteg
speakerVolumeIsZero Noll volym på en enhet (högtalare). – Ange till True när talarvolymen är noll.
– Ange till False när talarvolymen inte är noll.
Hör inte ljud från jourdeltagare. När värdet är inställt Truepå kan du av misstag ha volymen på lägsta (noll).
speakerMuted Talarenheten är avstängd. – Ange till True när högtalarenheten är avstängd.
– Ange till False när talarenheten inte är avstängd.
Hör inte ljud från jourdeltagare. När värdet är inställt på Truekan du av misstag ha stängt av högtalaren.
speakerBusy Högtalaren används redan. Antingen används enheten i exklusivt läge eller så används enheten i delat läge och anroparen uppmanas att använda enheten i exklusivt läge. – Ange till True när hämtningen av talarenhetens enhetsström överskrider tidsgränsen (ljud).
– Ange till False när talarförvärvet lyckas.
Hör inte ljud från deltagare som ringer via högtalare. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren så att de kan kontrollera om ett annat program använder talaren och försöka stänga det.
speakerNotFunctioning Högtalaren fungerar inte (det gick inte att initiera ljudenhetsklienten eller enheten blev inaktiv i mer än 5 sekunder) – Ställ in på True när högtalaren inte är tillgänglig eller om hämtningen av enhetsströmmen överskrider tidsgränsen (ljud).
– Ange till False när talarförvärvet lyckas.
Hör inte ljud från deltagare som ringer via högtalare. Prova att kontrollera talarenhetens tillstånd.
microphoneBusy Mikrofonen används redan. Antingen används enheten i exklusivt läge eller så används enheten i delat läge och anroparen uppmanas att använda enheten i exklusivt läge. – Ange till True när hämtningen av mikrofonenhetens ström överskrider tidsgränsen (ljud).
– Ställ in på False när mikrofonförvärvet lyckas.
Ljudet når inte andra deltagare i samtalet. När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren så att de kan kontrollera om ett annat program använder mikrofonen och försöka stänga den.

Åtkomst till diagnostik

Användarinriktad diagnostik är en utökad funktion i kärn-API Call :et och gör att du kan diagnostisera ett aktivt anrop.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Användarriktade diagnostikhändelser

  • Implementera lyssnare för diagnostikhändelser.
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
  • Ange händelsemetoder för att lyssna på händelser.
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 ... 

Hämta den senaste användarinriktade diagnostiken

  • Hämta de senaste diagnostikvärdena som har genererats i det aktuella anropet. Om vi fortfarande inte fick något värde för diagnostiken null eller .unknown för returneras.
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.