Диагностика для пользователей
При работе с звонками в Службы коммуникации Azure могут возникнуть проблемы, влияющие на клиентов. Чтобы помочь с этим, Службы коммуникации Azure предоставляет функцию с именем "Диагностика для пользователей" (UFD), которую можно использовать для изучения различных свойств вызова, чтобы определить, какая проблема может быть. Диагностика взаимодействия с пользователем — это события, которые могут указывать из-за некоторых базовых проблем (плохой сети, у пользователя есть отключен микрофон), что у пользователя может быть плохой опыт работы. После запуска диагностики с пользователем следует рассмотреть возможность предоставления отзывов конечному пользователю о том, что у них может возникнуть какая-то основная проблема. Однако выходные данные диагностики для пользователей являются информационными, и стек вызовов не вносит никаких изменений в зависимости от запуска диагностики пользователя.
Диагностические значения
Доступны следующие диагностика для пользователя:
Сетевые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
noNetwork | Нет сети. | — Задано значение True , когда вызов не удается запустить, так как нет доступной сети. — Имеет значение False , когда имеются кандидаты ICE. |
Устройство не подключено к сети. | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе "Оптимизация сети". |
networkRelaysNotReachable | Проблемы с сетью. | — Задано значениеTrue , когда сеть имеет некоторое ограничение, которое не позволяет достичь Службы коммуникации Azure ретрансляторов. — Имеет значение False после совершения нового вызова. |
Во время вызова при включении и отключении сигнала Wi-Fi. | Убедитесь, что правила брандмауэра и сетевая маршрутизация позволяют клиенту обращаться к серверам Майкрософт. Дополнительные сведения см. в разделе Настройка брандмауэра. |
networkReconnect | Подключение было разорвано, и выполняется повторное подключение к сети. | — задано значениеBad , когда сеть отключена — задано значение Poor , когда подключение к транспорту мультимедиа потеряно — Имеет значение Good , когда подключен новый сеанс. |
Низкая пропускная способность, отсутствует подключение к Интернету | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. |
networkReceiveQuality | Индикатор качества входящего потока. | — Задано значениеBad , когда возникает серьезная проблема с получением потока. — Установите значение Poor , когда возникает легкая проблема с получением потока. — задано значение Good , когда нет проблем с получением потока. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Предположим, что конечный пользователь отключает камеру для экономии доступной пропускной способности Интернета. |
networkSendQuality | Индикатор качества исходящего потока. | — Установите значениеBad , когда возникла серьезная проблема с отправкой потока. — Задано значение Poor , когда возникает мягкая проблема с отправкой потока. — Установите значение Good , когда нет проблем с отправкой потока. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Кроме того, предположим, что конечный пользователь отключает свою камеру, чтобы сохранить доступную пропускную способность Интернета. |
Звуковые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
noSpeakerDevicesEnumerated | В системе пользователя нет звукового выходного устройства (динамик). | — Имеет значение True , когда в системе отсутствуют динамики и поддерживается выбор динамиков. — Устанавливается значение False , когда в системе поддерживается хотя бы одно устройство динамиков, а выбор динамиков поддерживается. |
Все динамики отключены | Если задано True значение , рассмотрите возможность предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет доступных динамиков. |
speakingWhileMicrophoneIsMuted | Разговор при отключенном микрофоне. | — Имеет значение True , когда локальный микрофон отключен, а локальный пользователь говорит. — устанавливается, False когда локальный пользователь либо останавливает речь, либо отменяет микрофон. * Примечание. В настоящее время этот параметр не поддерживается в Safari, так как примеры уровня звука взяты из статистики WebRTC. |
Во время вызова микрофон отключен и вы говорите в него. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что они могут говорить и не понимают, что звук отключен. |
noMicrophoneDevicesEnumerated | В системе пользователя нет устройств записи звука (микрофон) | — Имеет значение, True если в системе нет микрофонов. — Установите значение False , если в системе есть по крайней мере одно устройство микрофона. |
Во время вызова все микрофоны отключены. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет микрофона. Дополнительные сведения см. в разделе "Включение микрофона" из раздела "Manger устройства". |
microphoneNotFunctioning | Микрофон не работает. | — Имеет значение True , если не удается начать отправку локального аудиопотока, поскольку, возможно, устройство микрофона было отключено в системе или оно используется другим процессом. Возникновение этого UFD обычно занимает порядка 10 секунд. — Имеет значение False , когда микрофон начинает успешно отправлять аудиопоток. |
Нет микрофонов, доступ к микрофону отключен в системе | Если задано значение для предоставления True визуального уведомления конечным пользователям о проблеме с микрофоном. |
microphoneMuteUnexpectedly | Микрофон отключен | — Имеет значение True , когда микрофон внезапно переходит в режим отключения. — Имеет значение False , когда микрофон снова начинает успешно отправлять аудиопоток. |
Микрофон отключен в системе. В большинстве случаев происходит, когда пользователь находится на Службы коммуникации Azure звонка на мобильном устройстве, а телефонный звонок поступает. В большинстве случаев операционная система отключает Службы коммуникации Azure звонок, чтобы пользователь смог ответить на телефонный звонок. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что его звонок отключен, так как телефонный звонок поступил. Дополнительные сведения см. в разделе о том, как лучше обрабатывать отключение ос Службы коммуникации Azure для получения дополнительных сведений. |
microphonePermissionDenied | есть низкий объем от устройства или почти безмолвный в macOS. | — задано значение True , когда разрешение на звук запрещено из системных параметров (аудио). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS. |
В настройках отключен доступ к микрофону. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, что они не разрешали использовать микрофон для вызова Службы коммуникации Azure. |
Значения камеры
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
cameraFreeze | Камера останавливает создание кадров более чем на 5 секунд. | — Имеет значение True , когда локальный видеопоток застыл. Эта диагностика означает, что удаленная сторона видит видео заморожено на экране или означает, что удаленные участники не отрисовывают видео на экране. — Имеет значение False , когда застывшее видео возобновляется и пользователи могут видеть ваше видео в обычном режиме. |
Во время вызова была отключена камера или ошибка сети привела к зависанию камеры. | Если задано True значение, рассмотрите возможность предоставления пользователю уведомления о том, что сеть удаленных участников может быть плохой. Возможно, они отключают камеру для экономии пропускной способности. Дополнительные сведения см. в разделе "Требования к пропускной способности сети" по необходимым возможностям Интернета для вызова Службы коммуникации Azure. |
cameraStartFailed | Общий сбой камеры. | — Имеет значение True , если не удается начать отправку локального видео, поскольку, возможно, устройство камеры было отключено в системе или используется другим процессом. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что не удалось запустить камеру. |
cameraStartTimedOut | Распространенный сценарий, в котором камера неисправна. | — Имеет значение True после истечении времени ожидания начала отправки видеопотока камерой. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
cameraPermissionDenied | В настройках отключен доступ к камере. | — устанавливается, True когда разрешение камеры запрещено из системных параметров (видео). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS Chrome. |
В настройках отключен доступ к камере. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что они не разрешали использовать камеру для вызова Службы коммуникации Azure. |
cameraStoppedUnexpectedly | Сбой камеры | — установлено, True когда камера вступает в состояние остановленного состояния неожиданно. — Задано значение False , когда камера начнет успешно отправлять видеопоток снова. |
Проверка правильности работы камеры. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
Неправильные значения
Имя | Описание | Возможные значения | Случаи использования | Шаги для устранения проблемы |
---|---|---|---|---|
screenshareRecordingDisabled | Системный общий доступ к экрану был отклонен из параметров в параметрах. | — устанавливается, True когда разрешение на общий доступ к экрану запрещено из системных параметров (общий доступ). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS.Chrome. |
В настройках отключена запись экрана. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, что они не позволили предоставить доступ к экрану для вызова Службы коммуникации Azure. |
capturerStartFailed | Сбой общего доступа к системным экранам. | — Задано значение True , когда не удается захватить экран. — Задано значение False при записи экрана, который может быть успешно запущен. |
Если задано True значение, предоставьте визуальное уведомление конечному пользователю, что возможно, возникла проблема с общим доступом к экрану. (Если значение возвращается False , удалите уведомление). |
|
capturerStoppedUnexpectedly | Сбой общего доступа к системным экранам | — установлено, True когда средство захвата экрана вступает в состояние остановленного состояния неожиданно. — Задано значение False , когда средство захвата экрана начинает успешно записываться снова. |
Проверка правильности работы общего доступа к экранам | Если задано True значение, предоставьте пользователю визуальное уведомление, что может возникнуть проблема, которая приводит к остановке общего доступа к экрану. (Если значение возвращается для False удаления уведомления. |
Доступ к диагностика
Пользовательская диагностика — это расширенная функция основного Call
API и позволяет диагностировать активный вызов.
const userFacingDiagnostics = call.feature(Features.UserFacingDiagnostics);
События диагностики, связанные с пользователем
- Подпишитесь на событие, чтобы отслеживать, когда любые диагностические
diagnosticChanged
изменения, связанные с пользователем.
/**
* 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);
Получение последней диагностики для пользователей
- Получите последние диагностические значения, которые были вызваны. Если диагностика не определена, это связано с тем, что она никогда не вызывалась.
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}`
);
Диагностические значения
Доступны следующие диагностика для пользователя:
Сетевые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
networkUnavailable | Нет сети. | — Задано значение True , когда вызов не удается запустить, так как нет доступной сети. — Имеет значение False , когда имеются кандидаты ICE. |
Устройство не подключено к сети. | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе "Оптимизация сети". |
networkRelaysUnreachable | Проблемы с сетью. | — Задано значениеTrue , когда сеть имеет некоторое ограничение, которое не позволяет достичь Службы коммуникации Azure ретрансляторов. — Имеет значение False после совершения нового вызова. |
Во время вызова при включении и отключении сигнала Wi-Fi. | Убедитесь, что правила брандмауэра и сетевая маршрутизация позволяют клиенту обращаться к серверам Майкрософт. Дополнительные сведения см. в разделе Настройка брандмауэра. |
networkReconnectionQuality | Подключение было потеряно, и мы повторно подключимся к сети. | — задано значениеBad , когда сеть отключена — задано значение Poor , когда подключение к транспорту мультимедиа потеряно — Имеет значение Good , когда подключен новый сеанс. |
Низкая пропускная способность, отсутствует подключение к Интернету | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. |
networkReceiveQuality | Индикатор качества входящего потока. | — Задано значениеBad , когда возникает серьезная проблема с получением потока. — Установите значение Poor , когда возникает легкая проблема с получением потока. — задано значение Good , когда нет проблем с получением потока. — Это видно только в том случае, если в вызове есть активный аудиопоток, то есть участник активно выступает в течение определенного периода времени. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Предположим, что конечный пользователь отключает свою камеру для экономии доступной пропускной способности Интернета. |
networkSendQuality | Индикатор качества исходящего потока. | — Установите значениеBad , когда возникла серьезная проблема с отправкой потока. — Задано значение Poor , когда возникает мягкая проблема с отправкой потока. — Установите значение Good , когда нет проблем с отправкой потока. — Аналогично получению диагностики качества, она отображается только в том случае, если в вызове есть активный аудиопоток, то есть участник активно выступает в течение определенного периода времени. Но он работает только в вызове 1:1, так как он полагается на информацию с другой стороны, чтобы проверить качество. Где другая сторона должна сигнализировать о полученных данных. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Кроме того, предположим, что конечный пользователь отключает свою камеру для экономии доступной пропускной способности Интернета. |
Звуковые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
noSpeakerDevicesAvailable | В системе пользователя нет звукового выходного устройства (динамик). | — Имеет значение True , когда в системе отсутствуют динамики и поддерживается выбор динамиков. — Устанавливается значение False , когда в системе поддерживается хотя бы одно устройство динамиков, а выбор динамиков поддерживается. |
Все динамики отключены | Если задано True значение , рассмотрите возможность предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет доступных динамиков. |
speakingWhileMicrophoneIsMuted | Разговор при отключенном микрофоне. | — Имеет значение True , когда локальный микрофон отключен, а локальный пользователь говорит. — устанавливается, False когда локальный пользователь либо останавливает речь, либо отменяет микрофон. — Это событие диагностики может быть автоматически отключено, если оно активируется в течение определенного времени без каких-либо действий пользователя, чтобы избежать шума и обеспечить лучший интерфейс пользователя. Она снова будет включена при возникновении нового действия отключения. |
Во время вызова микрофон отключен и вы говорите в него. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что они могут говорить и не понимают, что звук отключен. |
noMicrophoneDevicesAvailable | В системе пользователя нет устройств записи звука (микрофон) | — Имеет значение, True если в системе нет микрофонов. — Установите значение False , если в системе есть по крайней мере одно устройство микрофона. |
Во время вызова все микрофоны отключены. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет микрофона. Дополнительные сведения см. в разделе "Включение микрофона" из раздела "Manger устройства". |
microphoneNotFunctioning | Микрофон не работает. | — Если True не удалось начать отправку локального аудиопотока, так как устройство микрофона, возможно, было отключено в системе или используется другим процессом. Возникновение этого UFD обычно занимает порядка 10 секунд. — Имеет значение False , когда микрофон начинает успешно отправлять аудиопоток. |
Нет микрофонов, доступ к микрофону отключен в системе | Если задано значение для предоставления True визуального уведомления конечным пользователям о проблеме с микрофоном. |
microphoneMuteUnexpectedly | Микрофон отключен | — Имеет значение True , когда микрофон внезапно переходит в режим отключения. — Имеет значение False , когда микрофон снова начинает успешно отправлять аудиопоток. |
Микрофон отключен в системе. В большинстве случаев происходит, когда пользователь находится на Службы коммуникации Azure звонка на мобильном устройстве, а телефонный звонок поступает. В большинстве случаев операционная система отключает Службы коммуникации Azure звонок, чтобы пользователь смог ответить на телефонный звонок. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что его звонок отключен, так как телефонный звонок поступил. Дополнительные сведения см. в разделе о том, как лучше обрабатывать отключение ос Службы коммуникации Azure для получения дополнительных сведений. |
microphonePermissionDenied | есть низкий объем от устройства или почти безмолвный в macOS. | — задано значение True , когда разрешение на звук запрещено из системных параметров (аудио). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS. |
В настройках отключен доступ к микрофону. | Если задано True значение, предоставьте пользователю визуальное уведомление, которое не позволило использовать микрофон для вызова Службы коммуникации Azure. |
Значения камеры
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
cameraFrozen | Камера останавливает создание кадров более чем на 5 секунд. | — Имеет значение True , когда локальный видеопоток застыл. Эта диагностика означает, что удаленная сторона видит видео заморожено на экране или означает, что удаленные участники не отрисовывают видео на экране. — Имеет значение False , когда застывшее видео возобновляется и пользователи могут видеть ваше видео в обычном режиме. |
Во время вызова была отключена камера или ошибка сети привела к зависанию камеры. | Если задано True значение, рассмотрите возможность предоставления пользователю уведомления о том, что сеть удаленных участников может быть плохой. Возможно, они отключают камеру для экономии пропускной способности. Дополнительные сведения см. в разделе "Требования к пропускной способности сети" по необходимым возможностям Интернета для вызова Службы коммуникации Azure. |
cameraStartFailed | Общий сбой камеры. | — Если True не удалось начать отправку локального видео, так как устройство камеры, возможно, было отключено в системе или используется другим процессом~. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что не удалось запустить камеру. |
cameraStartTimedOut | Распространенный сценарий, в котором камера неисправна. | — Имеет значение True после истечении времени ожидания начала отправки видеопотока камерой. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
cameraPermissionDenied | В настройках отключен доступ к камере. | — устанавливается, True когда разрешение камеры запрещено из системных параметров (видео). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS Chrome. |
В настройках отключен доступ к камере. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, что они не разрешали использовать камеру для вызова Службы коммуникации Azure. |
cameraStoppedUnexpectedly | Сбой камеры | — установлено, True когда камера вступает в состояние остановленного состояния неожиданно. — Задано значение False , когда камера начнет успешно отправлять видеопоток снова. |
Проверка правильности работы камеры. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
Только собственный режим
Имя | Описание | Возможные значения | Случаи использования | Шаги для устранения проблемы |
---|---|---|---|---|
speakerVolumeIsZero | Ноль тома на устройстве (динамик). | — задано значение True , когда громкость динамиков равна нулю. — задано значение False , когда громкость динамиков не равна нулю. |
Не слышат звук от участников по телефону. | Если задано True значение, возможно, у вас есть случайное значение тома с наименьшим(нулем). |
speakerMuted | Устройство динамиков отключено. | — задано значение True , когда устройство динамика отключается. — устанавливается, False когда устройство динамика не отключается. |
Не слышат звук от участников по телефону. | Если задано True значение, возможно, вы случайно отключили динамик. |
speakerBusy | Динамик уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий попросил использовать устройство в монопольном режиме. | — задано, True когда время ожидания получения потока динамиков устройства (звук). — установлено значение False , когда приобретение говорящего успешно завершено. |
Не слышат звук от участников по вызову через динамик. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, чтобы проверить, использует ли другое приложение динамик и попробуйте закрыть его. |
speakerNotFunctioning | Динамик не работает (не удалось инициализировать клиент звукового устройства или устройство неактивно в течение более 5 секунд) | — задано значение True , когда динамик недоступен или время ожидания получения потока устройств (звук). — установлено значение False , когда приобретение говорящего успешно завершено. |
Не слышат звук от участников по вызову через динамик. | Попробуйте проверить состояние устройства говорящего. |
микрофонBusy | Микрофон уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий попросил использовать устройство в монопольном режиме. | — устанавливается, True когда время ожидания получения потока потока микрофона (звук). — установлено значение False , когда приобретение микрофона успешно завершено. |
Ваш звук не достигает других участников звонка. | Если задано True значение, предоставьте пользователю визуальное уведомление, чтобы проверить, используется ли другое приложение с микрофоном и попробуйте закрыть его. |
Доступ к диагностика
Пользовательская диагностика — это расширенная функция основного Call
API и позволяет диагностировать активный вызов.
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
События диагностики, связанные с пользователем
- Получите объект компонента и добавьте прослушиватели в события диагностика.
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);
Получение последней диагностики для пользователей
- Получите последние диагностические значения, которые были вызваны в текущем вызове. Если мы по-прежнему не получили значение для диагностики, создается исключение.
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 ...
Диагностические значения
Доступны следующие диагностика для пользователя:
Сетевые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
networkUnavailable | Нет сети. | — Задано значение True , когда вызов не удается запустить, так как нет доступной сети. — Имеет значение False , когда имеются кандидаты ICE. |
Устройство не подключено к сети. | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе "Оптимизация сети". |
networkRelaysUnreachable | Проблемы с сетью. | — Задано значениеTrue , когда сеть имеет некоторое ограничение, которое не позволяет достичь Службы коммуникации Azure ретрансляторов. — Имеет значение False после совершения нового вызова. |
Во время вызова при включении и отключении сигнала Wi-Fi. | Убедитесь, что правила брандмауэра и сетевая маршрутизация позволяют клиенту обращаться к серверам Майкрософт. Дополнительные сведения см. в разделе Настройка брандмауэра. |
networkReconnectionQuality | Подключение было потеряно, и мы повторно подключимся к сети. | — задано значениеBad , когда сеть отключена — задано значение Poor , когда подключение к транспорту мультимедиа потеряно — Имеет значение Good , когда подключен новый сеанс. |
Низкая пропускная способность, отсутствует подключение к Интернету | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. |
networkReceiveQuality | Индикатор качества входящего потока. | — Задано значениеBad , когда возникает серьезная проблема с получением потока. — Установите значение Poor , когда возникает легкая проблема с получением потока. — задано значение Good , когда нет проблем с получением потока. — Это видно только в том случае, если в вызове есть активный аудиопоток, то есть участник активно выступает в течение определенного периода времени. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Предположим, что конечный пользователь отключает свою камеру для экономии доступной пропускной способности Интернета. |
networkSendQuality | Индикатор качества исходящего потока. | — Установите значениеBad , когда возникла серьезная проблема с отправкой потока. — Задано значение Poor , когда возникает мягкая проблема с отправкой потока. — Установите значение Good , когда нет проблем с отправкой потока. — Аналогично получению диагностики качества, она отображается только в том случае, если в вызове есть активный аудиопоток, то есть участник активно выступает в течение определенного периода времени. Но он работает только в вызове 1:1, так как он полагается на информацию с другой стороны, чтобы проверить качество. Где другая сторона должна сигнализировать о полученных данных. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Кроме того, предположим, что конечный пользователь отключает свою камеру для экономии доступной пропускной способности Интернета. |
Звуковые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
noSpeakerDevicesAvailable | В системе пользователя нет звукового выходного устройства (динамик). | — Имеет значение True , когда в системе отсутствуют динамики и поддерживается выбор динамиков. — Устанавливается значение False , когда в системе поддерживается хотя бы одно устройство динамиков, а выбор динамиков поддерживается. |
Все динамики отключены | Если задано True значение , рассмотрите возможность предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет доступных динамиков. |
speakingWhileMicrophoneIsMuted | Разговор при отключенном микрофоне. | — Имеет значение True , когда локальный микрофон отключен, а локальный пользователь говорит. — устанавливается, False когда локальный пользователь либо останавливает речь, либо отменяет микрофон. — Это событие диагностики может быть автоматически отключено, если оно активируется в течение определенного времени без каких-либо действий пользователя, чтобы избежать шума и обеспечить лучший интерфейс пользователя. Она снова будет включена при возникновении нового действия отключения. |
Во время вызова микрофон отключен и вы говорите в него. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что они могут говорить и не понимают, что звук отключен. |
noMicrophoneDevicesAvailable | В системе пользователя нет устройств записи звука (микрофон) | — Имеет значение, True если в системе нет микрофонов. — Установите значение False , если в системе есть по крайней мере одно устройство микрофона. |
Во время вызова все микрофоны отключены. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет микрофона. Дополнительные сведения см. в разделе "Включение микрофона" из раздела "Manger устройства". |
microphoneNotFunctioning | Микрофон не работает. | — Если True не удалось начать отправку локального аудиопотока, так как устройство микрофона, возможно, было отключено в системе или используется другим процессом. Возникновение этого UFD обычно занимает порядка 10 секунд. — Имеет значение False , когда микрофон начинает успешно отправлять аудиопоток. |
Нет микрофонов, доступ к микрофону отключен в системе | Если задано значение для предоставления True визуального уведомления конечным пользователям о проблеме с микрофоном. |
microphoneMuteUnexpectedly | Микрофон отключен | — Имеет значение True , когда микрофон внезапно переходит в режим отключения. — Имеет значение False , когда микрофон снова начинает успешно отправлять аудиопоток. |
Микрофон отключен в системе. В большинстве случаев происходит, когда пользователь находится на Службы коммуникации Azure звонка на мобильном устройстве, а телефонный звонок поступает. В большинстве случаев операционная система отключает Службы коммуникации Azure звонок, чтобы пользователь смог ответить на телефонный звонок. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что его звонок отключен, так как телефонный звонок поступил. Дополнительные сведения см. в разделе о том, как лучше обрабатывать отключение ос Службы коммуникации Azure для получения дополнительных сведений. |
microphonePermissionDenied | есть низкий объем от устройства или почти безмолвный в macOS. | — задано значение True , когда разрешение на звук запрещено из системных параметров (аудио). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS. |
В настройках отключен доступ к микрофону. | Если задано True значение, предоставьте пользователю визуальное уведомление, которое не позволило использовать микрофон для вызова Службы коммуникации Azure. |
Значения камеры
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
cameraFrozen | Камера останавливает создание кадров более чем на 5 секунд. | — Имеет значение True , когда локальный видеопоток застыл. Эта диагностика означает, что удаленная сторона видит видео заморожено на экране или означает, что удаленные участники не отрисовывают видео на экране. — Имеет значение False , когда застывшее видео возобновляется и пользователи могут видеть ваше видео в обычном режиме. |
Во время вызова была отключена камера или ошибка сети привела к зависанию камеры. | Если задано True значение, рассмотрите возможность предоставления пользователю уведомления о том, что сеть удаленных участников может быть плохой. Возможно, они отключают камеру для экономии пропускной способности. Дополнительные сведения см. в разделе "Требования к пропускной способности сети" по необходимым возможностям Интернета для вызова Службы коммуникации Azure. |
cameraStartFailed | Общий сбой камеры. | — Если True не удалось начать отправку локального видео, так как устройство камеры, возможно, было отключено в системе или используется другим процессом~. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что не удалось запустить камеру. |
cameraStartTimedOut | Распространенный сценарий, в котором камера неисправна. | — Имеет значение True после истечении времени ожидания начала отправки видеопотока камерой. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
cameraPermissionDenied | В настройках отключен доступ к камере. | — устанавливается, True когда разрешение камеры запрещено из системных параметров (видео). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS Chrome. |
В настройках отключен доступ к камере. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, что они не разрешали использовать камеру для вызова Службы коммуникации Azure. |
cameraStoppedUnexpectedly | Сбой камеры | — установлено, True когда камера вступает в состояние остановленного состояния неожиданно. — Задано значение False , когда камера начнет успешно отправлять видеопоток снова. |
Проверка правильности работы камеры. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
Только собственный режим
Имя | Описание | Возможные значения | Случаи использования | Шаги для устранения проблемы |
---|---|---|---|---|
speakerVolumeIsZero | Ноль тома на устройстве (динамик). | — задано значение True , когда громкость динамиков равна нулю. — задано значение False , когда громкость динамиков не равна нулю. |
Не слышат звук от участников по телефону. | Если задано True значение, возможно, у вас есть случайное значение тома с наименьшим(нулем). |
speakerMuted | Устройство динамиков отключено. | — задано значение True , когда устройство динамика отключается. — устанавливается, False когда устройство динамика не отключается. |
Не слышат звук от участников по телефону. | Если задано True значение, возможно, вы случайно отключили динамик. |
speakerBusy | Динамик уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий попросил использовать устройство в монопольном режиме. | — задано, True когда время ожидания получения потока динамиков устройства (звук). — установлено значение False , когда приобретение говорящего успешно завершено. |
Не слышат звук от участников по вызову через динамик. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, чтобы проверить, использует ли другое приложение динамик и попробуйте закрыть его. |
speakerNotFunctioning | Динамик не работает (не удалось инициализировать клиент звукового устройства или устройство неактивно в течение более 5 секунд) | — задано значение True , когда динамик недоступен или время ожидания получения потока устройств (звук). — установлено значение False , когда приобретение говорящего успешно завершено. |
Не слышат звук от участников по вызову через динамик. | Попробуйте проверить состояние устройства говорящего. |
микрофонBusy | Микрофон уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий попросил использовать устройство в монопольном режиме. | — устанавливается, True когда время ожидания получения потока потока микрофона (звук). — установлено значение False , когда приобретение микрофона успешно завершено. |
Ваш звук не достигает других участников звонка. | Если задано True значение, предоставьте пользователю визуальное уведомление, чтобы проверить, используется ли другое приложение с микрофоном и попробуйте закрыть его. |
Доступ к диагностика
Пользовательская диагностика — это расширенная функция основного Call
API и позволяет диагностировать активный вызов.
let userFacingDiagnostics = self.call?.feature(Features.localUserDiagnostics)
События диагностики, связанные с пользователем
- Реализуйте делегаты для
media
иnetwork
диагностических источников.MediaDiagnosticsDelegate
и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...
}
}
- Удерживайте ссылку на
media
иnetwork
диагностика и задайте объект делегата для прослушивания событий.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver
Примечание.
Если вы включили CallKit
пакет SDK или реализуете интеграцию CallKit в приложении, отчеты о отключенном состоянии в CallKit могут привести к тому, что приложение ослабляет удержание на микрофон из-за причин конфиденциальности, что приведет didIsSpeakingWhileMicrophoneIsMuted
к тому, что событие не будет работать должным образом, так как мы не можем записать входные данные с устройства микрофона, чтобы обнаружить, что пользователь говорит.
Получение последней диагностики для пользователей
- Получите последние диагностические значения, которые были вызваны. Если мы по-прежнему не получили значение для диагностики или
nil
.unknown
возвращается.
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.
Диагностические значения
Доступны следующие диагностика для пользователя:
Сетевые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
networkUnavailable | Нет сети. | — Задано значение True , когда вызов не удается запустить, так как нет доступной сети. — Имеет значение False , когда имеются кандидаты ICE. |
Устройство не подключено к сети. | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе "Оптимизация сети". |
networkRelaysUnreachable | Проблемы с сетью. | — Задано значениеTrue , когда сеть имеет некоторое ограничение, которое не позволяет достичь Службы коммуникации Azure ретрансляторов. — Имеет значение False после совершения нового вызова. |
Во время вызова при включении и отключении сигнала Wi-Fi. | Убедитесь, что правила брандмауэра и сетевая маршрутизация позволяют клиенту обращаться к серверам Майкрософт. Дополнительные сведения см. в разделе Настройка брандмауэра. |
networkReconnectionQuality | Подключение было потеряно, и мы повторно подключимся к сети. | — задано значениеBad , когда сеть отключена — задано значение Poor , когда подключение к транспорту мультимедиа потеряно — Имеет значение Good , когда подключен новый сеанс. |
Низкая пропускная способность, отсутствует подключение к Интернету | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. |
networkReceiveQuality | Индикатор качества входящего потока. | — Задано значениеBad , когда возникает серьезная проблема с получением потока. — Установите значение Poor , когда возникает легкая проблема с получением потока. — задано значение Good , когда нет проблем с получением потока. — Это видно только в том случае, если в вызове есть активный аудиопоток, то есть участник активно выступает в течение определенного периода времени. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Предположим, что конечный пользователь отключает свою камеру для экономии доступной пропускной способности Интернета. |
networkSendQuality | Индикатор качества исходящего потока. | — Установите значениеBad , когда возникла серьезная проблема с отправкой потока. — Задано значение Poor , когда возникает мягкая проблема с отправкой потока. — Установите значение Good , когда нет проблем с отправкой потока. — Аналогично получению диагностики качества, она отображается только в том случае, если в вызове есть активный аудиопоток, то есть участник активно выступает в течение определенного периода времени. Но он работает только в вызове 1:1, так как он полагается на информацию с другой стороны, чтобы проверить качество. Где другая сторона должна сигнализировать о полученных данных. |
Низкая пропускная способность | Убедитесь, что звонок имеет надежное подключение к Интернету, которое может поддерживать голосовой звонок. Дополнительные сведения см. в разделе требования к пропускной способности сети. Кроме того, предположим, что конечный пользователь отключает свою камеру для экономии доступной пропускной способности Интернета. |
Звуковые значения
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
noSpeakerDevicesAvailable | В системе пользователя нет звукового выходного устройства (динамик). | — Имеет значение True , когда в системе отсутствуют динамики и поддерживается выбор динамиков. — Устанавливается значение False , когда в системе поддерживается хотя бы одно устройство динамиков, а выбор динамиков поддерживается. |
Все динамики отключены | Если задано True значение , рассмотрите возможность предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет доступных динамиков. |
speakingWhileMicrophoneIsMuted | Разговор при отключенном микрофоне. | — Имеет значение True , когда локальный микрофон отключен, а локальный пользователь говорит. — устанавливается, False когда локальный пользователь либо останавливает речь, либо отменяет микрофон. — Это событие диагностики может быть автоматически отключено, если оно активируется в течение определенного времени без каких-либо действий пользователя, чтобы избежать шума и обеспечить лучший интерфейс пользователя. Она снова будет включена при возникновении нового действия отключения. |
Во время вызова микрофон отключен и вы говорите в него. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что они могут говорить и не понимают, что звук отключен. |
noMicrophoneDevicesAvailable | В системе пользователя нет устройств записи звука (микрофон) | — Имеет значение, True если в системе нет микрофонов. — Установите значение False , если в системе есть по крайней мере одно устройство микрофона. |
Во время вызова все микрофоны отключены. | Если задано значение, чтобы рассмотреть возможность True предоставления визуального уведомления конечным пользователям о том, что у текущего сеанса вызова нет микрофона. Дополнительные сведения см. в разделе "Включение микрофона" из раздела "Manger устройства". |
microphoneNotFunctioning | Микрофон не работает. | — Если True не удалось начать отправку локального аудиопотока, так как устройство микрофона, возможно, было отключено в системе или используется другим процессом. Возникновение этого UFD обычно занимает порядка 10 секунд. — Имеет значение False , когда микрофон начинает успешно отправлять аудиопоток. |
Нет микрофонов, доступ к микрофону отключен в системе | Если задано значение для предоставления True визуального уведомления конечным пользователям о проблеме с микрофоном. |
microphoneMuteUnexpectedly | Микрофон отключен | — Имеет значение True , когда микрофон внезапно переходит в режим отключения. — Имеет значение False , когда микрофон снова начинает успешно отправлять аудиопоток. |
Микрофон отключен в системе. В большинстве случаев происходит, когда пользователь находится на Службы коммуникации Azure звонка на мобильном устройстве, а телефонный звонок поступает. В большинстве случаев операционная система отключает Службы коммуникации Azure звонок, чтобы пользователь смог ответить на телефонный звонок. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что его звонок отключен, так как телефонный звонок поступил. Дополнительные сведения см. в разделе о том, как лучше обрабатывать отключение ос Службы коммуникации Azure для получения дополнительных сведений. |
microphonePermissionDenied | есть низкий объем от устройства или почти безмолвный в macOS. | — задано значение True , когда разрешение на звук запрещено из системных параметров (аудио). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS. |
В настройках отключен доступ к микрофону. | Если задано True значение, предоставьте пользователю визуальное уведомление, которое не позволило использовать микрофон для вызова Службы коммуникации Azure. |
Значения камеры
Имя | Описание | Возможные значения | Случаи использования | Шаги по устранению |
---|---|---|---|---|
cameraFrozen | Камера останавливает создание кадров более чем на 5 секунд. | — Имеет значение True , когда локальный видеопоток застыл. Эта диагностика означает, что удаленная сторона видит видео заморожено на экране или означает, что удаленные участники не отрисовывают видео на экране. — Имеет значение False , когда застывшее видео возобновляется и пользователи могут видеть ваше видео в обычном режиме. |
Во время вызова была отключена камера или ошибка сети привела к зависанию камеры. | Если задано True значение, рассмотрите возможность предоставления пользователю уведомления о том, что сеть удаленных участников может быть плохой. Возможно, они отключают камеру для экономии пропускной способности. Дополнительные сведения см. в разделе "Требования к пропускной способности сети" по необходимым возможностям Интернета для вызова Службы коммуникации Azure. |
cameraStartFailed | Общий сбой камеры. | — Если True не удалось начать отправку локального видео, так как устройство камеры, возможно, было отключено в системе или используется другим процессом~. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что не удалось запустить камеру. |
cameraStartTimedOut | Распространенный сценарий, в котором камера неисправна. | — Имеет значение True после истечении времени ожидания начала отправки видеопотока камерой. — Имеет значение False , если выбранное устройство камеры снова успешно отправляет локальное видео. |
Сбои камеры | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
cameraPermissionDenied | В настройках отключен доступ к камере. | — устанавливается, True когда разрешение камеры запрещено из системных параметров (видео). — Имеет значение False при успешном получении потока. Примечание. Эта диагностика работает только в macOS Chrome. |
В настройках отключен доступ к камере. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, что они не разрешали использовать камеру для вызова Службы коммуникации Azure. |
cameraStoppedUnexpectedly | Сбой камеры | — установлено, True когда камера вступает в состояние остановленного состояния неожиданно. — Задано значение False , когда камера начнет успешно отправлять видеопоток снова. |
Проверка правильности работы камеры. | Если задано True значение, предоставьте пользователю визуальное уведомление о том, что у их камеры могут возникнуть проблемы. (Если значение возвращается для False удаления уведомления. |
Только собственный режим
Имя | Описание | Возможные значения | Случаи использования | Шаги для устранения проблемы |
---|---|---|---|---|
speakerVolumeIsZero | Ноль тома на устройстве (динамик). | — задано значение True , когда громкость динамиков равна нулю. — задано значение False , когда громкость динамиков не равна нулю. |
Не слышат звук от участников по телефону. | Если задано True значение, возможно, у вас есть случайное значение тома с наименьшим(нулем). |
speakerMuted | Устройство динамиков отключено. | — задано значение True , когда устройство динамика отключается. — устанавливается, False когда устройство динамика не отключается. |
Не слышат звук от участников по телефону. | Если задано True значение, возможно, вы случайно отключили динамик. |
speakerBusy | Динамик уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий попросил использовать устройство в монопольном режиме. | — задано, True когда время ожидания получения потока динамиков устройства (звук). — установлено значение False , когда приобретение говорящего успешно завершено. |
Не слышат звук от участников по вызову через динамик. | Если задано True значение, предоставьте визуальное уведомление конечному пользователю, чтобы проверить, использует ли другое приложение динамик и попробуйте закрыть его. |
speakerNotFunctioning | Динамик не работает (не удалось инициализировать клиент звукового устройства или устройство неактивно в течение более 5 секунд) | — задано значение True , когда динамик недоступен или время ожидания получения потока устройств (звук). — установлено значение False , когда приобретение говорящего успешно завершено. |
Не слышат звук от участников по вызову через динамик. | Попробуйте проверить состояние устройства говорящего. |
микрофонBusy | Микрофон уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий попросил использовать устройство в монопольном режиме. | — устанавливается, True когда время ожидания получения потока потока микрофона (звук). — установлено значение False , когда приобретение микрофона успешно завершено. |
Ваш звук не достигает других участников звонка. | Если задано True значение, предоставьте пользователю визуальное уведомление, чтобы проверить, используется ли другое приложение с микрофоном и попробуйте закрыть его. |
Доступ к диагностика
Пользовательская диагностика — это расширенная функция основного Call
API и позволяет диагностировать активный вызов.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
События диагностики, связанные с пользователем
- Реализуйте прослушиватели для диагностических событий.
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
- Задайте методы событий для прослушивания событий.
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 ...
Получение последней диагностики для пользователей
- Получите последние диагностические значения, которые были вызваны в текущем вызове. Если мы по-прежнему не получили значение для диагностики
null
или.unknown
возвращается.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
this.networkDiagnostics = diagnosticsCallFeature.Network;
this.mediaDiagnostics = diagnosticsCallFeature.Media;
bool? lastSpeakerNotFunctionValue = this.mediaDiagnostics.GetLatestDiagnostics().IsSpeakerNotFunctioning; // Boolean?
bool? lastNetworkRelayNotReachableValue = this.networkDiagnostics.GetLatestDiagnostics().IsNetworkRelaysUnreachable; // Boolean?
DiagnosticQuality lastReceiveQualityValue = this.networkDiagnostics.GetLatestDiagnostics().NetworkReceiveQuality; // DiagnosticQuality (.good, .poor, .bad)
// or .unknown if there isn't a diagnostic for this.