Bagikan melalui


Diagnostik Sisi Pengguna

Saat bekerja dengan panggilan di Azure Communication Services, Anda mungkin mengalami masalah yang memengaruhi pelanggan Anda. Untuk membantu hal ini, Azure Communication Services menyediakan fitur yang disebut "User Facing Diagnostics" (UFD) yang dapat digunakan untuk memeriksa berbagai properti panggilan untuk menentukan apa masalahnya. Diagnostik Yang Menghadap Pengguna adalah peristiwa yang diaktifkan yang dapat menunjukkan karena beberapa masalah yang mendasarinya (jaringan yang buruk, pengguna mematikan mikrofon mereka) bahwa pengguna mungkin memiliki pengalaman yang buruk. Setelah Diagnostik Yang Menghadap Pengguna diaktifkan, Anda harus mempertimbangkan untuk memberikan umpan balik kepada pengguna akhir bahwa mereka mungkin mengalami beberapa masalah yang mendasarinya. Namun, output User Facing Diagnostic hanya informasional, dan tumpukan panggilan tidak membuat perubahan apa pun berdasarkan User Facing Diagnostic yang diaktifkan.

Nilai diagnostik

Berikut adalah diagnostik sisi pelanggan yang tersedia:

Nilai jaringan

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
noNetwork Tidak ada jaringan yang tersedia. - Atur ke True ketika panggilan gagal dimulai karena tidak ada jaringan yang tersedia.
- Diatur menjadi False ketika ada kandidat ICE yang muncul.
Perangkat tidak tersambung ke jaringan. Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Pengoptimalan jaringan .
networkRelaysNotReachable Masalah dengan jaringan. - Atur ke True saat jaringan memiliki beberapa batasan yang tidak memungkinkan Anda untuk menjangkau relai Azure Communication Services.
- Diatur menjadi False ketika membuat panggilan baru.
Selama panggilan ketika sinyal WiFi menjadi menyala dan mati. Pastikan bahwa aturan firewall dan perutean jaringan memungkinkan klien untuk menjangkau server giliran Microsoft. Untuk informasi selengkapnya, lihat bagian Konfigurasi firewall.
networkReconnect Koneksi hilang dan kita tersambung kembali ke jaringan. - Diatur keBad ketika jaringan terputus
- Diatur ke Poorketika konektivitas transportasi media hilang
- Diatur menjadi Good ketika sesi baru terhubung.
Bandwidth rendah, tidak ada internet Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan.
networkReceiveQuality Indikator mengenai kualitas stream masuk. - Atur keBad ketika ada masalah parah dengan menerima aliran.
- Atur ke Poor ketika ada masalah ringan saat menerima aliran.
- Atur ke Good ketika tidak ada masalah dengan menerima aliran.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Sarankan agar pengguna akhir menonaktifkan kamera mereka untuk menghemat bandwidth internet yang tersedia.
networkSendQuality Indikator kualitas aliran keluar. - Atur keBad ketika ada masalah parah dengan mengirim aliran.
- Atur ke Poor ketika ada masalah ringan dengan mengirim aliran.
- Atur ke Good ketika tidak ada masalah dengan mengirim aliran.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Selain itu, sarankan pengguna akhir menonaktifkan kamera mereka untuk menghemat bandwidth internet yang tersedia.

Nilai audio

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
noSpeakerDevicesEnumerated tidak ada perangkat output audio (speaker) pada sistem pengguna. - Diatur menjadi True ketika tidak ada perangkat speaker di sistem, dan pilihan speaker tidak didukung.
- Diatur ke False ketika ada setidaknya satu perangkat speaker pada sistem, dan pemilihan speaker didukung.
Semua speaker dicabut Saat nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki speaker apa pun yang tersedia.
speakingWhileMicrophoneIsMuted Berbicara sambil dibisukan. - Diatur menjadi True ketika mikrofon lokal dibisukan dan pengguna lokal sedang berbicara.
- Diatur menjadi False saat pengguna lokal berhenti berbicata atau mengaktifkan mikrofon.
* Catatan: Saat ini, opsi ini tidak didukung di Safari karena sampel tingkat audio diambil dari statistik WebRTC.
Selama panggilan, bisukan mikrofon Anda dan coba bicara. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa mereka mungkin berbicara dan tidak menyadari bahwa audio mereka dibisukan.
noMicrophoneDevicesEnumerated Tidak ada perangkat pengambilan audio (mikrofon) pada sistem pengguna - Diatur menjadi True ketika tidak ada perangkat mikrofon pada sistem.
- Diatur ke False ketika setidaknya ada satu perangkat mikrofon pada sistem.
Semua mikrofon dicabut selama panggilan. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki mikrofon. Untuk informasi selengkapnya, lihat mengaktifkan mikrofon dari bagian manger perangkat.
microphoneNotFunctioning Mikrofon tidak berfungsi. - Diatur menjadi True ketika kita gagal mulai mengirimkan stream audio lokal karena perangkat mikrofon mungking dinonaktifkan di sistem atau sedang digunakan oleh proses lainnya. UFD ini perlu waktu 10 detik untuk dieksekusi.
- Diatur menjadi False ketika mikrofon mulai berhasil mengirimkan stream audio lagi.
Tidak ada mikrofon yang tersedia, akses mikrofon dinonaktifkan dalam sistem Ketika nilai diatur untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa ada masalah dengan mikrofon mereka.
microphoneMuteUnexpectedly Mikrofon dibisukan - Diatur menjadi True ketika mikrofon memasuki status bisu secara tidak terduga.
- Diatur menjadi False ketika mikrofon mulai mengirimkan stream audio dengan berhasil
Mikrofon dibisukan dari sistem. Sebagian besar kasus terjadi saat pengguna melakukan panggilan Azure Communication Services di perangkat seluler dan panggilan telepon masuk. Dalam kebanyakan kasus, sistem operasi mematikan suara panggilan Azure Communication Services sehingga pengguna dapat menjawab panggilan telepon. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa panggilan mereka dimatikan suaranya karena panggilan telepon masuk. Untuk informasi selengkapnya, lihat cara terbaik menangani OS yang membisukan bagian panggilan Azure Communication Services untuk detail selengkapnya.
microphonePermissionDenied ada volume rendah dari perangkat atau hampir diam di macOS. - Diatur ke True ketika izin audio ditolak dari pengaturan sistem (audio).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di macOS.
Izin mikrofon dinonaktifkan di Pengaturan. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan mikrofon untuk panggilan Azure Communication Services.

Nilai kamera

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
cameraFreeze Kamera berhenti memproduksi frame selama lebih dari 5 detik. - Diatur menjadi True ketika stream video lokal dibekukan. Diagnostik ini berarti bahwa sisi jarak jauh melihat video Anda membeku di layar mereka atau itu berarti bahwa peserta jarak jauh tidak merender video Anda di layar mereka.
- Diatur menjadi False ketika pembekuan selesai dan pengguna dapat melihat video Anda secara normal.
Kamera hilang koneksi selama panggilan atau jaringan yang buruk yang menyebabkan kamera membeku. Ketika nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan kepada pengguna akhir bahwa jaringan peserta jarak jauh mungkin buruk - mungkin menyarankan agar mereka mematikan kamera mereka untuk menghemat bandwidth. Untuk informasi selengkapnya, lihat Bagian persyaratan bandwidth jaringan tentang kemampuan internet yang diperlukan untuk panggilan Azure Communication Services.
cameraStartFailed Kegagalan kamera generik. - Diatur menjadi True ketika kita gagal untuk mulai mengirimkan video lokal karena perangkat kamera mungkin dinonaktifkan di sistem atau digunakan oleh proses lainnya~.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka gagal dimulai.
cameraStartTimedOut Skenario umum ketika kamera berada dalam keadaan buruk. - Diatur menjadi True ketika waktu habis perangkat kamera mulai mengirimkan stream video.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).
cameraPermissionDenied Izin kamera ditolak dalam pengaturan. - Diatur ke True ketika izin kamera ditolak dari pengaturan sistem (video).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di MacOS Chrome.
Izin mikrofon dinonaktifkan di Pengaturan. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan kamera untuk panggilan Azure Communication Services.
cameraStoppedUnexpectedly Kerusakan kamera - Diatur menjadi True saat status kamera berhenti tiba-tiba.
- Diatur menjadi False saat kamera mulai berhasil mengirimkan aliran video kembali.
Periksa kamera berfungsi dengan benar. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).

Nilai misc

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah Mitigasi
screenshareRecordingDisabled Berbagi layar sistem ditolak dari preferensi dalam Pengaturan. - Diatur ke True ketika izin berbagi layar ditolak dari pengaturan sistem (berbagi).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di Chrome macOS.
Perekaman layar dinonaktifkan di Pengaturan. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk berbagi layar mereka untuk panggilan Azure Communication Services.
capturerStartFailed Berbagi layar sistem gagal dilakukan. - Diatur menjadi True saat kami gagal dalam menangkap layar.
- Diatur menjadi False saat proses menangkap layar berhasil dimulai.
Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mungkin ada masalah saat berbagi layar mereka. (Saat nilai diatur kembali ke False, hapus pemberitahuan).
capturerStoppedUnexpectedly Kerusakan pada berbagi layar sistem - Diatur menjadi True saat status penangkap layar berhenti tiba-tiba.
- Diatur menjadi False saat penangkap layar berhasil menangkap lagi.
Memeriksa berbagi layar berfungsi dengan benar Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mungkin ada masalah yang menyebabkan berbagi layar mereka berhenti. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).

Mengakses diagnostik

Diagnostik sisi pelanggan adalah fitur tambahan dari API Call inti dan fitur yang memungkinkan Anda untuk mendiagnosis panggilan aktif.

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

Kejadian Diagnostik Sisi Pengguna

  • Berlanggan ke kejadian diagnosticChanged untuk memantau saat ada perubahan pada diagnostik sisi pengguna.
/**
 *  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);

Mendapatkan Diagnostik Sisi Pengguna terbaru

  • Dapatkan nilai diagnostik sisi pengguna terbaru yang muncul. Jika diagnostik tidak terdefinisi, itu karena tidak pernah dieksekusi.
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}`
);

Nilai diagnostik

Berikut adalah diagnostik sisi pelanggan yang tersedia:

Nilai jaringan

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
jaringan Tidak Tersedia Tidak ada jaringan yang tersedia. - Atur ke True ketika panggilan gagal dimulai karena tidak ada jaringan yang tersedia.
- Diatur menjadi False ketika ada kandidat ICE yang muncul.
Perangkat tidak tersambung ke jaringan. Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Pengoptimalan jaringan .
networkRelaysUnreachable Masalah dengan jaringan. - Atur ke True saat jaringan memiliki beberapa batasan yang tidak memungkinkan Anda untuk menjangkau relai Azure Communication Services.
- Diatur menjadi False ketika membuat panggilan baru.
Selama panggilan ketika sinyal WiFi menjadi menyala dan mati. Pastikan bahwa aturan firewall dan perutean jaringan memungkinkan klien untuk menjangkau server giliran Microsoft. Untuk informasi selengkapnya, lihat bagian Konfigurasi firewall.
networkReconnectionQuality Koneksi terputus dan kami tersambung kembali ke jaringan. - Diatur keBad ketika jaringan terputus
- Diatur ke Poorketika konektivitas transportasi media hilang
- Diatur menjadi Good ketika sesi baru terhubung.
Bandwidth rendah, tidak ada internet Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan.
networkReceiveQuality Indikator mengenai kualitas stream masuk. - Atur keBad ketika ada masalah parah dengan menerima aliran.
- Atur ke Poor ketika ada masalah ringan saat menerima aliran.
- Atur ke Good ketika tidak ada masalah dengan menerima aliran.
- Ini hanya terlihat jika ada alur audio aktif dalam panggilan, yang berarti peserta secara aktif berbicara untuk jangka waktu tertentu.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Sarankan agar pengguna akhir menonaktifkan kamera mereka untuk menghemat bandwidth internet yang tersedia.
networkSendQuality Indikator kualitas aliran keluar. - Atur keBad ketika ada masalah parah dengan mengirim aliran.
- Atur ke Poor ketika ada masalah ringan dengan mengirim aliran.
- Atur ke Good ketika tidak ada masalah dengan mengirim aliran.
- Mirip dengan menerima diagnostik kualitas, itu hanya terlihat jika ada alur audio aktif dalam panggilan, yang berarti peserta secara aktif berbicara untuk jangka waktu tertentu. Tetapi, itu hanya berfungsi dalam panggilan 1:1 karena bergantung pada informasi dari sisi lain untuk memverifikasi kualitas. Di mana sisi lain harus memberi sinyal data yang diterima.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Selain itu, sarankan agar pengguna akhir mematikan kamera mereka untuk menghemat bandwidth internet yang tersedia.

Nilai audio

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
noSpeakerDevicesAvailable tidak ada perangkat output audio (speaker) pada sistem pengguna. - Diatur menjadi True ketika tidak ada perangkat speaker di sistem, dan pilihan speaker tidak didukung.
- Diatur ke False ketika ada setidaknya satu perangkat speaker pada sistem, dan pemilihan speaker didukung.
Semua speaker dicabut Saat nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki speaker apa pun yang tersedia.
speakingWhileMicrophoneIsMuted Berbicara sambil dibisukan. - Diatur menjadi True ketika mikrofon lokal dibisukan dan pengguna lokal sedang berbicara.
- Diatur menjadi False saat pengguna lokal berhenti berbicata atau mengaktifkan mikrofon.
- Peristiwa diagnostik ini dapat secara otomatis dinonaktifkan jika dipicu selama beberapa kali tanpa tindakan pengguna untuk menghindari kebisingan dan memberikan pengalaman pengguna yang lebih baik. Ini akan diaktifkan kembali lagi ketika tindakan bisukan baru terjadi.
Selama panggilan, bisukan mikrofon Anda dan coba bicara. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa mereka mungkin berbicara dan tidak menyadari bahwa audio mereka dibisukan.
noMicrophoneDevicesAvailable Tidak ada perangkat pengambilan audio (mikrofon) pada sistem pengguna - Diatur menjadi True ketika tidak ada perangkat mikrofon pada sistem.
- Diatur ke False ketika setidaknya ada satu perangkat mikrofon pada sistem.
Semua mikrofon dicabut selama panggilan. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki mikrofon. Untuk informasi selengkapnya, lihat mengaktifkan mikrofon dari bagian manger perangkat.
microphoneNotFunctioning Mikrofon tidak berfungsi. - Diatur ke True ketika kita gagal untuk mulai mengirim aliran audio lokal karena perangkat mikrofon mungkin telah dinonaktifkan dalam sistem atau sedang digunakan oleh proses lain. UFD ini perlu waktu 10 detik untuk dieksekusi.
- Diatur menjadi False ketika mikrofon mulai berhasil mengirimkan stream audio lagi.
Tidak ada mikrofon yang tersedia, akses mikrofon dinonaktifkan dalam sistem Ketika nilai diatur untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa ada masalah dengan mikrofon mereka.
microphoneMuteUnexpectedly Mikrofon dibisukan - Diatur menjadi True ketika mikrofon memasuki status bisu secara tidak terduga.
- Diatur menjadi False ketika mikrofon mulai mengirimkan stream audio dengan berhasil
Mikrofon dibisukan dari sistem. Sebagian besar kasus terjadi saat pengguna melakukan panggilan Azure Communication Services di perangkat seluler dan panggilan telepon masuk. Dalam kebanyakan kasus, sistem operasi mematikan suara panggilan Azure Communication Services sehingga pengguna dapat menjawab panggilan telepon. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa panggilan mereka dimatikan suaranya karena panggilan telepon masuk. Untuk informasi selengkapnya, lihat cara terbaik menangani OS yang membisukan bagian panggilan Azure Communication Services untuk detail selengkapnya.
microphonePermissionDenied ada volume rendah dari perangkat atau hampir diam di macOS. - Diatur ke True ketika izin audio ditolak dari pengaturan sistem (audio).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di macOS.
Izin mikrofon dinonaktifkan di Pengaturan. Saat nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan mikrofon untuk panggilan Azure Communication Services.

Nilai kamera

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
cameraFrozen Kamera berhenti memproduksi frame selama lebih dari 5 detik. - Diatur menjadi True ketika stream video lokal dibekukan. Diagnostik ini berarti bahwa sisi jarak jauh melihat video Anda membeku di layar mereka atau itu berarti bahwa peserta jarak jauh tidak merender video Anda di layar mereka.
- Diatur menjadi False ketika pembekuan selesai dan pengguna dapat melihat video Anda secara normal.
Kamera hilang koneksi selama panggilan atau jaringan yang buruk yang menyebabkan kamera membeku. Ketika nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan kepada pengguna akhir bahwa jaringan peserta jarak jauh mungkin buruk - mungkin menyarankan agar mereka mematikan kamera mereka untuk menghemat bandwidth. Untuk informasi selengkapnya, lihat Bagian persyaratan bandwidth jaringan tentang kemampuan internet yang diperlukan untuk panggilan Azure Communication Services.
cameraStartFailed Kegagalan kamera generik. - Diatur ke True ketika kita gagal untuk mulai mengirim video lokal karena perangkat kamera mungkin telah dinonaktifkan dalam sistem atau sedang digunakan oleh proses lain ~.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka gagal dimulai.
cameraStartTimedOut Skenario umum ketika kamera berada dalam keadaan buruk. - Diatur menjadi True ketika waktu habis perangkat kamera mulai mengirimkan stream video.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).
cameraPermissionDenied Izin kamera ditolak dalam pengaturan. - Diatur ke True ketika izin kamera ditolak dari pengaturan sistem (video).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di MacOS Chrome.
Izin mikrofon dinonaktifkan di Pengaturan. Saat nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan kamera untuk panggilan Azure Communication Services.
cameraStoppedUnexpectedly Kerusakan kamera - Diatur menjadi True saat status kamera berhenti tiba-tiba.
- Diatur menjadi False saat kamera mulai berhasil mengirimkan aliran video kembali.
Periksa kamera berfungsi dengan benar. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).

Hanya asli

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah Mitigasi
speakerVolumeIsZero Volume nol pada perangkat (speaker). - Atur ke True saat volume speaker adalah nol.
- Atur ke False saat volume speaker bukan nol.
Tidak mendengar audio dari peserta saat panggilan. Ketika nilai diatur ke True, Anda mungkin tidak sengaja memiliki volume pada terendah(nol).
speakerMuted Perangkat speaker dibisukan. - Atur ke True saat perangkat speaker dibisukan.
- Atur ke False saat perangkat speaker tidak dibisukan.
Tidak mendengar audio dari peserta saat panggilan. Ketika nilai diatur ke True, Anda mungkin tidak sengaja mematikan suara speaker.
speakerBusy Speaker sudah digunakan. Perangkat sedang digunakan dalam mode eksklusif, atau perangkat sedang digunakan dalam mode bersama dan pemanggil diminta untuk menggunakan perangkat dalam mode eksklusif. - Atur ke True saat waktu akuisisi aliran perangkat speaker habis (audio).
- Atur ke False saat akuisisi pembicara berhasil.
Tidak mendengar audio dari peserta saat panggilan melalui pembicara. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir sehingga mereka dapat memeriksa apakah aplikasi lain menggunakan speaker dan mencoba menutupnya.
speakerNotFunctioning Speaker tidak berfungsi (gagal menginisialisasi klien perangkat audio atau perangkat menjadi tidak aktif selama lebih dari 5 detik) - Atur ke True saat speaker tidak tersedia, atau waktu akuisisi aliran perangkat habis (audio).
- Atur ke False saat akuisisi pembicara berhasil.
Tidak mendengar audio dari peserta saat panggilan melalui pembicara. Coba periksa status perangkat speaker.
microphoneBusy Mikrofon sudah digunakan. Perangkat sedang digunakan dalam mode eksklusif, atau perangkat sedang digunakan dalam mode bersama dan pemanggil diminta untuk menggunakan perangkat dalam mode eksklusif. - Atur ke True saat waktu akuisisi aliran perangkat mikrofon habis (audio).
- Atur ke False ketika akuisisi mikrofon berhasil.
Audio Anda tidak menjangkau peserta lain dalam panggilan. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir sehingga mereka dapat memeriksa apakah aplikasi lain menggunakan mikrofon dan mencoba menutupnya.

Mengakses diagnostik

Diagnostik sisi pelanggan adalah fitur tambahan dari API Call inti dan fitur yang memungkinkan Anda untuk mendiagnosis panggilan aktif.

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

Kejadian Diagnostik Sisi Pengguna

  • Dapatkan objek fitur dan tambahkan pendengar ke peristiwa diagnostik.
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);

Mendapatkan Diagnostik Sisi Pengguna terbaru

  • Dapatkan nilai diagnostik terbaru yang dinaikkan dalam panggilan saat ini. Jika kita masih tidak menerima nilai untuk diagnostik, pengecualian akan dilemparkan.
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 ...

Nilai diagnostik

Berikut adalah diagnostik sisi pelanggan yang tersedia:

Nilai jaringan

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
jaringan Tidak Tersedia Tidak ada jaringan yang tersedia. - Atur ke True ketika panggilan gagal dimulai karena tidak ada jaringan yang tersedia.
- Diatur menjadi False ketika ada kandidat ICE yang muncul.
Perangkat tidak tersambung ke jaringan. Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Pengoptimalan jaringan .
networkRelaysUnreachable Masalah dengan jaringan. - Atur ke True saat jaringan memiliki beberapa batasan yang tidak memungkinkan Anda untuk menjangkau relai Azure Communication Services.
- Diatur menjadi False ketika membuat panggilan baru.
Selama panggilan ketika sinyal WiFi menjadi menyala dan mati. Pastikan bahwa aturan firewall dan perutean jaringan memungkinkan klien untuk menjangkau server giliran Microsoft. Untuk informasi selengkapnya, lihat bagian Konfigurasi firewall.
networkReconnectionQuality Koneksi terputus dan kami tersambung kembali ke jaringan. - Diatur keBad ketika jaringan terputus
- Diatur ke Poorketika konektivitas transportasi media hilang
- Diatur menjadi Good ketika sesi baru terhubung.
Bandwidth rendah, tidak ada internet Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan.
networkReceiveQuality Indikator mengenai kualitas stream masuk. - Atur keBad ketika ada masalah parah dengan menerima aliran.
- Atur ke Poor ketika ada masalah ringan saat menerima aliran.
- Atur ke Good ketika tidak ada masalah dengan menerima aliran.
- Ini hanya terlihat jika ada alur audio aktif dalam panggilan, yang berarti peserta secara aktif berbicara untuk jangka waktu tertentu.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Sarankan agar pengguna akhir menonaktifkan kamera mereka untuk menghemat bandwidth internet yang tersedia.
networkSendQuality Indikator kualitas aliran keluar. - Atur keBad ketika ada masalah parah dengan mengirim aliran.
- Atur ke Poor ketika ada masalah ringan dengan mengirim aliran.
- Atur ke Good ketika tidak ada masalah dengan mengirim aliran.
- Mirip dengan menerima diagnostik kualitas, itu hanya terlihat jika ada alur audio aktif dalam panggilan, yang berarti peserta secara aktif berbicara untuk jangka waktu tertentu. Tetapi, itu hanya berfungsi dalam panggilan 1:1 karena bergantung pada informasi dari sisi lain untuk memverifikasi kualitas. Di mana sisi lain harus memberi sinyal data yang diterima.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Selain itu, sarankan agar pengguna akhir mematikan kamera mereka untuk menghemat bandwidth internet yang tersedia.

Nilai audio

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
noSpeakerDevicesAvailable tidak ada perangkat output audio (speaker) pada sistem pengguna. - Diatur menjadi True ketika tidak ada perangkat speaker di sistem, dan pilihan speaker tidak didukung.
- Diatur ke False ketika ada setidaknya satu perangkat speaker pada sistem, dan pemilihan speaker didukung.
Semua speaker dicabut Saat nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki speaker apa pun yang tersedia.
speakingWhileMicrophoneIsMuted Berbicara sambil dibisukan. - Diatur menjadi True ketika mikrofon lokal dibisukan dan pengguna lokal sedang berbicara.
- Diatur menjadi False saat pengguna lokal berhenti berbicata atau mengaktifkan mikrofon.
- Peristiwa diagnostik ini dapat secara otomatis dinonaktifkan jika dipicu selama beberapa kali tanpa tindakan pengguna untuk menghindari kebisingan dan memberikan pengalaman pengguna yang lebih baik. Ini akan diaktifkan kembali lagi ketika tindakan bisukan baru terjadi.
Selama panggilan, bisukan mikrofon Anda dan coba bicara. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa mereka mungkin berbicara dan tidak menyadari bahwa audio mereka dibisukan.
noMicrophoneDevicesAvailable Tidak ada perangkat pengambilan audio (mikrofon) pada sistem pengguna - Diatur menjadi True ketika tidak ada perangkat mikrofon pada sistem.
- Diatur ke False ketika setidaknya ada satu perangkat mikrofon pada sistem.
Semua mikrofon dicabut selama panggilan. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki mikrofon. Untuk informasi selengkapnya, lihat mengaktifkan mikrofon dari bagian manger perangkat.
microphoneNotFunctioning Mikrofon tidak berfungsi. - Diatur ke True ketika kita gagal untuk mulai mengirim aliran audio lokal karena perangkat mikrofon mungkin telah dinonaktifkan dalam sistem atau sedang digunakan oleh proses lain. UFD ini perlu waktu 10 detik untuk dieksekusi.
- Diatur menjadi False ketika mikrofon mulai berhasil mengirimkan stream audio lagi.
Tidak ada mikrofon yang tersedia, akses mikrofon dinonaktifkan dalam sistem Ketika nilai diatur untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa ada masalah dengan mikrofon mereka.
microphoneMuteUnexpectedly Mikrofon dibisukan - Diatur menjadi True ketika mikrofon memasuki status bisu secara tidak terduga.
- Diatur menjadi False ketika mikrofon mulai mengirimkan stream audio dengan berhasil
Mikrofon dibisukan dari sistem. Sebagian besar kasus terjadi saat pengguna melakukan panggilan Azure Communication Services di perangkat seluler dan panggilan telepon masuk. Dalam kebanyakan kasus, sistem operasi mematikan suara panggilan Azure Communication Services sehingga pengguna dapat menjawab panggilan telepon. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa panggilan mereka dimatikan suaranya karena panggilan telepon masuk. Untuk informasi selengkapnya, lihat cara terbaik menangani OS yang membisukan bagian panggilan Azure Communication Services untuk detail selengkapnya.
microphonePermissionDenied ada volume rendah dari perangkat atau hampir diam di macOS. - Diatur ke True ketika izin audio ditolak dari pengaturan sistem (audio).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di macOS.
Izin mikrofon dinonaktifkan di Pengaturan. Saat nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan mikrofon untuk panggilan Azure Communication Services.

Nilai kamera

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
cameraFrozen Kamera berhenti memproduksi frame selama lebih dari 5 detik. - Diatur menjadi True ketika stream video lokal dibekukan. Diagnostik ini berarti bahwa sisi jarak jauh melihat video Anda membeku di layar mereka atau itu berarti bahwa peserta jarak jauh tidak merender video Anda di layar mereka.
- Diatur menjadi False ketika pembekuan selesai dan pengguna dapat melihat video Anda secara normal.
Kamera hilang koneksi selama panggilan atau jaringan yang buruk yang menyebabkan kamera membeku. Ketika nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan kepada pengguna akhir bahwa jaringan peserta jarak jauh mungkin buruk - mungkin menyarankan agar mereka mematikan kamera mereka untuk menghemat bandwidth. Untuk informasi selengkapnya, lihat Bagian persyaratan bandwidth jaringan tentang kemampuan internet yang diperlukan untuk panggilan Azure Communication Services.
cameraStartFailed Kegagalan kamera generik. - Diatur ke True ketika kita gagal untuk mulai mengirim video lokal karena perangkat kamera mungkin telah dinonaktifkan dalam sistem atau sedang digunakan oleh proses lain ~.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka gagal dimulai.
cameraStartTimedOut Skenario umum ketika kamera berada dalam keadaan buruk. - Diatur menjadi True ketika waktu habis perangkat kamera mulai mengirimkan stream video.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).
cameraPermissionDenied Izin kamera ditolak dalam pengaturan. - Diatur ke True ketika izin kamera ditolak dari pengaturan sistem (video).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di MacOS Chrome.
Izin mikrofon dinonaktifkan di Pengaturan. Saat nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan kamera untuk panggilan Azure Communication Services.
cameraStoppedUnexpectedly Kerusakan kamera - Diatur menjadi True saat status kamera berhenti tiba-tiba.
- Diatur menjadi False saat kamera mulai berhasil mengirimkan aliran video kembali.
Periksa kamera berfungsi dengan benar. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).

Hanya asli

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah Mitigasi
speakerVolumeIsZero Volume nol pada perangkat (speaker). - Atur ke True saat volume speaker adalah nol.
- Atur ke False saat volume speaker bukan nol.
Tidak mendengar audio dari peserta saat panggilan. Ketika nilai diatur ke True, Anda mungkin tidak sengaja memiliki volume pada terendah(nol).
speakerMuted Perangkat speaker dibisukan. - Atur ke True saat perangkat speaker dibisukan.
- Atur ke False saat perangkat speaker tidak dibisukan.
Tidak mendengar audio dari peserta saat panggilan. Ketika nilai diatur ke True, Anda mungkin tidak sengaja mematikan suara speaker.
speakerBusy Speaker sudah digunakan. Perangkat sedang digunakan dalam mode eksklusif, atau perangkat sedang digunakan dalam mode bersama dan pemanggil diminta untuk menggunakan perangkat dalam mode eksklusif. - Atur ke True saat waktu akuisisi aliran perangkat speaker habis (audio).
- Atur ke False saat akuisisi pembicara berhasil.
Tidak mendengar audio dari peserta saat panggilan melalui pembicara. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir sehingga mereka dapat memeriksa apakah aplikasi lain menggunakan speaker dan mencoba menutupnya.
speakerNotFunctioning Speaker tidak berfungsi (gagal menginisialisasi klien perangkat audio atau perangkat menjadi tidak aktif selama lebih dari 5 detik) - Atur ke True saat speaker tidak tersedia, atau waktu akuisisi aliran perangkat habis (audio).
- Atur ke False saat akuisisi pembicara berhasil.
Tidak mendengar audio dari peserta saat panggilan melalui pembicara. Coba periksa status perangkat speaker.
microphoneBusy Mikrofon sudah digunakan. Perangkat sedang digunakan dalam mode eksklusif, atau perangkat sedang digunakan dalam mode bersama dan pemanggil diminta untuk menggunakan perangkat dalam mode eksklusif. - Atur ke True saat waktu akuisisi aliran perangkat mikrofon habis (audio).
- Atur ke False ketika akuisisi mikrofon berhasil.
Audio Anda tidak menjangkau peserta lain dalam panggilan. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir sehingga mereka dapat memeriksa apakah aplikasi lain menggunakan mikrofon dan mencoba menutupnya.

Mengakses diagnostik

Diagnostik sisi pelanggan adalah fitur tambahan dari API Call inti dan fitur yang memungkinkan Anda untuk mendiagnosis panggilan aktif.

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

Kejadian Diagnostik Sisi Pengguna

  • Terapkan delegasi untuk media dan network sumber diagnostik. masing-masing MediaDiagnosticsDelegate dan NetworkDiagnosticsDelegate.
extension CallObserver: MediaDiagnosticsDelegate {
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraFrozen args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerMuted args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraStartFailed args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerVolumeZero args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerNotFunctioning args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraPermissionDenied args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneNotFunctioning args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraStartTimedOut args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneMutedUnexpectedly args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsZeroSpeakerDevicesAvailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...                            
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsZeroMicrophoneDevicesAvailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakingWhileMicrophoneIsMuted args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerBusy args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneBusy args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
}

extension CallObserver: NetworkDiagnosticsDelegate {
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeIsNetworkRelaysUnreachable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkReconnectionQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkSendQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeIsNetworkUnavailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkReceiveQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
}
  • Tahan referensi ke media dan network diagnostik dan atur objek delegasi untuk mendengarkan peristiwa.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Catatan

Jika Anda telah CallKit mengaktifkan melalui SDK atau menerapkan integrasi CallKit dalam aplikasi Anda, melaporkan status bisu ke CallKit dapat mengakibatkan OS membuat aplikasi melonggarkan penangguhan ke mikrofon karena alasan privasi yang akan menyebabkan didIsSpeakingWhileMicrophoneIsMuted peristiwa tidak berfungsi seperti yang diharapkan karena kami tidak dapat menangkap input dari perangkat mikrofon untuk mendeteksi bahwa pengguna berbicara.

Mendapatkan Diagnostik Sisi Pengguna terbaru

  • Dapatkan nilai diagnostik sisi pengguna terbaru yang muncul. Jika kita masih tidak menerima nilai untuk diagnostik, nil atau .unknown dikembalikan.
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.

Nilai diagnostik

Berikut adalah diagnostik sisi pelanggan yang tersedia:

Nilai jaringan

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
jaringan Tidak Tersedia Tidak ada jaringan yang tersedia. - Atur ke True ketika panggilan gagal dimulai karena tidak ada jaringan yang tersedia.
- Diatur menjadi False ketika ada kandidat ICE yang muncul.
Perangkat tidak tersambung ke jaringan. Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Pengoptimalan jaringan .
networkRelaysUnreachable Masalah dengan jaringan. - Atur ke True saat jaringan memiliki beberapa batasan yang tidak memungkinkan Anda untuk menjangkau relai Azure Communication Services.
- Diatur menjadi False ketika membuat panggilan baru.
Selama panggilan ketika sinyal WiFi menjadi menyala dan mati. Pastikan bahwa aturan firewall dan perutean jaringan memungkinkan klien untuk menjangkau server giliran Microsoft. Untuk informasi selengkapnya, lihat bagian Konfigurasi firewall.
networkReconnectionQuality Koneksi terputus dan kami tersambung kembali ke jaringan. - Diatur keBad ketika jaringan terputus
- Diatur ke Poorketika konektivitas transportasi media hilang
- Diatur menjadi Good ketika sesi baru terhubung.
Bandwidth rendah, tidak ada internet Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan.
networkReceiveQuality Indikator mengenai kualitas stream masuk. - Atur keBad ketika ada masalah parah dengan menerima aliran.
- Atur ke Poor ketika ada masalah ringan saat menerima aliran.
- Atur ke Good ketika tidak ada masalah dengan menerima aliran.
- Ini hanya terlihat jika ada alur audio aktif dalam panggilan, yang berarti peserta secara aktif berbicara untuk jangka waktu tertentu.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Sarankan agar pengguna akhir menonaktifkan kamera mereka untuk menghemat bandwidth internet yang tersedia.
networkSendQuality Indikator kualitas aliran keluar. - Atur keBad ketika ada masalah parah dengan mengirim aliran.
- Atur ke Poor ketika ada masalah ringan dengan mengirim aliran.
- Atur ke Good ketika tidak ada masalah dengan mengirim aliran.
- Mirip dengan menerima diagnostik kualitas, itu hanya terlihat jika ada alur audio aktif dalam panggilan, yang berarti peserta secara aktif berbicara untuk jangka waktu tertentu. Tetapi, itu hanya berfungsi dalam panggilan 1:1 karena bergantung pada informasi dari sisi lain untuk memverifikasi kualitas. Di mana sisi lain harus memberi sinyal data yang diterima.
Bandwidth rendah Pastikan bahwa panggilan memiliki koneksi internet yang andal yang dapat mempertahankan panggilan suara. Untuk informasi selengkapnya, lihat bagian Persyaratan bandwidth jaringan. Selain itu, sarankan agar pengguna akhir mematikan kamera mereka untuk menghemat bandwidth internet yang tersedia.

Nilai audio

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
noSpeakerDevicesAvailable tidak ada perangkat output audio (speaker) pada sistem pengguna. - Diatur menjadi True ketika tidak ada perangkat speaker di sistem, dan pilihan speaker tidak didukung.
- Diatur ke False ketika ada setidaknya satu perangkat speaker pada sistem, dan pemilihan speaker didukung.
Semua speaker dicabut Saat nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki speaker apa pun yang tersedia.
speakingWhileMicrophoneIsMuted Berbicara sambil dibisukan. - Diatur menjadi True ketika mikrofon lokal dibisukan dan pengguna lokal sedang berbicara.
- Diatur menjadi False saat pengguna lokal berhenti berbicata atau mengaktifkan mikrofon.
- Peristiwa diagnostik ini dapat secara otomatis dinonaktifkan jika dipicu selama beberapa kali tanpa tindakan pengguna untuk menghindari kebisingan dan memberikan pengalaman pengguna yang lebih baik. Ini akan diaktifkan kembali lagi ketika tindakan bisukan baru terjadi.
Selama panggilan, bisukan mikrofon Anda dan coba bicara. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa mereka mungkin berbicara dan tidak menyadari bahwa audio mereka dibisukan.
noMicrophoneDevicesAvailable Tidak ada perangkat pengambilan audio (mikrofon) pada sistem pengguna - Diatur menjadi True ketika tidak ada perangkat mikrofon pada sistem.
- Diatur ke False ketika setidaknya ada satu perangkat mikrofon pada sistem.
Semua mikrofon dicabut selama panggilan. Ketika nilai diatur untuk mempertimbangkan untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa sesi panggilan mereka saat ini tidak memiliki mikrofon. Untuk informasi selengkapnya, lihat mengaktifkan mikrofon dari bagian manger perangkat.
microphoneNotFunctioning Mikrofon tidak berfungsi. - Diatur ke True ketika kita gagal untuk mulai mengirim aliran audio lokal karena perangkat mikrofon mungkin telah dinonaktifkan dalam sistem atau sedang digunakan oleh proses lain. UFD ini perlu waktu 10 detik untuk dieksekusi.
- Diatur menjadi False ketika mikrofon mulai berhasil mengirimkan stream audio lagi.
Tidak ada mikrofon yang tersedia, akses mikrofon dinonaktifkan dalam sistem Ketika nilai diatur untuk True memberikan pemberitahuan visual kepada pengguna akhir bahwa ada masalah dengan mikrofon mereka.
microphoneMuteUnexpectedly Mikrofon dibisukan - Diatur menjadi True ketika mikrofon memasuki status bisu secara tidak terduga.
- Diatur menjadi False ketika mikrofon mulai mengirimkan stream audio dengan berhasil
Mikrofon dibisukan dari sistem. Sebagian besar kasus terjadi saat pengguna melakukan panggilan Azure Communication Services di perangkat seluler dan panggilan telepon masuk. Dalam kebanyakan kasus, sistem operasi mematikan suara panggilan Azure Communication Services sehingga pengguna dapat menjawab panggilan telepon. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa panggilan mereka dimatikan suaranya karena panggilan telepon masuk. Untuk informasi selengkapnya, lihat cara terbaik menangani OS yang membisukan bagian panggilan Azure Communication Services untuk detail selengkapnya.
microphonePermissionDenied ada volume rendah dari perangkat atau hampir diam di macOS. - Diatur ke True ketika izin audio ditolak dari pengaturan sistem (audio).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di macOS.
Izin mikrofon dinonaktifkan di Pengaturan. Saat nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan mikrofon untuk panggilan Azure Communication Services.

Nilai kamera

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah-langkah mitigasi
cameraFrozen Kamera berhenti memproduksi frame selama lebih dari 5 detik. - Diatur menjadi True ketika stream video lokal dibekukan. Diagnostik ini berarti bahwa sisi jarak jauh melihat video Anda membeku di layar mereka atau itu berarti bahwa peserta jarak jauh tidak merender video Anda di layar mereka.
- Diatur menjadi False ketika pembekuan selesai dan pengguna dapat melihat video Anda secara normal.
Kamera hilang koneksi selama panggilan atau jaringan yang buruk yang menyebabkan kamera membeku. Ketika nilai diatur ke True, pertimbangkan untuk memberikan pemberitahuan kepada pengguna akhir bahwa jaringan peserta jarak jauh mungkin buruk - mungkin menyarankan agar mereka mematikan kamera mereka untuk menghemat bandwidth. Untuk informasi selengkapnya, lihat Bagian persyaratan bandwidth jaringan tentang kemampuan internet yang diperlukan untuk panggilan Azure Communication Services.
cameraStartFailed Kegagalan kamera generik. - Diatur ke True ketika kita gagal untuk mulai mengirim video lokal karena perangkat kamera mungkin telah dinonaktifkan dalam sistem atau sedang digunakan oleh proses lain ~.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka gagal dimulai.
cameraStartTimedOut Skenario umum ketika kamera berada dalam keadaan buruk. - Diatur menjadi True ketika waktu habis perangkat kamera mulai mengirimkan stream video.
- Diatur menjadi False ketika perangkat kamera yang dipilih berhasil mengirimkan video lokal lagi.
Kegagalan kamera Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).
cameraPermissionDenied Izin kamera ditolak dalam pengaturan. - Diatur ke True ketika izin kamera ditolak dari pengaturan sistem (video).
- Diatur menjadi False pada akuisisi stream yang berhasil.
Catatan: Diagnostik ini hanya berfungsi di MacOS Chrome.
Izin mikrofon dinonaktifkan di Pengaturan. Saat nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa mereka tidak mengaktifkan izin untuk menggunakan kamera untuk panggilan Azure Communication Services.
cameraStoppedUnexpectedly Kerusakan kamera - Diatur menjadi True saat status kamera berhenti tiba-tiba.
- Diatur menjadi False saat kamera mulai berhasil mengirimkan aliran video kembali.
Periksa kamera berfungsi dengan benar. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir bahwa kamera mereka mungkin mengalami masalah. (Saat nilai diatur kembali untuk False menghapus pemberitahuan).

Hanya asli

Nama Deskripsi Nilai yang dapat dipakai Kasus penggunaan Langkah Mitigasi
speakerVolumeIsZero Volume nol pada perangkat (speaker). - Atur ke True saat volume speaker adalah nol.
- Atur ke False saat volume speaker bukan nol.
Tidak mendengar audio dari peserta saat panggilan. Ketika nilai diatur ke True, Anda mungkin tidak sengaja memiliki volume pada terendah(nol).
speakerMuted Perangkat speaker dibisukan. - Atur ke True saat perangkat speaker dibisukan.
- Atur ke False saat perangkat speaker tidak dibisukan.
Tidak mendengar audio dari peserta saat panggilan. Ketika nilai diatur ke True, Anda mungkin tidak sengaja mematikan suara speaker.
speakerBusy Speaker sudah digunakan. Perangkat sedang digunakan dalam mode eksklusif, atau perangkat sedang digunakan dalam mode bersama dan pemanggil diminta untuk menggunakan perangkat dalam mode eksklusif. - Atur ke True saat waktu akuisisi aliran perangkat speaker habis (audio).
- Atur ke False saat akuisisi pembicara berhasil.
Tidak mendengar audio dari peserta saat panggilan melalui pembicara. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir sehingga mereka dapat memeriksa apakah aplikasi lain menggunakan speaker dan mencoba menutupnya.
speakerNotFunctioning Speaker tidak berfungsi (gagal menginisialisasi klien perangkat audio atau perangkat menjadi tidak aktif selama lebih dari 5 detik) - Atur ke True saat speaker tidak tersedia, atau waktu akuisisi aliran perangkat habis (audio).
- Atur ke False saat akuisisi pembicara berhasil.
Tidak mendengar audio dari peserta saat panggilan melalui pembicara. Coba periksa status perangkat speaker.
microphoneBusy Mikrofon sudah digunakan. Perangkat sedang digunakan dalam mode eksklusif, atau perangkat sedang digunakan dalam mode bersama dan pemanggil diminta untuk menggunakan perangkat dalam mode eksklusif. - Atur ke True saat waktu akuisisi aliran perangkat mikrofon habis (audio).
- Atur ke False ketika akuisisi mikrofon berhasil.
Audio Anda tidak menjangkau peserta lain dalam panggilan. Ketika nilai diatur ke True, berikan pemberitahuan visual kepada pengguna akhir sehingga mereka dapat memeriksa apakah aplikasi lain menggunakan mikrofon dan mencoba menutupnya.

Mengakses diagnostik

Diagnostik sisi pelanggan adalah fitur tambahan dari API Call inti dan fitur yang memungkinkan Anda untuk mendiagnosis panggilan aktif.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Kejadian Diagnostik Sisi Pengguna

  • Menerapkan pendengar untuk peristiwa diagnostik.
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
  • Atur metode peristiwa untuk mendengarkan peristiwa.
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 ... 

Mendapatkan Diagnostik Sisi Pengguna terbaru

  • Dapatkan nilai diagnostik terbaru yang dinaikkan dalam panggilan saat ini. Jika kita masih tidak menerima nilai untuk diagnostik, null atau .unknown untuk dikembalikan.
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.