Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 User Facing Diagnostics (UFD) som du kan använda för att undersöka olika egenskaper för ett anrop för att fastställa problemet.
Användarinriktad diagnostik är händelser som indikerar ett underliggande problem, till exempel dålig nätverkskvalitet eller om en användare har mikrofonen avstängd. UFD:erna kan orsaka att en användare har en dålig upplevelse. Efter en användarfokuserad diagnos kan du överväga att ge feedback till slutanvändaren om den bakomliggande orsaken. 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.
Lokal diagnostik jämfört med fjärranvändarinriktad diagnostik
Användarinriktad diagnostik (UFD) aktiveras för att exponera användarpåverkande händelser som händer på en användare som anropar enheten via ett programmatiskt API. I Azure Communication Services finns det två metoder för att använda och generera UFD:er: lokala UFD:er och fjärranslutna UFD:er. Lokala UFD:er genereras i den lokala användarens telefonwebbläsare eller skrivbordswebbläsare. Fjärr-UFD:er är händelser som inträffar i en fjärrdeltagares miljö, vilket gör det möjligt för en lokal användare att använda och visa de fjärranvändare som påverkar händelser lokalt.
Kommentar
Version 1.38.1 och senare versioner i allmän tillgänglighet, samt version 1.34.1-beta.2 av anropande SDK, stöder sändning av fjärr-UFD:er från WebJS-anropande SDK. Lokala UFD:er som genereras av den anropande SDK:n är allmänt tillgängliga (GA).
Med användarinriktad diagnostik (UFD) kan du se när lokala eller fjärranslutna deltagare har problem som påverkar ljud-videosamtalskvaliteten. UFD tillhandahåller realtidsdiagnostik för nätverksförhållanden, enhetsfunktioner och medieprestanda. Den här diagnostikinformationen hjälper utvecklare att identifiera problem som dålig anslutning, avstängda mikrofoner eller låg bandbredd. Även om UFD:er inte löser dessa problem automatiskt, gör det möjligt för program att erbjuda proaktiv feedback till användare, vilket tyder på lösningar som att kontrollera sin Internetanslutning eller justera enhetsinställningarna. Baserat på dessa data kan användarna antingen korrigera problemet själva (till exempel stänga av video när nätverket är svagt) eller visa informationen via användargränssnittet.
Det finns några mindre skillnader i användning av fjärranslutna UFD:er och lokala UFD:er. Dessa skillnader är:
- Den anropande SDK:n skickar inte alla fjärranslutna UFD:er som är tillgängliga från en lokal UFD.
- Den anropande SDK:n exponerar och strömmar endast fjärranslutna UFD:er upp till högst 20 deltagare i samtalet. När antalet deltagare överstiger 20 begränsar vi och avslutar överföringen av fjärr-UFD:er för att förhindra att nätverket överbelastas med dessa händelser.
- Anropande SDK filtrerar så att du bara ser tre (3) fjärranslutna UFD-händelser per minut som kommer från en unik klient.
- Från klient-SDK-perspektivet måste du aktivera funktionerna för att de lokala UFD:erna ska kunna skickas via fjärranslutning.
Diagnostikvärden
Följande användarinriktade diagnostik är tillgänglig:
Nätverksvärden
| Namn | beskrivning | Möjliga värden | Plats | Användningsfall | Mildrande åtgärder |
|---|---|---|---|---|---|
| ingen nätverk | 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. |
Lokal Fjärrkontroll / På distans |
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 . |
| nätverksreläerinte nåbara | 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. |
Lokal | När man är i ett aktivt samtal och WiFi-signalen kommer och går. | Se till att brandväggsregler och nätverksdirigering tillåter att klienten når Microsofts TURN-servrar. Mer information finns i avsnittet Brandväggskonfiguration . |
| Återanslutning till nätverk | Anslutningen gick förlorad och klienten återansluter till nätverket. | – Ställ in påBad 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. |
Lokal Fjärrkontroll / På distans |
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. |
| nätverksmottagningskvalitet | En indikator för inkommande strömkvalitet. | – Ange till Bad 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. |
Lokal Fjärrkontroll / På distans |
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. |
| nätverkssändningskvalitet | En indikator för utgående strömkvalitet. | – Ange till Bad när det finns ett allvarligt problem med att skicka flödet. – Ange till Poor när det är ett milt problem med att skicka strömmen. – Ställ in till Good när det inte är några problem med att skicka strömmar. |
Lokal Fjärrkontroll / På distans |
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. |
| serveranslutning | Den visar om en fjärrdeltagare oväntat har kopplat från anropet på grund av att servern förlorade anslutningen till klienten. | – Ange till Bad när det finns ett allvarligt problem med att skicka flödet. – Sätt till Good när det inte är några problem med att skicka ström. |
Fjärrkontroll / På distans | Ingen internetanslutning mellan klient- och serverinfrastruktur | 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. |
Ljudvärden
| Namn | beskrivning | Möjliga värden | Plats | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|---|
| inga högtalarenheter listade | 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. |
Lokal | 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. |
| talar medan mikrofonen är avstängd | Tala medan du är på ljudlös. | – 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. Ljudvärdet "speakingWhileMicrophoneIsMuted" är inte tillgängligt som en fjärr-UFD. |
Lokal | Under ett samtal stänger du av mikrofonen och talar in i den. | När värdet är inställt på att True ge ett visuellt meddelande till slutanvändaren om att de kanske pratar och inte inser att deras ljud är avstängt. |
| ingaMikrofonenheterEnumererade | 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. |
Lokal | Alla mikrofoner kopplas från under samtalet. | När värdet är inställt på True, överväg att ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession saknar mikrofon. Mer information finns i avsnittet Aktivera mikrofon från enhetshanteraren . |
| mikrofon fungerar inte | Mikrofonen fungerar inte. | – Ange till True när vi inte kan börja skicka lokal ljudström eftersom mikrofonenheten är inaktiverad 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. |
Lokal Fjärrkontroll / På distans |
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. |
| mikrofonstängs oväntat | 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 |
Lokal Fjärrkontroll / På distans |
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 om hur du hanterar ljudavstängning finns i avsnittet om att stänga av ett Azure Communication Services-anrop för mer information. |
| mikrofonbehörighetNekad | 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 när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS. |
Lokal | Mikrofonbehö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 mikrofon för ett Azure Communication Services-anrop. |
Kameravärden
| Namn | beskrivning | Möjliga värden | Plats | Användningsfall | Åtgärdssteg |
|---|---|---|---|---|---|
| cameraFreeze | Kameran slutar producera bilder under mer än 5 sekunder. | – Ange till True när den lokala videoströmmen är fryst. 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. |
Lokal Fjärrkontroll / På distans |
Kameran förlorades 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. Föreslå att användaren 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. |
| kamerastartMisslyckades | Allmänt kamerafel. | – Ange till True när vi inte kan börja skicka lokal video eftersom kameraenheten kan vara inaktiverad i systemet eller används av en annan process. – Ställ in till False när den valda kameraenheten återigen skickar lokal video. |
Lokal Fjärrkontroll / På distans |
Kameraproblem | När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta. |
| kamerastart tidsavbrott | Vanligt scenario där kameran är i dåligt tillstånd. | – Ställ in på True när tiden för kamerans enhet löper ut för att börja skicka en videoström. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Lokal Fjärrkontroll / På distans |
Kameraproblem | 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 ställs tillbaka till False tas aviseringen bort). |
| KamerabehörighetNekad | Kamerabehörigheter nekades i inställningarna. | – Ange till True när kamerabehörighet nekas från systeminställningarna (video). – Ställ in False vid lyckad stream-uppkoppling. Obs! Den här diagnostiken fungerar bara på macOS Chrome. |
Lokal | Kamerabehö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. |
| kameran stoppades oväntat | Kamerafunktionsfel | – Ställ in på True när kameran oväntat går in i ett stoppat tillstånd. – Ställ in på False när kameran börjar skicka videoströmmen igen. |
Lokal Fjärrkontroll / På distans |
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 ställs tillbaka ska False ta bort meddelandet). |
Diverse värden
| Namn | beskrivning | Möjliga värden | Plats | Användningsfall | Åtgärdssteg |
|---|---|---|---|---|---|
| skärmdelningInspelningInaktiverad | Delning av systemskärm nekades från inställningarna i Inställningar. | Ange True när behörighet för skärmdelning nekas i systeminställningarna. – Ställ in False när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS.Chrome. |
Lokal Fjärrkontroll / På distans |
Skärminspelning är inaktiverat 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. |
| inspelningStartMisslyckades | Det gick inte att dela systemskärmen. | – Ange till True när vi misslyckas med att börja spela in skärmen. – Ange till False när fånga skärmen kan starta framgångsrikt. |
Lokal Fjärrkontroll / På distans |
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). |
|
| inspelaren stoppade oväntat | Fel vid systemskärmsdelning | – Ange till True när skärminspelaren oväntat går in i stoppat läge. – Ange till False när skärminspelaren börjar spela in igen. |
Lokal Fjärrkontroll / På distans |
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 till False ta bort avisering). |
Åtkomst till diagnostik
Användarinriktad diagnostik är en utökad funktion i kärn-API Call :et. Du kan förstå mer om UserFacingDiagnosticsFeature gränssnittet här.
Här är en omfattande trädstruktur som mappar ut UserFacingDiagnosticsFeature gränssnittet tillsammans med dess relaterade beroenden, egenskaper och metoder. Varje diagnostikmodul (Nätverk, Media, Fjärr) har händelselyssnare för ändringar och ger den senaste diagnostiska ögonblicksbilden.
UserFacingDiagnosticsFeature (Interface)
├── Inherits: CallFeature
├── Properties
│ ├── network: NetworkDiagnostics
│ ├── media: MediaDiagnostics
│ └── remote: RemoteDiagnostics
│
├── Dependencies
│ ├── NetworkDiagnostics
│ │ ├── Methods
│ │ │ ├── getLatest(): LatestNetworkDiagnostics
│ │ │ ├── on('diagnosticChanged', listener): void
│ │ │ └── off('diagnosticChanged', listener): void
│ │ └── Types
│ │ ├── NetworkDiagnosticChangedEventArgs
│ │ │ ├── value: DiagnosticQuality | DiagnosticFlag
│ │ │ ├── valueType: DiagnosticValueType
│ │ │ └── diagnostic: NetworkDiagnosticType
│ │ ├── NetworkDiagnosticType = keyof LatestNetworkDiagnostics
│ │ └── LatestNetworkDiagnostics
│ │ ├── networkReconnect?: LatestDiagnosticValue
│ │ ├── networkReceiveQuality?: LatestDiagnosticValue
│ │ ├── networkSendQuality?: LatestDiagnosticValue
│ │ ├── noNetwork?: LatestDiagnosticValue
│ │ └── networkRelaysNotReachable?: LatestDiagnosticValue
│ │
│ ├── MediaDiagnostics
│ │ ├── Methods
│ │ │ ├── getLatest(): LatestMediaDiagnostics
│ │ │ ├── on('diagnosticChanged', listener): void
│ │ │ └── off('diagnosticChanged', listener): void
│ │ └── Types
│ │ ├── MediaDiagnosticChangedEventArgs
│ │ │ ├── value: DiagnosticQuality | DiagnosticFlag
│ │ │ ├── valueType: DiagnosticValueType
│ │ │ └── diagnostic: MediaDiagnosticType
│ │ ├── MediaDiagnosticType = keyof LatestMediaDiagnostics
│ │ └── LatestMediaDiagnostics
│ │ ├── speakingWhileMicrophoneIsMuted?: LatestDiagnosticValue
│ │ ├── noSpeakerDevicesEnumerated?: LatestDiagnosticValue
│ │ ├── noMicrophoneDevicesEnumerated?: LatestDiagnosticValue
│ │ ├── cameraFreeze?: LatestDiagnosticValue
│ │ ├── cameraStartFailed?: LatestDiagnosticValue
│ │ ├── cameraStartTimedOut?: LatestDiagnosticValue
│ │ ├── capturerStartFailed?: LatestDiagnosticValue
│ │ ├── microphoneNotFunctioning?: LatestDiagnosticValue
│ │ ├── microphoneMuteUnexpectedly?: LatestDiagnosticValue
│ │ ├── cameraStoppedUnexpectedly?: LatestDiagnosticValue
│ │ ├── capturerStoppedUnexpectedly?: LatestDiagnosticValue
│ │ ├── screenshareRecordingDisabled?: LatestDiagnosticValue
│ │ ├── microphonePermissionDenied?: LatestDiagnosticValue
│ │ └── cameraPermissionDenied?: LatestDiagnosticValue
│ │
│ └── RemoteDiagnostics
│ ├── Properties
│ │ └── isSendingDiagnosticsEnabled: boolean
│ ├── Methods
│ │ ├── startSendingDiagnostics(): void
│ │ ├── stopSendingDiagnostics(): void
│ │ ├── getLatest(): RemoteParticipantDiagnosticsData
│ │ ├── on('diagnosticChanged', listener): void
│ │ └── off('diagnosticChanged', listener): void
│ └── Types
│ ├── RemoteParticipantDiagnosticsData
│ │ └── diagnostics: RemoteDiagnostic[]
│ └── RemoteDiagnostic
│ ├── participantId: string
│ ├── rawId: string
│ ├── remoteParticipant?: RemoteParticipant
│ ├── diagnostic: NetworkDiagnosticType | MediaDiagnosticType | ServerDiagnosticType
│ ├── value: DiagnosticQuality | DiagnosticFlag
│ └── valueType: DiagnosticValueType
│ └── ServerDiagnosticType = 'serverConnection'
För att använda användarinriktad diagnostik måste du först instansiera funktionen för användarinriktad diagnostik från anropet.
const userFacingDiagnostics = call.feature(Features.UserFacingDiagnostics);
När du har initierat den användarinriktade diagnostikfunktionen, lägg sedan till händelselyssnare för den lokala nätverks-UFD:ns "diagnosticChanged"-händelse och händelselyssnare för den lokala media-UFD:ns "diagnosticChanged"-händelse. Händelselyssnaren anropas när en lokal UFD aktiveras. I händelselyssnaren kan du komma åt den utlösta UFD:ns data, till exempel dess namn (diagnosticInfo.diagnostic), dess värde (diagnosticInfo.value) och dess värdetyp (diagnosticInfo.valueType).
Diagnostikhändelser för lokal användare
Varje diagnostik har följande data:
- Diagnostik är den typ av UFD-diagnostik som utlöses på den lokala datorn. Till exempel en UFD för
NetworkSendQualityellerDeviceSpeakWhileMuted. - värdet är
DiagnosticQualityellerDiagnosticFlag - DiagnosticQuality = enum { 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);
Åtkomst till diagnostikhändelser för fjärranvändare
Om du vill överföra fjärr-UFD:er till alla deltagare i ett anrop måste du aktivera funktionen från varje klient. Du kan aktivera eller inaktivera den här funktionen per klient. När klienten har aktiverats börjar den överföra sina lokala UFD:er via fjärranslutning till alla deltagare för användning och bearbetning. Om antalet deltagare överstiger 20 stoppas överföringen av fjärr-UFD:er från den lokala klienten. Det här måttet implementeras för att förhindra överdriven förbrukning av nätverksbandbredd på grund av UFD-trafik.
// Start the local client to send its local UFD to all remote participants (send local UFD to remote clients).
userFacingDiagnostics.remote.startSendingDiagnostics();
// Stop sending local UFDs to remote clients.
userFacingDiagnostics.remote.stopSendingDiagnostics();
För kodexemplet nedan RemoteParticipantDiagnosticsData har följande data associerade med sig:
-
diagnosticinnehåller en matris med diagnostik-UFD som utlöses från en fjärrdator. Till exempel en UFD förNetworkSendQuality. - Värdet för elementet är:
DiagnosticQualityellerDiagnosticFlag: - DiagnosticQuality = enum { Good = 1, Poor = 2, Bad = 3 }.
- DiagnosticFlag =
true|false - valueType för matrisen =
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 remote user-facing diagnostic changes.
userFacingDiagnostics.remote.on('diagnosticChanged', remoteDiagnosticChangedListener);
Observera att alla fjärranslutna UFD:er klassificeras under "userFacingDiagnostics.remote".
Hämta den senaste användarfokuserade diagnostikhändelsen som mottogs
Här är exempelkoden för att generera det senaste lokala UFD-värdet som genereras av den anropande SDK:n. Om en diagnostik är odefinierad innebär det att UFD inte har utlöstts.
const latestNetworkDiagnostics = userFacingDiagnostics.network.getLatest();
console.log(
`noNetwork: ${latestNetworkDiagnostics.noNetwork.value}, ` +
`value type = ${latestNetworkDiagnostics.noNetwork.valueType}`
);
console.log(
`networkRelaysNotReachable: ${latestNetworkDiagnostics.networkRelaysNotReachable.value}, ` +
`value type = ${latestNetworkDiagnostics.networkRelaysNotReachable.valueType}`
);
console.log(
`networkReconnect: ${latestNetworkDiagnostics.networkReconnect.value}, ` +
`value type = ${latestNetworkDiagnostics.networkReconnect.valueType}`
);
console.log(
`networkReceiveQuality: ${latestNetworkDiagnostics.networkReceiveQuality.value}, ` +
`value type = ${latestNetworkDiagnostics.networkReceiveQuality.valueType}`
);
console.log(
`networkSendQuality: ${latestNetworkDiagnostics.networkSendQuality.value}, ` +
`value type = ${latestNetworkDiagnostics.networkSendQuality.valueType}`
);
const latestMediaDiagnostics = userFacingDiagnostics.media.getLatest();
console.log(
`noSpeakerDevicesEnumerated: ${latestMediaDiagnostics.noSpeakerDevicesEnumerated.value}, ` +
`value type = ${latestMediaDiagnostics.noSpeakerDevicesEnumerated.valueType}`
);
console.log(
`speakingWhileMicrophoneIsMuted: ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.value}, ` +
`value type = ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.valueType}`
);
console.log(
`noMicrophoneDevicesEnumerated: ${latestMediaDiagnostics.noMicrophoneDevicesEnumerated.value}, ` +
`value type = ${latestMediaDiagnostics.noMicrophoneDevicesEnumerated.valueType}`
);
console.log(
`microphoneNotFunctioning: ${latestMediaDiagnostics.microphoneNotFunctioning.value}, ` +
`value type = ${latestMediaDiagnostics.microphoneNotFunctioning.valueType}`
);
console.log(
`microphoneMuteUnexpectedly: ${latestMediaDiagnostics.microphoneMuteUnexpectedly.value}, ` +
`value type = ${latestMediaDiagnostics.microphoneMuteUnexpectedly.valueType}`
);
console.log(
`microphonePermissionDenied: ${latestMediaDiagnostics.microphonePermissionDenied.value}, ` +
`value type = ${latestMediaDiagnostics.microphonePermissionDenied.valueType}`
);
console.log(
`cameraFreeze: ${latestMediaDiagnostics.cameraFreeze.value}, ` +
`value type = ${latestMediaDiagnostics.cameraFreeze.valueType}`
);
console.log(
`cameraStartFailed: ${latestMediaDiagnostics.cameraStartFailed.value}, ` +
`value type = ${latestMediaDiagnostics.cameraStartFailed.valueType}`
);
console.log(
`cameraStartTimedOut: ${latestMediaDiagnostics.cameraStartTimedOut.value}, ` +
`value type = ${latestMediaDiagnostics.cameraStartTimedOut.valueType}`
);
console.log(
`cameraPermissionDenied: ${latestMediaDiagnostics.cameraPermissionDenied.value}, ` +
`value type = ${latestMediaDiagnostics.cameraPermissionDenied.valueType}`
);
console.log(
`cameraStoppedUnexpectedly: ${latestMediaDiagnostics.cameraStoppedUnexpectedly.value}, ` +
`value type = ${latestMediaDiagnostics.cameraStoppedUnexpectedly.valueType}`
);
Här är exempelkoden för att generera det senaste fjärr-UFD-värdet som levereras till den anropande SDK:n. Om en diagnostik är odefinierad innebär det att UFD inte har hämtats från fjärrklientens SDK.
const latestRemoteDiagnostics = userFacingDiagnostics.remote.getLatest();
for (const diagnostic of latestRemoteDiagnostics.diagnostics) {
console.error(`Remote participant ${diagnostic.participantId} diagnostic: ${diagnostic.diagnostic} = ${diagnostic.value}`);
}
Diagnostikvärden
Följande användarinriktade diagnostik är tillgänglig:
Nätverksvärden
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg |
|---|---|---|---|---|
| nätverk otillgängligt | 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 . |
| nätverksreläer otillgängliga | 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ätverksdirigering tillåter att klienten når Microsofts TURN-servrar. Mer information finns i avsnittet Brandväggskonfiguration . |
| nätverksåteranslutningskvalitet | Anslutningen gick förlorad och vi återansluter till nätverket. | – Ställ in påBad 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. |
| nätverksmottagningskvalitet | 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. |
| nätverkssändningskvalitet | En indikator för utgående strömkvalitet. | – Ange tillBad när det har uppstått ett allvarligt problem med att skicka dataströmmen. – Ange till Poor när det är ett milt problem med att skicka strömmen. – Sätt till Good när det inte är några problem med att skicka ström. - 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
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| inga högtalarenheter tillgängliga | 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. |
| talar medan mikrofonen är avstängd | Tala medan du är på ljudlös. | – 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å True bör du överväga att ge slutanvändaren en visuell notifikation om att de kanske pratar utan att inse att deras ljud är avstängt. |
| Inga mikrofonenheter tillgängliga | 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å True, överväg att ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession saknar mikrofon. Mer information finns i avsnittet Aktivera mikrofon från enhetshanteraren . |
| mikrofon fungerar inte | 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. |
| mikrofonstängs oväntat | 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 avsnittet bästa sätt att hantera operativsystemets muting vid ett Azure Communication Services-anrop. |
| mikrofonbehörighetNekad | 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 när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS. |
Mikrofonbehö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 mikrofon för ett Azure Communication Services-anrop. |
Kameravärden
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| kameran har frusit | Kameran slutar producera bilder under mer än 5 sekunder. | – Ange till True när den lokala videoströmmen är fryst. 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. |
Kameran förlorades 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. |
| kamerastartMisslyckades | 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~. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Kameraproblem | När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta. |
| kamerastart tidsavbrott | Vanligt scenario där kameran är i dåligt tillstånd. | – Ställ in på True när tiden för kamerans enhet löper ut för att börja skicka en videoström. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Kameraproblem | 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 till False ta bort avisering). |
| KamerabehörighetNekad | Kamerabehörigheter nekades i inställningarna. | – Ange till True när kamerabehörighet nekas från systeminställningarna (video). – Ställ in False när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS Chrome. |
Kamerabehö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. |
| kameran stoppades oväntat | Kamerafunktionsfel | – Ställ in på True när kameran oväntat går in i ett 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 till False ta bort avisering). |
Endast inhemsk
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg |
|---|---|---|---|---|
| högtalarvolymenÄrNoll | Noll volym på en enhet (högtalare). | – Ange till True när talarvolymen är noll. – Ställ in till False när volymen för högtalaren inte är noll. |
Hör inget ljud från deltagare i samtalet. | När värdet är inställt Truepå kan du av misstag ha volymen på lägsta (noll). |
| Högtalaren avstängd | Talarenheten är avstängd. | – Ange till True när högtalarenheten är avstängd. – Ställ in till False när högtalarenheten inte är avstängd. |
Jag hör inte ljud från deltagare i samtalet. | När värdet är inställt på Truekan du av misstag ha stängt av högtalaren. |
| högtalaren är upptagen | 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. | – Ställ in på True när tillgången till talar-enhetens ström går ut (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. |
| högtalareFungerarInte | 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 det tar för lång tid att hämta ljudströmmen från enheten. – Ställ in på False när högtalarhämtningen lyckas. |
Hör inte ljud från deltagare som ringer via högtalare. | Prova att kontrollera talarenhetens tillstånd. |
| mikrofonUpptagen | 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 mikrofonanslutningen 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 har fått 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
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| nätverk otillgängligt | 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 . |
| nätverksreläer otillgängliga | 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ätverksdirigering tillåter att klienten når Microsofts TURN-servrar. Mer information finns i avsnittet Brandväggskonfiguration . |
| nätverksåteranslutningskvalitet | Anslutningen gick förlorad och vi återansluter till nätverket. | – Ställ in påBad 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. |
| nätverksmottagningskvalitet | 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. |
| nätverkssändningskvalitet | En indikator för utgående strömkvalitet. | – Ange tillBad när det har uppstått ett allvarligt problem med att skicka dataströmmen. – Ange till Poor när det är ett milt problem med att skicka strömmen. – Sätt till Good när det inte är några problem med att skicka ström. - 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
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| inga högtalarenheter tillgängliga | 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. |
| talar medan mikrofonen är avstängd | Tala medan du är på ljudlös. | – 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å True bör du överväga att ge slutanvändaren en visuell notifikation om att de kanske pratar utan att inse att deras ljud är avstängt. |
| Inga mikrofonenheter tillgängliga | 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å True, överväg att ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession saknar mikrofon. Mer information finns i avsnittet Aktivera mikrofon från enhetshanteraren . |
| mikrofon fungerar inte | 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. |
| mikrofonstängs oväntat | 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 avsnittet bästa sätt att hantera operativsystemets muting vid ett Azure Communication Services-anrop. |
| mikrofonbehörighetNekad | 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 när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS. |
Mikrofonbehö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 mikrofon för ett Azure Communication Services-anrop. |
Kameravärden
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| kameran har frusit | Kameran slutar producera bilder under mer än 5 sekunder. | – Ange till True när den lokala videoströmmen är fryst. 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. |
Kameran förlorades 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. |
| kamerastartMisslyckades | 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~. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Kameraproblem | När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta. |
| kamerastart tidsavbrott | Vanligt scenario där kameran är i dåligt tillstånd. | – Ställ in på True när tiden för kamerans enhet löper ut för att börja skicka en videoström. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Kameraproblem | 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 till False ta bort avisering). |
| KamerabehörighetNekad | Kamerabehörigheter nekades i inställningarna. | – Ange till True när kamerabehörighet nekas från systeminställningarna (video). – Ställ in False när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS Chrome. |
Kamerabehö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. |
| kameran stoppades oväntat | Kamerafunktionsfel | – Ställ in på True när kameran oväntat går in i ett 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 till False ta bort avisering). |
Endast inhemsk
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg |
|---|---|---|---|---|
| högtalarvolymenÄrNoll | Noll volym på en enhet (högtalare). | – Ange till True när talarvolymen är noll. – Ställ in till False när volymen för högtalaren inte är noll. |
Jag hör inte ljud från deltagare i samtalet. | När värdet är inställt Truepå kan du av misstag ha volymen på lägsta (noll). |
| Högtalaren avstängd | Talarenheten är avstängd. | – Ange till True när högtalarenheten är avstängd. – Ställ in till False när högtalarenheten inte är avstängd. |
Jag hör inte ljud från deltagare i samtalet. | När värdet är inställt på Truekan du av misstag ha stängt av högtalaren. |
| högtalaren är upptagen | 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. | – Ställ in på True när tillgången till talar-enhetens ström går ut (ljud). – Ställ in på False när högtalarhämtningen 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. |
| högtalareFungerarInte | 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 det tar för lång tid att hämta ljudströmmen från enheten. – Ställ in på False när högtalarhämtningen lyckas. |
Hör inte ljud från deltagare som ringer via högtalare. | Prova att kontrollera talarenhetens tillstånd. |
| mikrofonUpptagen | 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 mikrofonanslutningen 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 delegeringar för
mediaochnetworkdiagnostikkällor.MediaDiagnosticsDelegaterespektiveNetworkDiagnosticsDelegate.
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
mediaochnetworkdiagnostik och sätt delegeringsobjekt 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
nileller.unknownreturneras.
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
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| nätverk otillgängligt | 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 . |
| nätverksreläer otillgängliga | 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ätverksdirigering tillåter att klienten når Microsofts TURN-servrar. Mer information finns i avsnittet Brandväggskonfiguration . |
| nätverksåteranslutningskvalitet | Anslutningen gick förlorad och vi återansluter till nätverket. | – Ställ in påBad 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. |
| nätverksmottagningskvalitet | 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. |
| nätverkssändningskvalitet | En indikator för utgående strömkvalitet. | – Ange tillBad när det har uppstått ett allvarligt problem med att skicka dataströmmen. – Ange till Poor när det är ett milt problem med att skicka strömmen. – Sätt till Good när det inte är några problem med att skicka ström. - 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
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| inga högtalarenheter tillgängliga | 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. |
| talar medan mikrofonen är avstängd | Tala medan du är på ljudlös. | – 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å True bör du överväga att ge slutanvändaren en visuell notifikation om att de kanske pratar utan att inse att deras ljud är avstängt. |
| Inga mikrofonenheter tillgängliga | 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å True, överväg att ge ett visuellt meddelande till slutanvändaren om att deras aktuella samtalssession saknar mikrofon. Mer information finns i avsnittet Aktivera mikrofon från enhetshanteraren . |
| mikrofon fungerar inte | 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. |
| mikrofonstängs oväntat | 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 avsnittet bästa sätt att hantera operativsystemets muting vid ett Azure Communication Services-anrop. |
| mikrofonbehörighetNekad | 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 när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS. |
Mikrofonbehö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 mikrofon för ett Azure Communication Services-anrop. |
Kameravärden
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg för riskminimering |
|---|---|---|---|---|
| kameran har frusit | Kameran slutar producera bilder under mer än 5 sekunder. | – Ange till True när den lokala videoströmmen är fryst. 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. |
Kameran förlorades 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. |
| kamerastartMisslyckades | 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~. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Kameraproblem | När värdet är inställt på Trueger du ett visuellt meddelande till slutanvändaren om att deras kamera inte kunde starta. |
| kamerastart tidsavbrott | Vanligt scenario där kameran är i dåligt tillstånd. | – Ställ in på True när tiden för kamerans enhet löper ut för att börja skicka en videoström. – Ställ in till False när den valda kameranheten återigen skickar lokal video. |
Kameraproblem | 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 till False ta bort avisering). |
| KamerabehörighetNekad | Kamerabehörigheter nekades i inställningarna. | – Ange till True när kamerabehörighet nekas från systeminställningarna (video). – Ställ in False när strömningen har förvärvats framgångsrikt. Obs! Den här diagnostiken fungerar bara på macOS Chrome. |
Kamerabehö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. |
| kameran stoppades oväntat | Kamerafunktionsfel | – Ställ in på True när kameran oväntat går in i ett 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 till False ta bort avisering). |
Endast inhemsk
| Namn | beskrivning | Möjliga värden | Användningsfall | Åtgärdssteg |
|---|---|---|---|---|
| högtalarvolymenÄrNoll | Noll volym på en enhet (högtalare). | – Ange till True när talarvolymen är noll. – Ställ in till False när volymen för högtalaren inte är noll. |
Jag hör inte ljud från deltagare i samtalet. | När värdet är inställt Truepå kan du av misstag ha volymen på lägsta (noll). |
| Högtalaren avstängd | Talarenheten är avstängd. | – Ange till True när högtalarenheten är avstängd. – Ställ in till False när högtalarenheten inte är avstängd. |
Jag hör inte ljud från deltagare i samtalet. | När värdet är inställt på Truekan du av misstag ha stängt av högtalaren. |
| högtalaren är upptagen | 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. | – Ställ in på True när tillgången till talar-enhetens ström går ut (ljud). – Ställ in på False när högtalarhämtningen 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. |
| högtalareFungerarInte | 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 det tar för lång tid att hämta ljudströmmen från enheten. – Ställ in på False när högtalarhämtningen lyckas. |
Hör inte ljud från deltagare som ringer via högtalare. | Prova att kontrollera talarenhetens tillstånd. |
| mikrofonUpptagen | 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 mikrofonanslutningen 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 diagnostikvärdet, returneras
nulleller.unknown.
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.