Diagnostika zobrazená uživateli

Při práci s voláními ve službách Azure Communication Services můžete narazit na problémy, které mají vliv na vaše zákazníky. K tomu poskytuje služba Azure Communication Services funkci nazvanou "Diagnostika s přístupem k uživatelům" (UFD), která se dá použít k prozkoumání různých vlastností volání, aby bylo možné zjistit, co může být problém. Diagnostika zobrazená uživateli jsou události, které se aktivují, které můžou znamenat nějaký základní problém (špatná síť, uživatel má ztlumený mikrofon), které může mít uživatel špatný zážitek. Po spuštění diagnostiky s uživateli byste měli zvážit poskytnutí zpětné vazby koncovému uživateli, že může mít nějaký základní problém. Výstup diagnostiky pro uživatele je ale pouze informativní a volající zásobník neprovádí žádné změny na základě aktivované diagnostiky uživatele.

Diagnostické hodnoty

K dispozici jsou následující uživatelsky přístupné diagnostiky:

Hodnoty sítě

Název Popis Možné hodnoty Případy použití Postup zmírnění
noNetwork Není k dispozici žádná síť. – Nastaví se na True , když se volání nepodaří spustit, protože není k dispozici žádná síť.
- Nastaví se, False když jsou přítomni kandidáti ICE.
Zařízení není připojené k síti. Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Optimalizace sítě.
networkRelaysNotReachable Problémy se sítí – Nastavte, True když má síť určité omezení, které neumožňuje přístup k předávací službě Azure Communication Services.
- Nastavte na False nový hovor.
Během hovoru, když se signál Wi-Fi zapne a vypne. Ujistěte se, že pravidla brány firewall a síťové směrování umožňují klientům přístup k serverům Microsoftu. Další informace najdete v části Konfigurace brány firewall.
networkReconnect Připojení bylo ztraceno a znovu se připojujeme k síti. – Nastavte,Bad když je síť odpojená.
- Nastaví se na, když dojde ke Poorztrátě připojení přenosu médií.
– Nastaví se na Good , když je připojena nová relace.
Nízká šířka pásma, bez internetu Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě.
networkReceiveQuality Indikátor kvality příchozího datového proudu. - Nastavte, když dojde kBad závažnému problému s příjmem datového proudu.
- Nastaví se, Poor když dojde k mírnému problému s příjmem datového proudu.
– Nastaví se na Good , když není žádný problém s příjmem datového proudu.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Navrhněte, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.
networkSendQuality Indikátor kvality odchozího datového proudu. – Nastaví se na, když dojde kBad závažnému problému s odesíláním datového proudu.
- Nastaví se, když dojde k Poor mírnému problému s odesíláním datového proudu.
– Nastavte na Good , když není žádný problém s odesíláním datového proudu.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Také doporučujeme, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.

Hodnoty zvuku

Název Popis Možné hodnoty Případy použití Postup zmírnění
noSpeakerDevicesEnumerated v systému uživatele není žádné zvukové výstupní zařízení (reproduktor). – Nastavte, True když v systému nejsou žádná zařízení mluvčího a je podporován výběr mluvčího.
– Nastavte na False , když je v systému zařízení s nejméně jedním reproduktorem a je podporován výběr mluvčího.
Všechny reproduktory jsou odpojené Pokud je nastavená Truehodnota , zvažte, že koncovému uživateli poskytnete vizuální oznámení, že jejich aktuální relace volání nemá k dispozici žádné reproduktory.
mluvení ZatímcoMicrophoneIsMuted Když mluvíte na ztlumení. - Nastaví se, True když je místní mikrofon ztlumený a místní uživatel mluví.
– Nastaví se na False , když místní uživatel přestane mluvit, nebo zruší ztlumení mikrofonu.
* Poznámka: V současné době není tato možnost v Safari podporovaná, protože vzorky na úrovni zvuku pocházejí ze statistik WebRTC.
Během hovoru ztlumte mikrofon a mluvte do něj. Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že by mohl mluvit, a neuvědomuje si, že je zvuk ztlumený.
noMicrophoneDevicesEnumerated V systému uživatele nejsou žádná zařízení pro zachytávání zvuku (mikrofon). - Nastavte, True pokud v systému nejsou žádná mikrofonní zařízení.
- Nastavte, False když je v systému aspoň jedno mikrofonní zařízení.
Během hovoru se odpojí všechny mikrofony. Pokud je hodnota nastavená tak, aby True se koncovým uživatelům zobrazilo oznámení o tom, že jeho aktuální relace volání nemá mikrofon. Další informace najdete v části Povolení mikrofonu v části Správce zařízení .
microphoneNotFunctioning Mikrofon nefunguje. - Nastavte, True když se nám nepodaří spustit odesílání místního zvukového streamu, protože mikrofonní zařízení mohlo být v systému zakázané nebo je používán jiným procesem. Tento UFD trvá asi 10 sekund, než se zvýší.
- Nastavte, když False mikrofon začne úspěšně odesílat zvukový stream znovu.
V systému nejsou dostupné žádné mikrofony, zakázaný přístup k mikrofonu Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že došlo k potížím s mikrofonem.
mikrofonMuteUnexpectedly Mikrofon je ztlumený - Nastaví se na True , když mikrofon neočekávaně přejde do ztlumeného stavu.
- Nastavit na False kdy mikrofon začne úspěšně odesílat zvukový stream
Mikrofon je ztlumený ze systému. Většina případů nastane, když je uživatel na volání služby Azure Communication Services na mobilním zařízení a telefonát přijde. Ve většině případů operační systém ztlumí volání služby Azure Communication Services, aby uživatel mohl přijmout telefonní hovor. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jeho hovor byl ztlumený, protože telefonní hovor přišel. Další informace najdete v tématu o tom, jak nejlépe zpracovat ztlumení operačního systému v části volání služby Azure Communication Services, kde najdete další podrobnosti.
mikrofonPermissionDenied zařízení má malý objem nebo je v systému macOS téměř tichý. - Nastavte, když True je oprávnění ke zvuku odepřeno z nastavení systému (zvuk).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v systému macOS.
Oprávnění mikrofonu jsou v Nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat mikrofon pro volání služby Azure Communication Services.

Kamera hodnoty

Název Popis Možné hodnoty Případy použití Postup zmírnění
cameraFreeze Kamera zastaví vytváření snímků po dobu delší než 5 sekund. - Nastaví se, True když se místní video stream zablokuje. Tato diagnostika znamená, že na vzdálené straně se vaše video zablokuje na obrazovce, nebo to znamená, že vzdálení účastníci video na obrazovce nevykreslují.
- Nastaví se na False to, kdy skončí ukotvení a uživatelé uvidí vaše video podle normálního nastavení.
Během hovoru nebo špatné sítě došlo ke ztrátě Kamera způsobila zablokování kamery. Pokud je hodnota nastavená na Truehodnotu , zvažte poskytnutí oznámení koncovému uživateli, že síť vzdálených účastníků může být špatná – možná navrhne, aby vypnul kameru, aby ušetřil šířku pásma. Další informace najdete v části Požadavky na šířku pásma sítě potřebné pro možnosti internetu pro volání služby Azure Communication Services.
cameraStartFailed Obecná chyba kamery. - Nastavte na True , když se nám nedaří spustit odesílání místního videa, protože zařízení fotoaparátu mohlo být v systému zakázané nebo je používáno jiným procesem~.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že se jeho kamera nespuskla.
cameraStartTimedOut Běžný scénář, kdy je kamera ve špatném stavu - Nastavte, True kdy vyprší časový limit zařízení fotoaparátu, aby se začal posílat video stream.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).
kameraPermissionDenied Kamera oprávnění byla v nastavení odepřena. - Nastavte, když True je oprávnění kamery odepřeno z nastavení systému (video).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v macOS Chrome.
Kamera oprávnění jsou v nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat kameru pro volání služby Azure Communication Services.
cameraStoppedUnexpectedly selhání Kamera - Nastavte, True když fotoaparát vstoupí do stavu zastavený neočekávaně.
- Nastavte, False když fotoaparát začne úspěšně odesílat video stream znovu.
Zkontrolujte, jestli fotoaparát funguje správně. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).

Misc values

Název Popis Možné hodnoty Případy použití Kroky pro zmírnění rizika
screenshareRecordingDisabled Sdílení obrazovky systému bylo zamítnuto z předvoleb v Nastavení. - Nastavte na, když je oprávnění ke True sdílení obrazovky odepřeno z nastavení systému (sdílení).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v macOS.Chrome.
Nahrávání obrazovky je v Nastavení zakázané. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění ke sdílení obrazovky pro volání služby Azure Communication Services.
capturerStartFailed Sdílení systémové obrazovky se nezdařilo. - Nastavíme, True když se nám nepodaří začít zachytávat obrazovku.
- Nastavení při False zachytávání obrazovky se může úspěšně spustit.
Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že mohlo dojít k potížím se sdílením obrazovky. (Pokud je hodnota nastavená zpět, Falseodeberte oznámení).
capturerStoppedUnexpectedly Selhání sdílení obrazovky systému – Nastaví se na True , když zachytávání obrazovky neočekávaně přejde do zastaveného stavu.
– Nastavte na False to, kdy se zachytávání obrazovky znovu spustí.
Kontrola správného fungování sdílení obrazovky Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že se pravděpodobně problém, který způsobí zastavení sdílení obrazovky. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).

Přístup k diagnostice

Uživatelská diagnostika je rozšířená funkce základního Call rozhraní API a umožňuje diagnostikovat aktivní volání.

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

Diagnostické události uživatelů

  • Přihlaste se k odběru diagnosticChanged události, která se má monitorovat, když se změní jakákoli diagnostická změna uživatelů.
/**
 *  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);

Získání nejnovější diagnostiky pro uživatele

  • Získejte nejnovější diagnostické hodnoty, které byly vyvolány. Pokud je diagnostika nedefinovaná, je to proto, že nebyla nikdy vyvolána.
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}`
);

Diagnostické hodnoty

K dispozici jsou následující uživatelsky přístupné diagnostiky:

Hodnoty sítě

Název Popis Možné hodnoty Případy použití Postup zmírnění
networkUnavailable Není k dispozici žádná síť. – Nastaví se na True , když se volání nepodaří spustit, protože není k dispozici žádná síť.
- Nastaví se, False když jsou přítomni kandidáti ICE.
Zařízení není připojené k síti. Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Optimalizace sítě.
networkRelaysUnreachable Problémy se sítí – Nastavte, True když má síť určité omezení, které neumožňuje přístup k předávací službě Azure Communication Services.
- Nastavte na False nový hovor.
Během hovoru, když se signál Wi-Fi zapne a vypne. Ujistěte se, že pravidla brány firewall a síťové směrování umožňují klientům přístup k serverům Microsoftu. Další informace najdete v části Konfigurace brány firewall.
networkReconnectionQuality Připojení se ztratilo a znovu se připojujeme k síti. – Nastavte,Bad když je síť odpojená.
- Nastaví se na, když dojde ke Poorztrátě připojení přenosu médií.
– Nastaví se na Good , když je připojena nová relace.
Nízká šířka pásma, bez internetu Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě.
networkReceiveQuality Indikátor kvality příchozího datového proudu. - Nastavte, když dojde kBad závažnému problému s příjmem datového proudu.
- Nastaví se, Poor když dojde k mírnému problému s příjmem datového proudu.
– Nastaví se na Good , když není žádný problém s příjmem datového proudu.
- Je vidět jenom v případě, že je v hovoru aktivní zvukový tok, což znamená, že účastník aktivně mluví po dobu.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Navrhněte, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.
networkSendQuality Indikátor kvality odchozího datového proudu. – Nastaví se na, když dojde kBad závažnému problému s odesíláním datového proudu.
- Nastaví se, když dojde k Poor mírnému problému s odesíláním datového proudu.
– Nastavte na Good , když není žádný problém s odesíláním datového proudu.
- Podobně jako při příjmu diagnostiky kvality je vidět pouze v případě, že je v hovoru aktivní zvukový tok, což znamená, že účastník aktivně mluví po dobu. Ale funguje pouze při volání 1:1, protože spoléhá na informace z druhé strany, aby ověřil kvalitu. Kde druhá strana musí signalizovat přijatá data.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Také doporučujeme, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.

Hodnoty zvuku

Název Popis Možné hodnoty Případy použití Postup zmírnění
noSpeakerDevicesAvailable v systému uživatele není žádné zvukové výstupní zařízení (reproduktor). – Nastavte, True když v systému nejsou žádná zařízení mluvčího a je podporován výběr mluvčího.
– Nastavte na False , když je v systému zařízení s nejméně jedním reproduktorem a je podporován výběr mluvčího.
Všechny reproduktory jsou odpojené Pokud je nastavená Truehodnota , zvažte, že koncovému uživateli poskytnete vizuální oznámení, že jejich aktuální relace volání nemá k dispozici žádné reproduktory.
mluvení ZatímcoMicrophoneIsMuted Když mluvíte na ztlumení. - Nastaví se, True když je místní mikrofon ztlumený a místní uživatel mluví.
– Nastaví se na False , když místní uživatel přestane mluvit, nebo zruší ztlumení mikrofonu.
– Tato diagnostická událost může být automaticky zakázána, pokud se aktivuje po určitou dobu bez jakékoli akce uživatele, aby nedocházelo k šumu a poskytovalo lepší uživatelské prostředí. Když dojde k nové akci ztlumení, znovu se povolí.
Během hovoru ztlumte mikrofon a mluvte do něj. Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že by mohl mluvit, a neuvědomuje si, že je zvuk ztlumený.
noMicrophoneDevicesAvailable V systému uživatele nejsou žádná zařízení pro zachytávání zvuku (mikrofon). - Nastavte, True pokud v systému nejsou žádná mikrofonní zařízení.
- Nastavte, False když je v systému aspoň jedno mikrofonní zařízení.
Během hovoru se odpojí všechny mikrofony. Pokud je hodnota nastavená tak, aby True se koncovým uživatelům zobrazilo oznámení o tom, že jeho aktuální relace volání nemá mikrofon. Další informace najdete v části Povolení mikrofonu v části Správce zařízení .
microphoneNotFunctioning Mikrofon nefunguje. - Nastavíme, True když se nám nepodaří spustit odesílání místního zvukového streamu, protože zařízení mikrofonu mohlo být v systému zakázané nebo je používáno jiným procesem. Tento UFD trvá asi 10 sekund, než se zvýší.
- Nastavte, když False mikrofon začne úspěšně odesílat zvukový stream znovu.
V systému nejsou dostupné žádné mikrofony, zakázaný přístup k mikrofonu Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že došlo k potížím s mikrofonem.
mikrofonMuteUnexpectedly Mikrofon je ztlumený - Nastaví se na True , když mikrofon neočekávaně přejde do ztlumeného stavu.
- Nastavit na False kdy mikrofon začne úspěšně odesílat zvukový stream
Mikrofon je ztlumený ze systému. Většina případů nastane, když je uživatel na volání služby Azure Communication Services na mobilním zařízení a telefonát přijde. Ve většině případů operační systém ztlumí volání služby Azure Communication Services, aby uživatel mohl přijmout telefonní hovor. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jeho hovor byl ztlumený, protože telefonní hovor přišel. Další informace najdete v tématu o tom, jak nejlépe zpracovat ztlumení operačního systému v části volání služby Azure Communication Services, kde najdete další podrobnosti.
mikrofonPermissionDenied zařízení má malý objem nebo je v systému macOS téměř tichý. - Nastavte, když True je oprávnění ke zvuku odepřeno z nastavení systému (zvuk).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v systému macOS.
Oprávnění mikrofonu jsou v Nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat mikrofon pro volání služby Azure Communication Services.

Kamera hodnoty

Název Popis Možné hodnoty Případy použití Postup zmírnění
kameraFrozen Kamera zastaví vytváření snímků po dobu delší než 5 sekund. - Nastaví se, True když se místní video stream zablokuje. Tato diagnostika znamená, že na vzdálené straně se vaše video zablokuje na obrazovce, nebo to znamená, že vzdálení účastníci nevykreslují vaše video na obrazovce.
- Nastaví se na False to, kdy skončí ukotvení a uživatelé uvidí vaše video podle normálního nastavení.
Během hovoru nebo špatné sítě došlo ke ztrátě Kamera způsobila zablokování kamery. Pokud je hodnota nastavená na Truehodnotu , zvažte poskytnutí oznámení koncovému uživateli, že síť vzdálených účastníků může být špatná – možná navrhne, aby vypnul kameru, aby ušetřil šířku pásma. Další informace najdete v části Požadavky na šířku pásma sítě potřebné pro možnosti internetu pro volání služby Azure Communication Services.
cameraStartFailed Obecná chyba kamery. - Nastavíme, True když se nám nepodaří spustit odesílání místního videa, protože zařízení fotoaparátu mohlo být v systému zakázané nebo je používáno jiným procesem~.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že se jeho kamera nespuskla.
cameraStartTimedOut Běžný scénář, kdy je kamera ve špatném stavu - Nastavte, True kdy vyprší časový limit zařízení fotoaparátu, aby se začal posílat video stream.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).
kameraPermissionDenied Kamera oprávnění byla v nastavení odepřena. - Nastavte, když True je oprávnění kamery odepřeno z nastavení systému (video).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v macOS Chrome.
Kamera oprávnění jsou v nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat kameru pro volání služby Azure Communication Services.
cameraStoppedUnexpectedly selhání Kamera - Nastavte, True když fotoaparát vstoupí do stavu zastavený neočekávaně.
- Nastavte, False když fotoaparát začne úspěšně odesílat video stream znovu.
Zkontrolujte, jestli fotoaparát funguje správně. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).

Pouze nativní

Název Popis Možné hodnoty Případy použití Kroky pro zmírnění rizika
speakerVolumeIsZero Nulový svazek na zařízení (reproduktor). - Nastaví se, True když je hlasitost reproduktoru nulová.
- Nastavte, False když hlasitost reproduktoru není nulová.
Neslyšící zvuk od účastníků při hovoru. Pokud je hodnota nastavená na True, je možné, že máte omylem svazek v nejnižší(nule).
speakerMuted Reproduktorové zařízení je ztlumené. - Nastaví se, True když je zařízení reproduktoru ztlumené.
– Nastavte, False když není zařízení reproduktoru ztlumené.
Neslyšící zvuk od účastníků při hovoru. Pokud je hodnota nastavena na True, je možné, že jste omylem ztlumili reproduktor.
speakerBusy Reproduktor se už používá. Buď se zařízení používá ve výhradním režimu, nebo se zařízení používá ve sdíleném režimu a volající požádal o použití zařízení ve výhradním režimu. – Nastaví se, True kdy vyprší časový limit získávání streamu streamu reproduktoru (zvuk).
- Nastavte, False kdy je získání mluvčího úspěšné.
Neslyší zvuk od účastníků při hovoru prostřednictvím mluvčího. Pokud je hodnota nastavená na Truehodnotu , poskytněte koncovému uživateli vizuální oznámení, aby mohli zkontrolovat, jestli mluvčí používá jinou aplikaci, a zkuste ji zavřít.
speakerNotFunctioning Reproduktor nefunguje (nepodařilo se inicializovat klienta zvukového zařízení nebo zařízení se stalo neaktivním po dobu delší než 5 sekund). – Nastavte, True když je reproduktor nedostupný nebo vyprší časový limit získávání datových proudů zařízení (zvuk).
- Nastavte, False kdy je získání mluvčího úspěšné.
Neslyší zvuk od účastníků při hovoru prostřednictvím mluvčího. Zkuste zkontrolovat stav zařízení reproduktoru.
microphoneBusy Mikrofon se už používá. Buď se zařízení používá ve výhradním režimu, nebo se zařízení používá ve sdíleném režimu a volající požádal o použití zařízení ve výhradním režimu. - Nastavte, kdy True vyprší časový limit získávání streamu mikrofonu (zvuk).
- Nastaví se na False úspěšné pořízení mikrofonu.
Váš zvuk se nepřipojeje k ostatním účastníkům hovoru. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, aby mohli zkontrolovat, jestli mikrofon používá jiná aplikace, a zkuste ji zavřít.

Přístup k diagnostice

Uživatelská diagnostika je rozšířená funkce základního Call rozhraní API a umožňuje diagnostikovat aktivní volání.

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

Diagnostické události uživatelů

  • Získejte objekt funkce a přidejte naslouchací procesy do diagnostických událostí.
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);

Získání nejnovější diagnostiky pro uživatele

  • Získejte nejnovější diagnostické hodnoty, které byly vyvolány v aktuálním volání. Pokud jsme stále nedostali hodnotu diagnostiky, vyvolá se výjimka.
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 ...

Diagnostické hodnoty

K dispozici jsou následující uživatelsky přístupné diagnostiky:

Hodnoty sítě

Název Popis Možné hodnoty Případy použití Postup zmírnění
networkUnavailable Není k dispozici žádná síť. – Nastaví se na True , když se volání nepodaří spustit, protože není k dispozici žádná síť.
- Nastaví se, False když jsou přítomni kandidáti ICE.
Zařízení není připojené k síti. Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Optimalizace sítě.
networkRelaysUnreachable Problémy se sítí – Nastavte, True když má síť určité omezení, které neumožňuje přístup k předávací službě Azure Communication Services.
- Nastavte na False nový hovor.
Během hovoru, když se signál Wi-Fi zapne a vypne. Ujistěte se, že pravidla brány firewall a síťové směrování umožňují klientům přístup k serverům Microsoftu. Další informace najdete v části Konfigurace brány firewall.
networkReconnectionQuality Připojení se ztratilo a znovu se připojujeme k síti. – Nastavte,Bad když je síť odpojená.
- Nastaví se na, když dojde ke Poorztrátě připojení přenosu médií.
– Nastaví se na Good , když je připojena nová relace.
Nízká šířka pásma, bez internetu Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě.
networkReceiveQuality Indikátor kvality příchozího datového proudu. - Nastavte, když dojde kBad závažnému problému s příjmem datového proudu.
- Nastaví se, Poor když dojde k mírnému problému s příjmem datového proudu.
– Nastaví se na Good , když není žádný problém s příjmem datového proudu.
- Je vidět jenom v případě, že je v hovoru aktivní zvukový tok, což znamená, že účastník aktivně mluví po dobu.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Navrhněte, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.
networkSendQuality Indikátor kvality odchozího datového proudu. – Nastaví se na, když dojde kBad závažnému problému s odesíláním datového proudu.
- Nastaví se, když dojde k Poor mírnému problému s odesíláním datového proudu.
– Nastavte na Good , když není žádný problém s odesíláním datového proudu.
- Podobně jako při příjmu diagnostiky kvality je vidět pouze v případě, že je v hovoru aktivní zvukový tok, což znamená, že účastník aktivně mluví po dobu. Ale funguje pouze při volání 1:1, protože spoléhá na informace z druhé strany, aby ověřil kvalitu. Kde druhá strana musí signalizovat přijatá data.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Také doporučujeme, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.

Hodnoty zvuku

Název Popis Možné hodnoty Případy použití Postup zmírnění
noSpeakerDevicesAvailable v systému uživatele není žádné zvukové výstupní zařízení (reproduktor). – Nastavte, True když v systému nejsou žádná zařízení mluvčího a je podporován výběr mluvčího.
– Nastavte na False , když je v systému zařízení s nejméně jedním reproduktorem a je podporován výběr mluvčího.
Všechny reproduktory jsou odpojené Pokud je nastavená Truehodnota , zvažte, že koncovému uživateli poskytnete vizuální oznámení, že jejich aktuální relace volání nemá k dispozici žádné reproduktory.
mluvení ZatímcoMicrophoneIsMuted Když mluvíte na ztlumení. - Nastaví se, True když je místní mikrofon ztlumený a místní uživatel mluví.
– Nastaví se na False , když místní uživatel přestane mluvit, nebo zruší ztlumení mikrofonu.
– Tato diagnostická událost může být automaticky zakázána, pokud se aktivuje po určitou dobu bez jakékoli akce uživatele, aby nedocházelo k šumu a poskytovalo lepší uživatelské prostředí. Když dojde k nové akci ztlumení, znovu se povolí.
Během hovoru ztlumte mikrofon a mluvte do něj. Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že by mohl mluvit, a neuvědomuje si, že je zvuk ztlumený.
noMicrophoneDevicesAvailable V systému uživatele nejsou žádná zařízení pro zachytávání zvuku (mikrofon). - Nastavte, True pokud v systému nejsou žádná mikrofonní zařízení.
- Nastavte, False když je v systému aspoň jedno mikrofonní zařízení.
Během hovoru se odpojí všechny mikrofony. Pokud je hodnota nastavená tak, aby True se koncovým uživatelům zobrazilo oznámení o tom, že jeho aktuální relace volání nemá mikrofon. Další informace najdete v části Povolení mikrofonu v části Správce zařízení .
microphoneNotFunctioning Mikrofon nefunguje. - Nastavíme, True když se nám nepodaří spustit odesílání místního zvukového streamu, protože zařízení mikrofonu mohlo být v systému zakázané nebo je používáno jiným procesem. Tento UFD trvá asi 10 sekund, než se zvýší.
- Nastavte, když False mikrofon začne úspěšně odesílat zvukový stream znovu.
V systému nejsou dostupné žádné mikrofony, zakázaný přístup k mikrofonu Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že došlo k potížím s mikrofonem.
mikrofonMuteUnexpectedly Mikrofon je ztlumený - Nastaví se na True , když mikrofon neočekávaně přejde do ztlumeného stavu.
- Nastavit na False kdy mikrofon začne úspěšně odesílat zvukový stream
Mikrofon je ztlumený ze systému. Většina případů nastane, když je uživatel na volání služby Azure Communication Services na mobilním zařízení a telefonát přijde. Ve většině případů operační systém ztlumí volání služby Azure Communication Services, aby uživatel mohl přijmout telefonní hovor. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jeho hovor byl ztlumený, protože telefonní hovor přišel. Další informace najdete v tématu o tom, jak nejlépe zpracovat ztlumení operačního systému v části volání služby Azure Communication Services, kde najdete další podrobnosti.
mikrofonPermissionDenied zařízení má malý objem nebo je v systému macOS téměř tichý. - Nastavte, když True je oprávnění ke zvuku odepřeno z nastavení systému (zvuk).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v systému macOS.
Oprávnění mikrofonu jsou v Nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat mikrofon pro volání služby Azure Communication Services.

Kamera hodnoty

Název Popis Možné hodnoty Případy použití Postup zmírnění
kameraFrozen Kamera zastaví vytváření snímků po dobu delší než 5 sekund. - Nastaví se, True když se místní video stream zablokuje. Tato diagnostika znamená, že na vzdálené straně se vaše video zablokuje na obrazovce, nebo to znamená, že vzdálení účastníci nevykreslují vaše video na obrazovce.
- Nastaví se na False to, kdy skončí ukotvení a uživatelé uvidí vaše video podle normálního nastavení.
Během hovoru nebo špatné sítě došlo ke ztrátě Kamera způsobila zablokování kamery. Pokud je hodnota nastavená na Truehodnotu , zvažte poskytnutí oznámení koncovému uživateli, že síť vzdálených účastníků může být špatná – možná navrhne, aby vypnul kameru, aby ušetřil šířku pásma. Další informace najdete v části Požadavky na šířku pásma sítě potřebné pro možnosti internetu pro volání služby Azure Communication Services.
cameraStartFailed Obecná chyba kamery. - Nastavíme, True když se nám nepodaří spustit odesílání místního videa, protože zařízení fotoaparátu mohlo být v systému zakázané nebo je používáno jiným procesem~.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že se jeho kamera nespuskla.
cameraStartTimedOut Běžný scénář, kdy je kamera ve špatném stavu - Nastavte, True kdy vyprší časový limit zařízení fotoaparátu, aby se začal posílat video stream.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).
kameraPermissionDenied Kamera oprávnění byla v nastavení odepřena. - Nastavte, když True je oprávnění kamery odepřeno z nastavení systému (video).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v macOS Chrome.
Kamera oprávnění jsou v nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat kameru pro volání služby Azure Communication Services.
cameraStoppedUnexpectedly selhání Kamera - Nastavte, True když fotoaparát vstoupí do stavu zastavený neočekávaně.
- Nastavte, False když fotoaparát začne úspěšně odesílat video stream znovu.
Zkontrolujte, jestli fotoaparát funguje správně. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).

Pouze nativní

Název Popis Možné hodnoty Případy použití Kroky pro zmírnění rizika
speakerVolumeIsZero Nulový svazek na zařízení (reproduktor). - Nastaví se, True když je hlasitost reproduktoru nulová.
- Nastavte, False když hlasitost reproduktoru není nulová.
Neslyšící zvuk od účastníků při hovoru. Pokud je hodnota nastavená na True, je možné, že máte omylem svazek v nejnižší(nule).
speakerMuted Reproduktorové zařízení je ztlumené. - Nastaví se, True když je zařízení reproduktoru ztlumené.
– Nastavte, False když není zařízení reproduktoru ztlumené.
Neslyšící zvuk od účastníků při hovoru. Pokud je hodnota nastavena na True, je možné, že jste omylem ztlumili reproduktor.
speakerBusy Reproduktor se už používá. Buď se zařízení používá ve výhradním režimu, nebo se zařízení používá ve sdíleném režimu a volající požádal o použití zařízení ve výhradním režimu. – Nastaví se, True kdy vyprší časový limit získávání streamu streamu reproduktoru (zvuk).
- Nastavte, False kdy je získání mluvčího úspěšné.
Neslyší zvuk od účastníků při hovoru prostřednictvím mluvčího. Pokud je hodnota nastavená na Truehodnotu , poskytněte koncovému uživateli vizuální oznámení, aby mohli zkontrolovat, jestli mluvčí používá jinou aplikaci, a zkuste ji zavřít.
speakerNotFunctioning Reproduktor nefunguje (nepodařilo se inicializovat klienta zvukového zařízení nebo zařízení se stalo neaktivním po dobu delší než 5 sekund). – Nastavte, True když je reproduktor nedostupný nebo vyprší časový limit získávání datových proudů zařízení (zvuk).
- Nastavte, False kdy je získání mluvčího úspěšné.
Neslyší zvuk od účastníků při hovoru prostřednictvím mluvčího. Zkuste zkontrolovat stav zařízení reproduktoru.
microphoneBusy Mikrofon se už používá. Buď se zařízení používá ve výhradním režimu, nebo se zařízení používá ve sdíleném režimu a volající požádal o použití zařízení ve výhradním režimu. - Nastavte, kdy True vyprší časový limit získávání streamu mikrofonu (zvuk).
- Nastaví se na False úspěšné pořízení mikrofonu.
Váš zvuk se nepřipojeje k ostatním účastníkům hovoru. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, aby mohli zkontrolovat, jestli mikrofon používá jiná aplikace, a zkuste ji zavřít.

Přístup k diagnostice

Uživatelská diagnostika je rozšířená funkce základního Call rozhraní API a umožňuje diagnostikovat aktivní volání.

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

Diagnostické události uživatelů

  • Implementujte delegáty pro media a network diagnostické zdroje. MediaDiagnosticsDelegate a NetworkDiagnosticsDelegate v uvedeném pořadí.
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...
  }
}
  • Udržte odkaz na media objekt delegáta a network diagnostiku a nastavte objekt delegáta pro naslouchání událostem.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Poznámka:

Pokud jste povolili CallKit integraci Sady CallKit pomocí sady SDK nebo implementovali integraci CallKitu, může hlášení stavu ztlumení do CallKitu vést k tomu, že aplikace uvolní podržení mikrofonu z důvodu ochrany osobních údajů, což by způsobilo didIsSpeakingWhileMicrophoneIsMuted , že událost nefunguje podle očekávání, protože nemůžeme zachytit vstup z mikrofonního zařízení a zjistit, že uživatel mluví.

Získání nejnovější diagnostiky pro uživatele

  • Získejte nejnovější diagnostické hodnoty, které byly vyvolány. Pokud jsme stále neobdrželi hodnotu diagnostiky nebo nil.unknown je vrácena.
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.

Diagnostické hodnoty

K dispozici jsou následující uživatelsky přístupné diagnostiky:

Hodnoty sítě

Název Popis Možné hodnoty Případy použití Postup zmírnění
networkUnavailable Není k dispozici žádná síť. – Nastaví se na True , když se volání nepodaří spustit, protože není k dispozici žádná síť.
- Nastaví se, False když jsou přítomni kandidáti ICE.
Zařízení není připojené k síti. Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Optimalizace sítě.
networkRelaysUnreachable Problémy se sítí – Nastavte, True když má síť určité omezení, které neumožňuje přístup k předávací službě Azure Communication Services.
- Nastavte na False nový hovor.
Během hovoru, když se signál Wi-Fi zapne a vypne. Ujistěte se, že pravidla brány firewall a síťové směrování umožňují klientům přístup k serverům Microsoftu. Další informace najdete v části Konfigurace brány firewall.
networkReconnectionQuality Připojení se ztratilo a znovu se připojujeme k síti. – Nastavte,Bad když je síť odpojená.
- Nastaví se na, když dojde ke Poorztrátě připojení přenosu médií.
– Nastaví se na Good , když je připojena nová relace.
Nízká šířka pásma, bez internetu Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě.
networkReceiveQuality Indikátor kvality příchozího datového proudu. - Nastavte, když dojde kBad závažnému problému s příjmem datového proudu.
- Nastaví se, Poor když dojde k mírnému problému s příjmem datového proudu.
– Nastaví se na Good , když není žádný problém s příjmem datového proudu.
- Je vidět jenom v případě, že je v hovoru aktivní zvukový tok, což znamená, že účastník aktivně mluví po dobu.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Navrhněte, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.
networkSendQuality Indikátor kvality odchozího datového proudu. – Nastaví se na, když dojde kBad závažnému problému s odesíláním datového proudu.
- Nastaví se, když dojde k Poor mírnému problému s odesíláním datového proudu.
– Nastavte na Good , když není žádný problém s odesíláním datového proudu.
- Podobně jako při příjmu diagnostiky kvality je vidět pouze v případě, že je v hovoru aktivní zvukový tok, což znamená, že účastník aktivně mluví po dobu. Ale funguje pouze při volání 1:1, protože spoléhá na informace z druhé strany, aby ověřil kvalitu. Kde druhá strana musí signalizovat přijatá data.
Nízká šířka pásma Ujistěte se, že má hovor spolehlivé internetové připojení, které může udržovat hlasový hovor. Další informace najdete v části Požadavky na šířku pásma sítě. Také doporučujeme, aby koncový uživatel vypnul kameru, aby ušetřil dostupnou šířku pásma internetu.

Hodnoty zvuku

Název Popis Možné hodnoty Případy použití Postup zmírnění
noSpeakerDevicesAvailable v systému uživatele není žádné zvukové výstupní zařízení (reproduktor). – Nastavte, True když v systému nejsou žádná zařízení mluvčího a je podporován výběr mluvčího.
– Nastavte na False , když je v systému zařízení s nejméně jedním reproduktorem a je podporován výběr mluvčího.
Všechny reproduktory jsou odpojené Pokud je nastavená Truehodnota , zvažte, že koncovému uživateli poskytnete vizuální oznámení, že jejich aktuální relace volání nemá k dispozici žádné reproduktory.
mluvení ZatímcoMicrophoneIsMuted Když mluvíte na ztlumení. - Nastaví se, True když je místní mikrofon ztlumený a místní uživatel mluví.
– Nastaví se na False , když místní uživatel přestane mluvit, nebo zruší ztlumení mikrofonu.
– Tato diagnostická událost může být automaticky zakázána, pokud se aktivuje po určitou dobu bez jakékoli akce uživatele, aby nedocházelo k šumu a poskytovalo lepší uživatelské prostředí. Když dojde k nové akci ztlumení, znovu se povolí.
Během hovoru ztlumte mikrofon a mluvte do něj. Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že by mohl mluvit, a neuvědomuje si, že je zvuk ztlumený.
noMicrophoneDevicesAvailable V systému uživatele nejsou žádná zařízení pro zachytávání zvuku (mikrofon). - Nastavte, True pokud v systému nejsou žádná mikrofonní zařízení.
- Nastavte, False když je v systému aspoň jedno mikrofonní zařízení.
Během hovoru se odpojí všechny mikrofony. Pokud je hodnota nastavená tak, aby True se koncovým uživatelům zobrazilo oznámení o tom, že jeho aktuální relace volání nemá mikrofon. Další informace najdete v části Povolení mikrofonu v části Správce zařízení .
microphoneNotFunctioning Mikrofon nefunguje. - Nastavíme, True když se nám nepodaří spustit odesílání místního zvukového streamu, protože zařízení mikrofonu mohlo být v systému zakázané nebo je používáno jiným procesem. Tento UFD trvá asi 10 sekund, než se zvýší.
- Nastavte, když False mikrofon začne úspěšně odesílat zvukový stream znovu.
V systému nejsou dostupné žádné mikrofony, zakázaný přístup k mikrofonu Pokud je hodnota nastavená tak, aby True koncovému uživateli poskytla vizuální oznámení, že došlo k potížím s mikrofonem.
mikrofonMuteUnexpectedly Mikrofon je ztlumený - Nastaví se na True , když mikrofon neočekávaně přejde do ztlumeného stavu.
- Nastavit na False kdy mikrofon začne úspěšně odesílat zvukový stream
Mikrofon je ztlumený ze systému. Většina případů nastane, když je uživatel na volání služby Azure Communication Services na mobilním zařízení a telefonát přijde. Ve většině případů operační systém ztlumí volání služby Azure Communication Services, aby uživatel mohl přijmout telefonní hovor. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jeho hovor byl ztlumený, protože telefonní hovor přišel. Další informace najdete v tématu o tom, jak nejlépe zpracovat ztlumení operačního systému v části volání služby Azure Communication Services, kde najdete další podrobnosti.
mikrofonPermissionDenied zařízení má malý objem nebo je v systému macOS téměř tichý. - Nastavte, když True je oprávnění ke zvuku odepřeno z nastavení systému (zvuk).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v systému macOS.
Oprávnění mikrofonu jsou v Nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat mikrofon pro volání služby Azure Communication Services.

Kamera hodnoty

Název Popis Možné hodnoty Případy použití Postup zmírnění
kameraFrozen Kamera zastaví vytváření snímků po dobu delší než 5 sekund. - Nastaví se, True když se místní video stream zablokuje. Tato diagnostika znamená, že na vzdálené straně se vaše video zablokuje na obrazovce, nebo to znamená, že vzdálení účastníci nevykreslují vaše video na obrazovce.
- Nastaví se na False to, kdy skončí ukotvení a uživatelé uvidí vaše video podle normálního nastavení.
Během hovoru nebo špatné sítě došlo ke ztrátě Kamera způsobila zablokování kamery. Pokud je hodnota nastavená na Truehodnotu , zvažte poskytnutí oznámení koncovému uživateli, že síť vzdálených účastníků může být špatná – možná navrhne, aby vypnul kameru, aby ušetřil šířku pásma. Další informace najdete v části Požadavky na šířku pásma sítě potřebné pro možnosti internetu pro volání služby Azure Communication Services.
cameraStartFailed Obecná chyba kamery. - Nastavíme, True když se nám nepodaří spustit odesílání místního videa, protože zařízení fotoaparátu mohlo být v systému zakázané nebo je používáno jiným procesem~.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že se jeho kamera nespuskla.
cameraStartTimedOut Běžný scénář, kdy je kamera ve špatném stavu - Nastavte, True kdy vyprší časový limit zařízení fotoaparátu, aby se začal posílat video stream.
- Nastaví se na False , když vybrané zařízení fotoaparátu úspěšně odešle místní video znovu.
selhání Kamera Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).
kameraPermissionDenied Kamera oprávnění byla v nastavení odepřena. - Nastavte, když True je oprávnění kamery odepřeno z nastavení systému (video).
- Nastavte na False úspěšné získání datového proudu.
Poznámka: Tato diagnostika funguje jenom v macOS Chrome.
Kamera oprávnění jsou v nastavení zakázaná. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že nepovolil oprávnění používat kameru pro volání služby Azure Communication Services.
cameraStoppedUnexpectedly selhání Kamera - Nastavte, True když fotoaparát vstoupí do stavu zastavený neočekávaně.
- Nastavte, False když fotoaparát začne úspěšně odesílat video stream znovu.
Zkontrolujte, jestli fotoaparát funguje správně. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, že jejich kamera může mít problémy. (Pokud je hodnota nastavena zpět pro False odebrání oznámení).

Pouze nativní

Název Popis Možné hodnoty Případy použití Kroky pro zmírnění rizika
speakerVolumeIsZero Nulový svazek na zařízení (reproduktor). - Nastaví se, True když je hlasitost reproduktoru nulová.
- Nastavte, False když hlasitost reproduktoru není nulová.
Neslyšící zvuk od účastníků při hovoru. Pokud je hodnota nastavená na True, je možné, že máte omylem svazek v nejnižší(nule).
speakerMuted Reproduktorové zařízení je ztlumené. - Nastaví se, True když je zařízení reproduktoru ztlumené.
– Nastavte, False když není zařízení reproduktoru ztlumené.
Neslyšící zvuk od účastníků při hovoru. Pokud je hodnota nastavena na True, je možné, že jste omylem ztlumili reproduktor.
speakerBusy Reproduktor se už používá. Buď se zařízení používá ve výhradním režimu, nebo se zařízení používá ve sdíleném režimu a volající požádal o použití zařízení ve výhradním režimu. – Nastaví se, True kdy vyprší časový limit získávání streamu streamu reproduktoru (zvuk).
- Nastavte, False kdy je získání mluvčího úspěšné.
Neslyší zvuk od účastníků při hovoru prostřednictvím mluvčího. Pokud je hodnota nastavená na Truehodnotu , poskytněte koncovému uživateli vizuální oznámení, aby mohli zkontrolovat, jestli mluvčí používá jinou aplikaci, a zkuste ji zavřít.
speakerNotFunctioning Reproduktor nefunguje (nepodařilo se inicializovat klienta zvukového zařízení nebo zařízení se stalo neaktivním po dobu delší než 5 sekund). – Nastavte, True když je reproduktor nedostupný nebo vyprší časový limit získávání datových proudů zařízení (zvuk).
- Nastavte, False kdy je získání mluvčího úspěšné.
Neslyší zvuk od účastníků při hovoru prostřednictvím mluvčího. Zkuste zkontrolovat stav zařízení reproduktoru.
microphoneBusy Mikrofon se už používá. Buď se zařízení používá ve výhradním režimu, nebo se zařízení používá ve sdíleném režimu a volající požádal o použití zařízení ve výhradním režimu. - Nastavte, kdy True vyprší časový limit získávání streamu mikrofonu (zvuk).
- Nastaví se na False úspěšné pořízení mikrofonu.
Váš zvuk se nepřipojeje k ostatním účastníkům hovoru. Pokud je hodnota nastavená na True, poskytněte koncovému uživateli vizuální oznámení, aby mohli zkontrolovat, jestli mikrofon používá jiná aplikace, a zkuste ji zavřít.

Přístup k diagnostice

Uživatelská diagnostika je rozšířená funkce základního Call rozhraní API a umožňuje diagnostikovat aktivní volání.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Diagnostické události uživatelů

  • Implementujte naslouchací procesy pro diagnostické události.
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
  • Nastavte metody událostí pro naslouchání událostem.
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 ... 

Získání nejnovější diagnostiky pro uživatele

  • Získejte nejnovější diagnostické hodnoty, které byly vyvolány v aktuálním volání. Pokud jsme stále neobdrželi hodnotu diagnostiky null nebo .unknown je vrácena.
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.