Diagnostyka skierowana do użytkownika

Podczas pracy z wywołaniami w usługach Azure Communication Services mogą wystąpić problemy wpływające na klientów. W tym celu usługi Azure Communication Services udostępniają funkcję o nazwie "Diagnostyka skierowana do użytkowników" (UFD), która może służyć do badania różnych właściwości wywołania w celu określenia, jaki może być problem. Diagnostyka użytkownika to zdarzenia, które zostały wyzwolone, które mogą wskazywać z powodu problemu podstawowego (słaba sieć, użytkownik ma wyciszony mikrofon), które użytkownik może mieć słabe środowisko. Po uruchomieniu diagnostyki użytkownika należy rozważyć przekazanie opinii użytkownikowi końcowemu, że może mieć jakiś podstawowy problem. Jednak dane wyjściowe diagnostyki wyświetlanej przez użytkownika są tylko informacyjne, a stos wywołujący nie wprowadza żadnych zmian na podstawie wyzwalanej diagnostyki użytkownika.

Wartości diagnostyczne

Dostępna jest następująca diagnostyka dostępna dla użytkownika:

Wartości sieciowe

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
noNetwork Brak dostępnej sieci. — Ustaw wartość na True , gdy nie można uruchomić wywołania, ponieważ nie ma dostępnej sieci.
- Ustaw na False , gdy są obecni kandydaci ICE.
Urządzenie nie jest połączone z siecią. Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Optymalizacja sieci.
networkRelaysNotReachable Problemy z siecią. — ustaw wartość na True , gdy sieć ma pewne ograniczenia, które nie zezwalają na dostęp do przekaźników usług Azure Communication Services.
- Ustaw na False podczas tworzenia nowego połączenia.
Podczas połączenia, gdy sygnał sieci Wi-Fi jest włączony i wyłączony. Upewnij się, że reguły zapory i routing sieciowy umożliwiają klientowi dostęp do serwerów kolei firmy Microsoft. Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja zapory.
networkReconnect Połączenie zostało utracone i ponownie łączymy się z siecią. - Ustaw wartość naBad , gdy sieć jest odłączona
- Ustaw na Poorwartość , gdy zostanie utracona łączność transportowa multimediów
— ustaw wartość , gdy Good jest połączona nowa sesja.
Niska przepustowość, brak Internetu Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci.
networkReceiveQuality Wskaźnik dotyczący jakości strumienia przychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z odbieraniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z odbieraniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z odbieraniem strumienia.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Zasugeruj, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.
networkSendQuality Wskaźnik dotyczący jakości strumienia wychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z wysyłaniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z wysyłaniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z wysyłaniem strumienia.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Ponadto zaleca się, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.

Wartości audio

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
noSpeakerDevicesEnumerated w systemie użytkownika nie ma urządzenia wyjściowego audio (głośnika). - Ustaw na True wartość , jeśli w systemie nie ma żadnych urządzeń głośnikowych, a wybór osoby mówiącej jest obsługiwany.
— Ustaw wartość na False wartość , gdy w systemie znajduje się co najmniej jedno urządzenie mówiące, a wybór głośnika jest obsługiwany.
Wszystkie głośniki są odłączone Jeśli wartość jest ustawiona na True, rozważ przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma żadnych dostępnych głośników.
speakingWhileMicrophoneIsMuted Mówienie podczas wyciszenia. - Ustaw na True wartość , gdy mikrofon lokalny jest wyciszony, a użytkownik lokalny mówi.
— ustaw wartość , gdy False użytkownik lokalny przestaje mówić lub nie wycisza mikrofonu.
* Uwaga: obecnie ta opcja nie jest obsługiwana w przeglądarce Safari, ponieważ próbki na poziomie dźwięku są pobierane ze statystyk WebRTC.
Podczas połączenia wycisz mikrofon i porozmawiaj z nim. Gdy wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że może rozmawiać i nie zdają sobie sprawy, że ich dźwięk jest wyciszony.
noMicrophoneDevicesEnumerated Brak urządzeń przechwytywania audio (mikrofon) w systemie użytkownika — ustaw wartość , True jeśli w systemie nie ma żadnych urządzeń mikrofonowych.
— ustaw wartość , False gdy w systemie znajduje się co najmniej jedno urządzenie mikrofonowe.
Wszystkie mikrofony są odłączone podczas połączenia. Jeśli wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma mikrofonu. Aby uzyskać więcej informacji, zobacz włączanie mikrofonu w sekcji menedżerów urządzeń .
mikrofonNotFunctioning Mikrofon nie działa. - Ustaw na True wartość , gdy nie można rozpocząć wysyłania lokalnego strumienia audio, ponieważ urządzenie mikrofonu mogło zostać wyłączone w systemie lub jest używane przez inny proces. Ta UFD trwa około 10 sekund, aby się podnieść.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio ponownie.
Brak dostępnych mikrofonów, dostęp do mikrofonu wyłączony w systemie Gdy wartość ma True nadać użytkownikowi końcowemu powiadomienie wizualne, że występuje problem z mikrofonem.
mikrofonMuteUnexpectedly Mikrofon jest wyciszony - Ustaw wartość na True , gdy mikrofon nieoczekiwanie przechodzi w stan wyciszony.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio
Mikrofon jest wyciszony z systemu. Większość przypadków występuje, gdy użytkownik jest w połączeniu z usługami Azure Communication Services na urządzeniu przenośnym i przychodzi połączenie telefoniczne. W większości przypadków system operacyjny wycisza połączenie z usługami Azure Communication Services, aby użytkownik mógł odebrać połączenie telefoniczne. Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że połączenie zostało wyciszone, ponieważ nastąpiło połączenie telefoniczne. Aby uzyskać więcej informacji, zobacz, jak najlepiej obsługiwać wyciszenie systemu operacyjnego w sekcji wywołania usług Azure Communication Services, aby uzyskać więcej informacji.
mikrofonPermissionDenied jest mało woluminu z urządzenia lub prawie dyskretnie w systemie macOS. — ustaw wartość , gdy True uprawnienie audio zostanie odrzucone z ustawień systemowych (audio).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: Ta diagnostyka działa tylko w systemie macOS.
Uprawnienia mikrofonu są wyłączone w Ustawienia. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie zezwolił na używanie mikrofonu dla wywołania usług Azure Communication Services.

Aparat wartości

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
cameraFreeze Aparat zatrzymuje tworzenie ramek przez ponad 5 sekund. — ustaw wartość , gdy True lokalny strumień wideo jest zamrożony. Ta diagnostyka oznacza, że po stronie zdalnej widać wideo zamrożone na ich ekranie lub oznacza to, że uczestnicy zdalni nie renderują twojego filmu wideo na ich ekranie.
- Ustaw wartość na wartość False , gdy kończy się blokowanie, a użytkownicy mogą zobaczyć film wideo zgodnie z normą.
Aparat została utracona podczas połączenia lub złej sieci spowodowała zamrożenie kamery. Jeśli wartość jest ustawiona na Truewartość , rozważ powiadomienie użytkownika końcowego, że sieć uczestników zdalnych może być zła — prawdopodobnie sugeruje, że wyłączy aparat w celu oszczędzania przepustowości. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci na temat wymaganych możliwości internetowych dla wywołania usług Azure Communication Services.
cameraStartFailed Awaria aparatu ogólnego. - Ustaw na True wartość , gdy nie można rozpocząć wysyłania lokalnego wideo, ponieważ urządzenie aparatu mogło zostać wyłączone w systemie lub jest używane przez inny proces~.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie można uruchomić aparatu.
cameraStartTimedOut Typowy scenariusz, w którym aparat jest w złym stanie. — ustaw wartość , gdy True urządzenie aparatu jest limit czasu, aby rozpocząć wysyłanie strumienia wideo.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).
cameraPermissionDenied Aparat uprawnienia zostały odrzucone w ustawieniach. — ustaw wartość , gdy True uprawnienia aparatu są odrzucane z ustawień systemowych (wideo).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: ta diagnostyka działa tylko w przeglądarce macOS Chrome.
Aparat uprawnienia są wyłączone w ustawieniach. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania aparatu dla wywołania usług Azure Communication Services.
cameraStoppedUnexpectedly Aparat awaria - Ustaw wartość na True czas nieoczekiwanego zatrzymania aparatu.
- Ustaw wartość , gdy False aparat zacznie pomyślnie wysyłać strumień wideo ponownie.
Sprawdź, czy aparat działa prawidłowo. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).

Wartości misc

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki ograniczenia ryzyka
screenshareRecordingDisabled Udostępnianie ekranu systemowego zostało odrzucone z preferencji w Ustawienia. — Ustaw wartość na True wartość , gdy uprawnienie do udostępniania ekranu jest odrzucane z ustawień systemowych (udostępnianie).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: Ta diagnostyka działa tylko w systemie macOS.Chrome.
Nagrywanie ekranu jest wyłączone w Ustawienia. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie zezwolił na udostępnianie ekranu na potrzeby wywołania usług Azure Communication Services.
capturerStartFailed Udostępnianie ekranu systemowego nie powiodło się. — Ustaw wartość na True , gdy nie można rozpocząć przechwytywania ekranu.
- Ustaw wartość na False wartość podczas przechwytywania ekranu może rozpocząć się pomyślnie.
Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że prawdopodobnie wystąpił problem podczas udostępniania ekranu. (Gdy wartość jest ustawiona z powrotem na False, usuń powiadomienie).
capturerStoppedUnexpectedly Awaria udostępniania ekranu systemu — Ustaw wartość na True , gdy program przechwytywania ekranu nieoczekiwanie przechodzi w stan zatrzymania.
- Ustaw wartość na False , gdy program przechwytywania ekranu zacznie pomyślnie przechwytywać ponownie.
Sprawdzanie, czy udostępnianie ekranu działa prawidłowo Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że prawdopodobnie wystąpi problem powodujący zatrzymanie udostępniania ekranu. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).

Uzyskiwanie dostępu do diagnostyki

Diagnostyka dostępna dla użytkownika to rozszerzona funkcja podstawowego Call interfejsu API i umożliwia diagnozowanie aktywnego wywołania.

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

Zdarzenia diagnostyczne dostępne dla użytkowników

  • Zasubskrybuj diagnosticChanged zdarzenie, aby monitorować zmiany diagnostyczne dostępne dla użytkownika.
/**
 *  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);

Pobieranie najnowszej diagnostyki dostępnej dla użytkowników

  • Pobierz najnowsze wartości diagnostyczne, które zostały zgłoszone. Jeśli diagnostyka jest niezdefiniowana, oznacza to, że nigdy nie została podniesiona.
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}`
);

Wartości diagnostyczne

Dostępna jest następująca diagnostyka dostępna dla użytkownika:

Wartości sieciowe

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
networkUnavailable Brak dostępnej sieci. — Ustaw wartość na True , gdy nie można uruchomić wywołania, ponieważ nie ma dostępnej sieci.
- Ustaw na False , gdy są obecni kandydaci ICE.
Urządzenie nie jest połączone z siecią. Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Optymalizacja sieci.
networkRelaysUnreachable Problemy z siecią. — ustaw wartość na True , gdy sieć ma pewne ograniczenia, które nie zezwalają na dostęp do przekaźników usług Azure Communication Services.
- Ustaw na False podczas tworzenia nowego połączenia.
Podczas połączenia, gdy sygnał sieci Wi-Fi jest włączony i wyłączony. Upewnij się, że reguły zapory i routing sieciowy umożliwiają klientowi dostęp do serwerów kolei firmy Microsoft. Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja zapory.
networkReconnectionQuality Połączenie zostało utracone i ponownie łączymy się z siecią. - Ustaw wartość naBad , gdy sieć jest odłączona
- Ustaw na Poorwartość , gdy zostanie utracona łączność transportowa multimediów
— ustaw wartość , gdy Good jest połączona nowa sesja.
Niska przepustowość, brak Internetu Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci.
networkReceiveQuality Wskaźnik dotyczący jakości strumienia przychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z odbieraniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z odbieraniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z odbieraniem strumienia.
- Jest widoczny tylko wtedy, gdy w wywołaniu jest aktywny przepływ audio, co oznacza, że uczestnik aktywnie przemawia przez pewien czas.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Zasugeruj, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.
networkSendQuality Wskaźnik dotyczący jakości strumienia wychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z wysyłaniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z wysyłaniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z wysyłaniem strumienia.
— Podobnie jak w przypadku diagnostyki jakości jest widoczny tylko wtedy, gdy w wywołaniu jest aktywny przepływ audio, co oznacza, że uczestnik aktywnie przemawia przez pewien czas. Ale działa tylko w wywołaniu 1:1, ponieważ opiera się na informacjach z drugiej strony, aby zweryfikować jakość. Gdzie druga strona musi zasygnalizować odebrane dane.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Ponadto zaleca się, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.

Wartości audio

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
noSpeakerDevicesAvailable w systemie użytkownika nie ma urządzenia wyjściowego audio (głośnika). - Ustaw na True wartość , jeśli w systemie nie ma żadnych urządzeń głośnikowych, a wybór osoby mówiącej jest obsługiwany.
— Ustaw wartość na False wartość , gdy w systemie znajduje się co najmniej jedno urządzenie mówiące, a wybór głośnika jest obsługiwany.
Wszystkie głośniki są odłączone Jeśli wartość jest ustawiona na True, rozważ przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma żadnych dostępnych głośników.
speakingWhileMicrophoneIsMuted Mówienie podczas wyciszenia. - Ustaw na True wartość , gdy mikrofon lokalny jest wyciszony, a użytkownik lokalny mówi.
— ustaw wartość , gdy False użytkownik lokalny przestaje mówić lub nie wycisza mikrofonu.
— To zdarzenie diagnostyczne można automatycznie wyłączyć, jeśli jest wyzwalane przez pewien czas bez żadnej akcji użytkownika, aby uniknąć szumu i zapewnić lepsze środowisko użytkownika. Po wystąpieniu nowej akcji wyciszenia zostanie ponownie włączona.
Podczas połączenia wycisz mikrofon i porozmawiaj z nim. Gdy wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że może rozmawiać i nie zdają sobie sprawy, że ich dźwięk jest wyciszony.
noMicrophoneDevicesAvailable Brak urządzeń przechwytywania audio (mikrofon) w systemie użytkownika — ustaw wartość , True jeśli w systemie nie ma żadnych urządzeń mikrofonowych.
— ustaw wartość , False gdy w systemie znajduje się co najmniej jedno urządzenie mikrofonowe.
Wszystkie mikrofony są odłączone podczas połączenia. Jeśli wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma mikrofonu. Aby uzyskać więcej informacji, zobacz włączanie mikrofonu w sekcji menedżerów urządzeń .
mikrofonNotFunctioning Mikrofon nie działa. — Ustaw wartość na True , gdy nie można rozpocząć wysyłania lokalnego strumienia audio, ponieważ urządzenie mikrofonu mogło zostać wyłączone w systemie lub jest używane przez inny proces. Ta UFD trwa około 10 sekund, aby się podnieść.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio ponownie.
Brak dostępnych mikrofonów, dostęp do mikrofonu wyłączony w systemie Gdy wartość ma True nadać użytkownikowi końcowemu powiadomienie wizualne, że występuje problem z mikrofonem.
mikrofonMuteUnexpectedly Mikrofon jest wyciszony - Ustaw wartość na True , gdy mikrofon nieoczekiwanie przechodzi w stan wyciszony.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio
Mikrofon jest wyciszony z systemu. Większość przypadków występuje, gdy użytkownik jest w połączeniu z usługami Azure Communication Services na urządzeniu przenośnym i przychodzi połączenie telefoniczne. W większości przypadków system operacyjny wycisza połączenie z usługami Azure Communication Services, aby użytkownik mógł odebrać połączenie telefoniczne. Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że połączenie zostało wyciszone, ponieważ nastąpiło połączenie telefoniczne. Aby uzyskać więcej informacji, zobacz, jak najlepiej obsługiwać wyciszenie systemu operacyjnego w sekcji wywołania usług Azure Communication Services, aby uzyskać więcej informacji.
mikrofonPermissionDenied jest mało woluminu z urządzenia lub prawie dyskretnie w systemie macOS. — ustaw wartość , gdy True uprawnienie audio zostanie odrzucone z ustawień systemowych (audio).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: Ta diagnostyka działa tylko w systemie macOS.
Uprawnienia mikrofonu są wyłączone w Ustawienia. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania mikrofonu dla wywołania usług Azure Communication Services.

Aparat wartości

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
cameraFrozen Aparat zatrzymuje tworzenie ramek przez ponad 5 sekund. — ustaw wartość , gdy True lokalny strumień wideo jest zamrożony. Ta diagnostyka oznacza, że po stronie zdalnej jest wyświetlany film zamrożony na ich ekranie lub oznacza to, że uczestnicy zdalni nie renderują twojego wideo na ich ekranie.
- Ustaw wartość na wartość False , gdy kończy się blokowanie, a użytkownicy mogą zobaczyć film wideo zgodnie z normą.
Aparat została utracona podczas połączenia lub złej sieci spowodowała zamrożenie kamery. Jeśli wartość jest ustawiona na Truewartość , rozważ powiadomienie użytkownika końcowego, że sieć uczestników zdalnych może być zła — prawdopodobnie sugeruje, że wyłączy aparat w celu oszczędzania przepustowości. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci na temat wymaganych możliwości internetowych dla wywołania usług Azure Communication Services.
cameraStartFailed Awaria aparatu ogólnego. - Ustaw na True wartość , gdy nie można rozpocząć wysyłania lokalnego wideo, ponieważ urządzenie aparatu mogło zostać wyłączone w systemie lub jest używane przez inny proces~.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie można uruchomić aparatu.
cameraStartTimedOut Typowy scenariusz, w którym aparat jest w złym stanie. — ustaw wartość , gdy True urządzenie aparatu jest limit czasu, aby rozpocząć wysyłanie strumienia wideo.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).
cameraPermissionDenied Aparat uprawnienia zostały odrzucone w ustawieniach. — ustaw wartość , gdy True uprawnienia aparatu są odrzucane z ustawień systemowych (wideo).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: ta diagnostyka działa tylko w przeglądarce macOS Chrome.
Aparat uprawnienia są wyłączone w ustawieniach. Gdy wartość jest ustawiona na wartość , należy przekazać Trueużytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania aparatu do wywołania usług Azure Communication Services.
cameraStoppedUnexpectedly Aparat awaria - Ustaw wartość na True czas nieoczekiwanego zatrzymania aparatu.
- Ustaw wartość , gdy False aparat zacznie pomyślnie wysyłać strumień wideo ponownie.
Sprawdź, czy aparat działa prawidłowo. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).

Tylko natywne

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki ograniczenia ryzyka
speakerVolumeIsZero Zero głośności na urządzeniu (głośnik). - Ustaw wartość , True gdy głośność głośnika ma wartość zero.
- Ustaw wartość na False , gdy głośność głośnika nie jest równa zero.
Nie słysząc dźwięku od uczestników na wezwanie. Gdy wartość jest ustawiona na Truewartość , może być przypadkowo wolumin przy najniższym (zero).
speakerMuted Urządzenie mówiące jest wyciszone. - Ustaw na True wartość , gdy urządzenie głośnika jest wyciszone.
— ustaw wartość , False gdy urządzenie głośnika nie jest wyciszone.
Nie słysząc dźwięku od uczestników na wezwanie. Gdy wartość jest ustawiona na True, być może przypadkowo wyciszono głośnik.
głośnikBusy Głośnik jest już używany. Urządzenie jest używane w trybie wyłącznym lub urządzenie jest używane w trybie udostępnionym, a obiekt wywołujący poprosił o korzystanie z urządzenia w trybie wyłącznym. — ustaw wartość , gdy True limit czasu pozyskiwania strumienia urządzenia głośnika (dźwięk).
- Ustaw na wartość False , gdy pozyskiwanie osoby mówiącej zakończy się pomyślnie.
Nie słysząc dźwięku od uczestników rozmowy za pośrednictwem głośnika. Gdy wartość jest ustawiona na Truewartość , należy przekazać użytkownikowi końcowemu powiadomienie wizualne, aby sprawdzić, czy inna aplikacja używa osoby mówiącej i spróbuj ją zamknąć.
speakerNotFunctioning Głośnik nie działa (nie można zainicjować klienta urządzenia audio lub urządzenie stało się nieaktywne przez ponad 5 sekund) — ustaw wartość , True gdy głośnik jest niedostępny lub upłynął limit czasu pozyskiwania strumienia urządzenia (dźwięk).
- Ustaw na wartość False , gdy pozyskiwanie osoby mówiącej zakończy się pomyślnie.
Nie słysząc dźwięku od uczestników rozmowy za pośrednictwem głośnika. Spróbuj sprawdzić stan urządzenia głośnika.
mikrofonBusy Mikrofon jest już używany. Urządzenie jest używane w trybie wyłącznym lub urządzenie jest używane w trybie udostępnionym, a obiekt wywołujący poprosił o korzystanie z urządzenia w trybie wyłącznym. - Ustaw wartość , gdy True limit czasu pozyskiwania strumienia urządzenia mikrofonu (dźwięk).
— Ustaw wartość na False wartość , gdy pozyskiwanie mikrofonu zakończy się pomyślnie.
Twój dźwięk nie dociera do innych uczestników połączenia. Gdy wartość jest ustawiona na Truewartość , należy przekazać użytkownikowi końcowemu powiadomienie wizualne, aby sprawdzić, czy inna aplikacja używa mikrofonu i spróbuj ją zamknąć.

Uzyskiwanie dostępu do diagnostyki

Diagnostyka dostępna dla użytkownika to rozszerzona funkcja podstawowego Call interfejsu API i umożliwia diagnozowanie aktywnego wywołania.

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

Zdarzenia diagnostyczne dostępne dla użytkowników

  • Pobierz obiekt funkcji i dodaj odbiorniki do zdarzeń diagnostycznych.
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);

Pobieranie najnowszej diagnostyki dostępnej dla użytkowników

  • Pobierz najnowsze wartości diagnostyczne, które zostały zgłoszone w bieżącym wywołaniu. Jeśli nadal nie otrzymaliśmy wartości dla diagnostyki, zostanie zgłoszony wyjątek.
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 ...

Wartości diagnostyczne

Dostępna jest następująca diagnostyka dostępna dla użytkownika:

Wartości sieciowe

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
networkUnavailable Brak dostępnej sieci. — Ustaw wartość na True , gdy nie można uruchomić wywołania, ponieważ nie ma dostępnej sieci.
- Ustaw na False , gdy są obecni kandydaci ICE.
Urządzenie nie jest połączone z siecią. Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Optymalizacja sieci.
networkRelaysUnreachable Problemy z siecią. — ustaw wartość na True , gdy sieć ma pewne ograniczenia, które nie zezwalają na dostęp do przekaźników usług Azure Communication Services.
- Ustaw na False podczas tworzenia nowego połączenia.
Podczas połączenia, gdy sygnał sieci Wi-Fi jest włączony i wyłączony. Upewnij się, że reguły zapory i routing sieciowy umożliwiają klientowi dostęp do serwerów kolei firmy Microsoft. Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja zapory.
networkReconnectionQuality Połączenie zostało utracone i ponownie łączymy się z siecią. - Ustaw wartość naBad , gdy sieć jest odłączona
- Ustaw na Poorwartość , gdy zostanie utracona łączność transportowa multimediów
— ustaw wartość , gdy Good jest połączona nowa sesja.
Niska przepustowość, brak Internetu Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci.
networkReceiveQuality Wskaźnik dotyczący jakości strumienia przychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z odbieraniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z odbieraniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z odbieraniem strumienia.
- Jest widoczny tylko wtedy, gdy w wywołaniu jest aktywny przepływ audio, co oznacza, że uczestnik aktywnie przemawia przez pewien czas.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Zasugeruj, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.
networkSendQuality Wskaźnik dotyczący jakości strumienia wychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z wysyłaniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z wysyłaniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z wysyłaniem strumienia.
— Podobnie jak w przypadku diagnostyki jakości jest widoczny tylko wtedy, gdy w wywołaniu jest aktywny przepływ audio, co oznacza, że uczestnik aktywnie przemawia przez pewien czas. Ale działa tylko w wywołaniu 1:1, ponieważ opiera się na informacjach z drugiej strony, aby zweryfikować jakość. Gdzie druga strona musi zasygnalizować odebrane dane.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Ponadto zaleca się, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.

Wartości audio

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
noSpeakerDevicesAvailable w systemie użytkownika nie ma urządzenia wyjściowego audio (głośnika). - Ustaw na True wartość , jeśli w systemie nie ma żadnych urządzeń głośnikowych, a wybór osoby mówiącej jest obsługiwany.
— Ustaw wartość na False wartość , gdy w systemie znajduje się co najmniej jedno urządzenie mówiące, a wybór głośnika jest obsługiwany.
Wszystkie głośniki są odłączone Jeśli wartość jest ustawiona na True, rozważ przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma żadnych dostępnych głośników.
speakingWhileMicrophoneIsMuted Mówienie podczas wyciszenia. - Ustaw na True wartość , gdy mikrofon lokalny jest wyciszony, a użytkownik lokalny mówi.
— ustaw wartość , gdy False użytkownik lokalny przestaje mówić lub nie wycisza mikrofonu.
— To zdarzenie diagnostyczne można automatycznie wyłączyć, jeśli jest wyzwalane przez pewien czas bez żadnej akcji użytkownika, aby uniknąć szumu i zapewnić lepsze środowisko użytkownika. Po wystąpieniu nowej akcji wyciszenia zostanie ponownie włączona.
Podczas połączenia wycisz mikrofon i porozmawiaj z nim. Gdy wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że może rozmawiać i nie zdają sobie sprawy, że ich dźwięk jest wyciszony.
noMicrophoneDevicesAvailable Brak urządzeń przechwytywania audio (mikrofon) w systemie użytkownika — ustaw wartość , True jeśli w systemie nie ma żadnych urządzeń mikrofonowych.
— ustaw wartość , False gdy w systemie znajduje się co najmniej jedno urządzenie mikrofonowe.
Wszystkie mikrofony są odłączone podczas połączenia. Jeśli wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma mikrofonu. Aby uzyskać więcej informacji, zobacz włączanie mikrofonu w sekcji menedżerów urządzeń .
mikrofonNotFunctioning Mikrofon nie działa. — Ustaw wartość na True , gdy nie można rozpocząć wysyłania lokalnego strumienia audio, ponieważ urządzenie mikrofonu mogło zostać wyłączone w systemie lub jest używane przez inny proces. Ta UFD trwa około 10 sekund, aby się podnieść.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio ponownie.
Brak dostępnych mikrofonów, dostęp do mikrofonu wyłączony w systemie Gdy wartość ma True nadać użytkownikowi końcowemu powiadomienie wizualne, że występuje problem z mikrofonem.
mikrofonMuteUnexpectedly Mikrofon jest wyciszony - Ustaw wartość na True , gdy mikrofon nieoczekiwanie przechodzi w stan wyciszony.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio
Mikrofon jest wyciszony z systemu. Większość przypadków występuje, gdy użytkownik jest w połączeniu z usługami Azure Communication Services na urządzeniu przenośnym i przychodzi połączenie telefoniczne. W większości przypadków system operacyjny wycisza połączenie z usługami Azure Communication Services, aby użytkownik mógł odebrać połączenie telefoniczne. Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że połączenie zostało wyciszone, ponieważ nastąpiło połączenie telefoniczne. Aby uzyskać więcej informacji, zobacz, jak najlepiej obsługiwać wyciszenie systemu operacyjnego w sekcji wywołania usług Azure Communication Services, aby uzyskać więcej informacji.
mikrofonPermissionDenied jest mało woluminu z urządzenia lub prawie dyskretnie w systemie macOS. — ustaw wartość , gdy True uprawnienie audio zostanie odrzucone z ustawień systemowych (audio).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: Ta diagnostyka działa tylko w systemie macOS.
Uprawnienia mikrofonu są wyłączone w Ustawienia. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania mikrofonu dla wywołania usług Azure Communication Services.

Aparat wartości

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
cameraFrozen Aparat zatrzymuje tworzenie ramek przez ponad 5 sekund. — ustaw wartość , gdy True lokalny strumień wideo jest zamrożony. Ta diagnostyka oznacza, że po stronie zdalnej jest wyświetlany film zamrożony na ich ekranie lub oznacza to, że uczestnicy zdalni nie renderują twojego wideo na ich ekranie.
- Ustaw wartość na wartość False , gdy kończy się blokowanie, a użytkownicy mogą zobaczyć film wideo zgodnie z normą.
Aparat została utracona podczas połączenia lub złej sieci spowodowała zamrożenie kamery. Jeśli wartość jest ustawiona na Truewartość , rozważ powiadomienie użytkownika końcowego, że sieć uczestników zdalnych może być zła — prawdopodobnie sugeruje, że wyłączy aparat w celu oszczędzania przepustowości. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci na temat wymaganych możliwości internetowych dla wywołania usług Azure Communication Services.
cameraStartFailed Awaria aparatu ogólnego. - Ustaw na True wartość , gdy nie można rozpocząć wysyłania lokalnego wideo, ponieważ urządzenie aparatu mogło zostać wyłączone w systemie lub jest używane przez inny proces~.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie można uruchomić aparatu.
cameraStartTimedOut Typowy scenariusz, w którym aparat jest w złym stanie. — ustaw wartość , gdy True urządzenie aparatu jest limit czasu, aby rozpocząć wysyłanie strumienia wideo.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).
cameraPermissionDenied Aparat uprawnienia zostały odrzucone w ustawieniach. — ustaw wartość , gdy True uprawnienia aparatu są odrzucane z ustawień systemowych (wideo).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: ta diagnostyka działa tylko w przeglądarce macOS Chrome.
Aparat uprawnienia są wyłączone w ustawieniach. Gdy wartość jest ustawiona na wartość , należy przekazać Trueużytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania aparatu do wywołania usług Azure Communication Services.
cameraStoppedUnexpectedly Aparat awaria - Ustaw wartość na True czas nieoczekiwanego zatrzymania aparatu.
- Ustaw wartość , gdy False aparat zacznie pomyślnie wysyłać strumień wideo ponownie.
Sprawdź, czy aparat działa prawidłowo. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).

Tylko natywne

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki ograniczenia ryzyka
speakerVolumeIsZero Zero głośności na urządzeniu (głośnik). - Ustaw wartość , True gdy głośność głośnika ma wartość zero.
- Ustaw wartość na False , gdy głośność głośnika nie jest równa zero.
Nie słysząc dźwięku od uczestników na wezwanie. Gdy wartość jest ustawiona na Truewartość , może być przypadkowo wolumin przy najniższym (zero).
speakerMuted Urządzenie mówiące jest wyciszone. - Ustaw na True wartość , gdy urządzenie głośnika jest wyciszone.
— ustaw wartość , False gdy urządzenie głośnika nie jest wyciszone.
Nie słysząc dźwięku od uczestników na wezwanie. Gdy wartość jest ustawiona na True, być może przypadkowo wyciszono głośnik.
głośnikBusy Głośnik jest już używany. Urządzenie jest używane w trybie wyłącznym lub urządzenie jest używane w trybie udostępnionym, a obiekt wywołujący poprosił o korzystanie z urządzenia w trybie wyłącznym. — ustaw wartość , gdy True limit czasu pozyskiwania strumienia urządzenia głośnika (dźwięk).
- Ustaw na wartość False , gdy pozyskiwanie osoby mówiącej zakończy się pomyślnie.
Nie słysząc dźwięku od uczestników rozmowy za pośrednictwem głośnika. Gdy wartość jest ustawiona na Truewartość , należy przekazać użytkownikowi końcowemu powiadomienie wizualne, aby sprawdzić, czy inna aplikacja używa osoby mówiącej i spróbuj ją zamknąć.
speakerNotFunctioning Głośnik nie działa (nie można zainicjować klienta urządzenia audio lub urządzenie stało się nieaktywne przez ponad 5 sekund) — ustaw wartość , True gdy głośnik jest niedostępny lub upłynął limit czasu pozyskiwania strumienia urządzenia (dźwięk).
- Ustaw na wartość False , gdy pozyskiwanie osoby mówiącej zakończy się pomyślnie.
Nie słysząc dźwięku od uczestników rozmowy za pośrednictwem głośnika. Spróbuj sprawdzić stan urządzenia głośnika.
mikrofonBusy Mikrofon jest już używany. Urządzenie jest używane w trybie wyłącznym lub urządzenie jest używane w trybie udostępnionym, a obiekt wywołujący poprosił o korzystanie z urządzenia w trybie wyłącznym. - Ustaw wartość , gdy True limit czasu pozyskiwania strumienia urządzenia mikrofonu (dźwięk).
— Ustaw wartość na False wartość , gdy pozyskiwanie mikrofonu zakończy się pomyślnie.
Twój dźwięk nie dociera do innych uczestników połączenia. Gdy wartość jest ustawiona na Truewartość , należy przekazać użytkownikowi końcowemu powiadomienie wizualne, aby sprawdzić, czy inna aplikacja używa mikrofonu i spróbuj ją zamknąć.

Uzyskiwanie dostępu do diagnostyki

Diagnostyka dostępna dla użytkownika to rozszerzona funkcja podstawowego Call interfejsu API i umożliwia diagnozowanie aktywnego wywołania.

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

Zdarzenia diagnostyczne dostępne dla użytkowników

  • Zaimplementuj delegatów dla media źródeł diagnostycznych i network . MediaDiagnosticsDelegate i NetworkDiagnosticsDelegate odpowiednio.
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...
  }
}
  • Przytrzymaj odwołanie do media i diagnostyki i network ustaw obiekt delegata na potrzeby nasłuchiwania zdarzeń.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Uwaga

Jeśli włączono CallKit funkcję za pomocą zestawu SDK lub zaimplementować integrację z zestawem CallKit, raportowanie stanu wyciszenia zestawu CallKit może spowodować, że system operacyjny zwolni aplikację do mikrofonu z powodu przyczyn prywatności, co spowodowałoby didIsSpeakingWhileMicrophoneIsMuted , że zdarzenie nie działa zgodnie z oczekiwaniami, ponieważ nie możemy przechwycić danych wejściowych z urządzenia mikrofonu w celu wykrycia, że użytkownik mówi.

Pobieranie najnowszej diagnostyki dostępnej dla użytkowników

  • Pobierz najnowsze wartości diagnostyczne, które zostały zgłoszone. Jeśli nadal nie otrzymaliśmy wartości diagnostyki nil lub .unknown zostanie zwrócona.
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.

Wartości diagnostyczne

Dostępna jest następująca diagnostyka dostępna dla użytkownika:

Wartości sieciowe

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
networkUnavailable Brak dostępnej sieci. — Ustaw wartość na True , gdy nie można uruchomić wywołania, ponieważ nie ma dostępnej sieci.
- Ustaw na False , gdy są obecni kandydaci ICE.
Urządzenie nie jest połączone z siecią. Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Optymalizacja sieci.
networkRelaysUnreachable Problemy z siecią. — ustaw wartość na True , gdy sieć ma pewne ograniczenia, które nie zezwalają na dostęp do przekaźników usług Azure Communication Services.
- Ustaw na False podczas tworzenia nowego połączenia.
Podczas połączenia, gdy sygnał sieci Wi-Fi jest włączony i wyłączony. Upewnij się, że reguły zapory i routing sieciowy umożliwiają klientowi dostęp do serwerów kolei firmy Microsoft. Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja zapory.
networkReconnectionQuality Połączenie zostało utracone i ponownie łączymy się z siecią. - Ustaw wartość naBad , gdy sieć jest odłączona
- Ustaw na Poorwartość , gdy zostanie utracona łączność transportowa multimediów
— ustaw wartość , gdy Good jest połączona nowa sesja.
Niska przepustowość, brak Internetu Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci.
networkReceiveQuality Wskaźnik dotyczący jakości strumienia przychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z odbieraniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z odbieraniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z odbieraniem strumienia.
- Jest widoczny tylko wtedy, gdy w wywołaniu jest aktywny przepływ audio, co oznacza, że uczestnik aktywnie przemawia przez pewien czas.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Zasugeruj, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.
networkSendQuality Wskaźnik dotyczący jakości strumienia wychodzącego. — ustaw wartość naBad , gdy występuje poważny problem z wysyłaniem strumienia.
- Ustaw na Poor , gdy występuje łagodny problem z wysyłaniem strumienia.
— Ustaw wartość na Good , gdy nie ma problemu z wysyłaniem strumienia.
— Podobnie jak w przypadku diagnostyki jakości jest widoczny tylko wtedy, gdy w wywołaniu jest aktywny przepływ audio, co oznacza, że uczestnik aktywnie przemawia przez pewien czas. Ale działa tylko w wywołaniu 1:1, ponieważ opiera się na informacjach z drugiej strony, aby zweryfikować jakość. Gdzie druga strona musi zasygnalizować odebrane dane.
Niska przepustowość Upewnij się, że połączenie ma niezawodne połączenie internetowe, które może utrzymać połączenie głosowe. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci. Ponadto zaleca się, aby użytkownik końcowy wyłączył aparat, aby zaoszczędzić dostępną przepustowość internetu.

Wartości audio

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
noSpeakerDevicesAvailable w systemie użytkownika nie ma urządzenia wyjściowego audio (głośnika). - Ustaw na True wartość , jeśli w systemie nie ma żadnych urządzeń głośnikowych, a wybór osoby mówiącej jest obsługiwany.
— Ustaw wartość na False wartość , gdy w systemie znajduje się co najmniej jedno urządzenie mówiące, a wybór głośnika jest obsługiwany.
Wszystkie głośniki są odłączone Jeśli wartość jest ustawiona na True, rozważ przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma żadnych dostępnych głośników.
speakingWhileMicrophoneIsMuted Mówienie podczas wyciszenia. - Ustaw na True wartość , gdy mikrofon lokalny jest wyciszony, a użytkownik lokalny mówi.
— ustaw wartość , gdy False użytkownik lokalny przestaje mówić lub nie wycisza mikrofonu.
— To zdarzenie diagnostyczne można automatycznie wyłączyć, jeśli jest wyzwalane przez pewien czas bez żadnej akcji użytkownika, aby uniknąć szumu i zapewnić lepsze środowisko użytkownika. Po wystąpieniu nowej akcji wyciszenia zostanie ponownie włączona.
Podczas połączenia wycisz mikrofon i porozmawiaj z nim. Gdy wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że może rozmawiać i nie zdają sobie sprawy, że ich dźwięk jest wyciszony.
noMicrophoneDevicesAvailable Brak urządzeń przechwytywania audio (mikrofon) w systemie użytkownika — ustaw wartość , True jeśli w systemie nie ma żadnych urządzeń mikrofonowych.
— ustaw wartość , False gdy w systemie znajduje się co najmniej jedno urządzenie mikrofonowe.
Wszystkie mikrofony są odłączone podczas połączenia. Jeśli wartość ustawiona na rozważ True przekazanie użytkownikowi końcowemu powiadomienia wizualnego, że jego bieżąca sesja wywołania nie ma mikrofonu. Aby uzyskać więcej informacji, zobacz włączanie mikrofonu w sekcji menedżerów urządzeń .
mikrofonNotFunctioning Mikrofon nie działa. — Ustaw wartość na True , gdy nie można rozpocząć wysyłania lokalnego strumienia audio, ponieważ urządzenie mikrofonu mogło zostać wyłączone w systemie lub jest używane przez inny proces. Ta UFD trwa około 10 sekund, aby się podnieść.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio ponownie.
Brak dostępnych mikrofonów, dostęp do mikrofonu wyłączony w systemie Gdy wartość ma True nadać użytkownikowi końcowemu powiadomienie wizualne, że występuje problem z mikrofonem.
mikrofonMuteUnexpectedly Mikrofon jest wyciszony - Ustaw wartość na True , gdy mikrofon nieoczekiwanie przechodzi w stan wyciszony.
- Ustaw na False wartość , gdy mikrofon zacznie pomyślnie wysyłać strumień audio
Mikrofon jest wyciszony z systemu. Większość przypadków występuje, gdy użytkownik jest w połączeniu z usługami Azure Communication Services na urządzeniu przenośnym i przychodzi połączenie telefoniczne. W większości przypadków system operacyjny wycisza połączenie z usługami Azure Communication Services, aby użytkownik mógł odebrać połączenie telefoniczne. Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że połączenie zostało wyciszone, ponieważ nastąpiło połączenie telefoniczne. Aby uzyskać więcej informacji, zobacz, jak najlepiej obsługiwać wyciszenie systemu operacyjnego w sekcji wywołania usług Azure Communication Services, aby uzyskać więcej informacji.
mikrofonPermissionDenied jest mało woluminu z urządzenia lub prawie dyskretnie w systemie macOS. — ustaw wartość , gdy True uprawnienie audio zostanie odrzucone z ustawień systemowych (audio).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: Ta diagnostyka działa tylko w systemie macOS.
Uprawnienia mikrofonu są wyłączone w Ustawienia. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania mikrofonu dla wywołania usług Azure Communication Services.

Aparat wartości

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki zaradcze
cameraFrozen Aparat zatrzymuje tworzenie ramek przez ponad 5 sekund. — ustaw wartość , gdy True lokalny strumień wideo jest zamrożony. Ta diagnostyka oznacza, że po stronie zdalnej jest wyświetlany film zamrożony na ich ekranie lub oznacza to, że uczestnicy zdalni nie renderują twojego wideo na ich ekranie.
- Ustaw wartość na wartość False , gdy kończy się blokowanie, a użytkownicy mogą zobaczyć film wideo zgodnie z normą.
Aparat została utracona podczas połączenia lub złej sieci spowodowała zamrożenie kamery. Jeśli wartość jest ustawiona na Truewartość , rozważ powiadomienie użytkownika końcowego, że sieć uczestników zdalnych może być zła — prawdopodobnie sugeruje, że wyłączy aparat w celu oszczędzania przepustowości. Aby uzyskać więcej informacji, zobacz sekcję Wymagania dotyczące przepustowości sieci na temat wymaganych możliwości internetowych dla wywołania usług Azure Communication Services.
cameraStartFailed Awaria aparatu ogólnego. - Ustaw na True wartość , gdy nie można rozpocząć wysyłania lokalnego wideo, ponieważ urządzenie aparatu mogło zostać wyłączone w systemie lub jest używane przez inny proces~.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na True, przekaż użytkownikowi końcowemu powiadomienie wizualne, że nie można uruchomić aparatu.
cameraStartTimedOut Typowy scenariusz, w którym aparat jest w złym stanie. — ustaw wartość , gdy True urządzenie aparatu jest limit czasu, aby rozpocząć wysyłanie strumienia wideo.
- Ustaw wartość , gdy False wybrane urządzenie aparatu pomyślnie wysyła lokalne wideo ponownie.
błędy Aparat Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).
cameraPermissionDenied Aparat uprawnienia zostały odrzucone w ustawieniach. — ustaw wartość , gdy True uprawnienia aparatu są odrzucane z ustawień systemowych (wideo).
— Ustaw wartość na False wartość przy pomyślnym przejęciu strumienia.
Uwaga: ta diagnostyka działa tylko w przeglądarce macOS Chrome.
Aparat uprawnienia są wyłączone w ustawieniach. Gdy wartość jest ustawiona na wartość , należy przekazać Trueużytkownikowi końcowemu powiadomienie wizualne, że nie włączył uprawnień do używania aparatu do wywołania usług Azure Communication Services.
cameraStoppedUnexpectedly Aparat awaria - Ustaw wartość na True czas nieoczekiwanego zatrzymania aparatu.
- Ustaw wartość , gdy False aparat zacznie pomyślnie wysyłać strumień wideo ponownie.
Sprawdź, czy aparat działa prawidłowo. Gdy wartość jest ustawiona na Truewartość , przekaż użytkownikowi końcowemu powiadomienie wizualne, że jego aparat prawdopodobnie ma problemy. (Gdy wartość jest ustawiona z powrotem w celu False usunięcia powiadomienia).

Tylko natywne

Nazwa/nazwisko opis Możliwe wartości Przypadki użycia Kroki ograniczenia ryzyka
speakerVolumeIsZero Zero głośności na urządzeniu (głośnik). - Ustaw wartość , True gdy głośność głośnika ma wartość zero.
- Ustaw wartość na False , gdy głośność głośnika nie jest równa zero.
Nie słysząc dźwięku od uczestników na wezwanie. Gdy wartość jest ustawiona na Truewartość , może być przypadkowo wolumin przy najniższym (zero).
speakerMuted Urządzenie mówiące jest wyciszone. - Ustaw na True wartość , gdy urządzenie głośnika jest wyciszone.
— ustaw wartość , False gdy urządzenie głośnika nie jest wyciszone.
Nie słysząc dźwięku od uczestników na wezwanie. Gdy wartość jest ustawiona na True, być może przypadkowo wyciszono głośnik.
głośnikBusy Głośnik jest już używany. Urządzenie jest używane w trybie wyłącznym lub urządzenie jest używane w trybie udostępnionym, a obiekt wywołujący poprosił o korzystanie z urządzenia w trybie wyłącznym. — ustaw wartość , gdy True limit czasu pozyskiwania strumienia urządzenia głośnika (dźwięk).
- Ustaw na wartość False , gdy pozyskiwanie osoby mówiącej zakończy się pomyślnie.
Nie słysząc dźwięku od uczestników rozmowy za pośrednictwem głośnika. Gdy wartość jest ustawiona na Truewartość , należy przekazać użytkownikowi końcowemu powiadomienie wizualne, aby sprawdzić, czy inna aplikacja używa osoby mówiącej i spróbuj ją zamknąć.
speakerNotFunctioning Głośnik nie działa (nie można zainicjować klienta urządzenia audio lub urządzenie stało się nieaktywne przez ponad 5 sekund) — ustaw wartość , True gdy głośnik jest niedostępny lub upłynął limit czasu pozyskiwania strumienia urządzenia (dźwięk).
- Ustaw na wartość False , gdy pozyskiwanie osoby mówiącej zakończy się pomyślnie.
Nie słysząc dźwięku od uczestników rozmowy za pośrednictwem głośnika. Spróbuj sprawdzić stan urządzenia głośnika.
mikrofonBusy Mikrofon jest już używany. Urządzenie jest używane w trybie wyłącznym lub urządzenie jest używane w trybie udostępnionym, a obiekt wywołujący poprosił o korzystanie z urządzenia w trybie wyłącznym. - Ustaw wartość , gdy True limit czasu pozyskiwania strumienia urządzenia mikrofonu (dźwięk).
— Ustaw wartość na False wartość , gdy pozyskiwanie mikrofonu zakończy się pomyślnie.
Twój dźwięk nie dociera do innych uczestników połączenia. Gdy wartość jest ustawiona na Truewartość , należy przekazać użytkownikowi końcowemu powiadomienie wizualne, aby sprawdzić, czy inna aplikacja używa mikrofonu i spróbuj ją zamknąć.

Uzyskiwanie dostępu do diagnostyki

Diagnostyka dostępna dla użytkownika to rozszerzona funkcja podstawowego Call interfejsu API i umożliwia diagnozowanie aktywnego wywołania.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Zdarzenia diagnostyczne dostępne dla użytkowników

  • Zaimplementuj odbiorniki dla zdarzeń diagnostycznych.
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
  • Ustaw metody zdarzeń do nasłuchiwania zdarzeń.
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 ... 

Pobieranie najnowszej diagnostyki dostępnej dla użytkowników

  • Pobierz najnowsze wartości diagnostyczne, które zostały zgłoszone w bieżącym wywołaniu. Jeśli nadal nie otrzymaliśmy wartości dla diagnostyki null lub .unknown parametru , zostanie zwrócona wartość .
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.