Compartilhar via


Diagnóstico voltado para o usuário

Ao trabalhar com chamadas nos Serviços de Comunicação do Azure, você pode encontrar problemas que afetam seus clientes. Para ajudar com isso, os Serviços de Comunicação do Azure fornecem um recurso chamado “Diagnóstico voltado para o usuário” (UFD) que pode ser usado para examinar várias propriedades de uma chamada a fim de determinar qual é o problema. O recurso Diagnóstico voltado para o usuário consiste em eventos disparados que podem indicar, devido a um problema subjacente (rede ruim, o usuário está com o mudo ativado no microfone), que um usuário pode ter uma experiência ruim. Depois que um Diagnóstico voltado para o usuário for disparado, considere fornecer comentários a um usuário final, pois ele pode estar tendo algum problema subjacente. No entanto, a saída do Diagnóstico voltado para o usuário é somente informativa e a pilha de chamadas não faz alterações com base no disparo de um Diagnóstico voltado para o usuário.

Valores de diagnóstico

Os seguintes diagnósticos voltados para o usuário estão disponíveis:

Valores de rede

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
noNetwork Não há rede disponível. – Definido como True quando uma chamada falha ao iniciar porque não há rede disponível.
– Definido como False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelaysNotReachable Problemas com uma rede. – Definido como True quando a rede tiver alguma restrição que não permite que você alcance retransmissões dos Serviços de Comunicação do Azure.
– Definido como False ao fazer uma nova chamada.
Durante uma chamada quando o sinal Wi-Fi liga e desliga. Verifique se as regras de firewall e o roteamento de rede permitem que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, confira a seção Configuração de firewall.
networkReconnect A conexão foi perdida e estamos nos reconectando à rede. – Definido como Bad quando a rede estiver desconectada
– Definido como Poor quando a conectividade de transporte de mídia é perdida
– Definido como Good quando uma nova sessão estiver conectada.
Baixa largura de banda, sem Internet Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
networkReceiveQuality Um indicador sobre a qualidade do fluxo de entrada. – Definido como Bad quando há um problema grave ao receber o fluxo.
– Definido como Poor quando há um problema moderado ao receber o fluxo.
– Definido como Good quando não há problema ao receber o fluxo.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.
networkSendQuality Um indicador sobre a qualidade do fluxo de saída. – Definido como Bad quando há um problema grave ao enviar o fluxo.
– Definido como Poor quando há um problema moderado ao enviar o fluxo.
– Definido como Good quando não há problema ao enviar o fluxo.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Além disso, sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
noSpeakerDevicesEnumerated não há dispositivo de saída de áudio (alto-falante) no sistema do usuário. – Definido como True quando não há dispositivos de alto-falante no sistema e há suporte para a seleção de alto-falante.
– Definido como False quando há pelo menos um dispositivo de alto-falante no sistema e há suporte para a seleção de alto-falante.
Todos os alto-falantes estão desconectados Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem alto-falantes disponíveis.
speakingWhileMicrophoneIsMuted Falando enquanto o mudo está ativado. – Definido como True quando o microfone local está no mudo e o usuário local está falando.
– Definido como False quando o usuário local para de falar ou não desativa o mudo.
* Observação: atualmente, essa opção não tem suporte no Safari porque as amostras de nível de áudio são obtidas de estatísticas de WebRTC.
Durante uma chamada, ative o mudo e fale no microfone. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que ele pode estar falando sem perceber que o áudio está mudo.
noMicrophoneDevicesEnumerated Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário – Definido como True quando não houver dispositivos de microfone no sistema.
– Definido como False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desconectados durante a chamada. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem um microfone. Para obter mais informações, consulte a seção habilitar o microfone no gerenciador de dispositivos.
microphoneNotFunctioning O microfone não está funcionando. – Definido como True quando o envio de áudio local não for iniciado porque o dispositivo de microfone pode ter sido desabilitado no sistema ou está sendo usado por outro processo. Esse UFD leva cerca de 10 segundos para ser gerado.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito novamente.
Nenhum microfone disponível, acesso ao microfone desabilitado em um sistema Quando o valor for definido como True, dê uma notificação visual ao usuário final de que há um problema com o microfone.
microphoneMuteUnexpectedly O microfone está no mudo - Definido como True quando o microfone ativa o mudo inesperadamente.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito
O microfone está mudo no sistema. A maioria dos casos acontece quando o usuário está em uma chamada dos Serviços de Comunicação do Azure em um dispositivo móvel e chega uma chamada telefônica. Na maioria dos casos, o sistema operacional silencia a chamada dos Serviços de Comunicação do Azure para que um usuário possa atender à chamada telefônica. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a chamada foi silenciada devido à chegada de uma chamada telefônica. Para obter mais informações, veja como melhor lidar com o Sistema operacional silenciando uma chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microphonePermissionDenied o volume no dispositivo está baixo ou quase inaudível no macOS. – Definido como True quando a permissão de áudio é negada das configurações do sistema (áudio).
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS.
As permissões de microfone estão desabilitadas nas Configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar o microfone para uma chamada dos Serviços de Comunicação do Azure.

Valores de câmera

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
cameraFreeze A câmera para de produzir quadros por mais de 5 segundos. - Definido como True quando o fluxo de vídeo local está congelado. Esse diagnóstico significa que o lado remoto está vendo seu vídeo congelado na tela ou que os participantes remotos não estão renderizando seu vídeo na tela.
– Definido como False quando o congelamento termina e os usuários podem ver seu vídeo normalmente.
A câmera foi perdida durante a chamada ou uma rede ruim fez com que a câmera congelasse. Quando o valor for definido como True, considere dar uma notificação ao usuário final de que a rede do participante remoto pode ser ruim; é possível sugerir que ele desligue a câmera para preservar largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as capacidade de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica de câmera. – Definido como True quando o envio de vídeo local não for iniciado porque o dispositivo de câmera pode ter sido desabilitado no sistema ou está sendo usado por outro processo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera falhou ao iniciar.
cameraStartTimedOut Cenário comum em que a câmera está em mau estado. - Definido como True quando o dispositivo de câmera atingir tempo limite para começar a enviar o fluxo de vídeo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. – Definido como True quando a permissão de câmera é negada das configurações do sistema.
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS Chrome.
As permissões de câmera estão desabilitadas nas configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar a câmera para uma chamada dos Serviços de Comunicação do Azure.
cameraStoppedUnexpectedly Mau funcionamento da câmera – Definido como True quando a câmera entra em estado parado inesperadamente.
– Definido como False quando a câmera começa a enviar o fluxo de vídeo com êxito novamente.
Verificar se a câmera está funcionando corretamente. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).

Valores diversos

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
screenshareRecordingDisabled O compartilhamento de tela do sistema foi negado das preferências nas Configurações. – Definido como True quando a permissão de compartilhamento de tela é negada das configurações do sistema (compartilhamento).
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS.Chrome.
A gravação de tela está desabilitada nas Configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para compartilhar a tela para uma chamada dos Serviços de Comunicação do Azure.
capturerStartFailed Falha no compartilhamento da tela do sistema. – Definido como True quando há falha ao iniciar a captura da tela.
– Definido como False quando a captura da tela pode ser iniciada com êxito.
Quando o valor for definido como True, dê uma notificação visual ao usuário final de que possivelmente houve um problema ao compartilhar a tela. (Quando o valor for definido de volta para False, remova a notificação).
capturerStoppedUnexpectedly Mau funcionamento do compartilhamento da tela do sistema – Definido como True quando o capturador de tela entra em estado parado inesperadamente.
– Definido como False quando o capturador de tela começa a capturar com êxito novamente.
Verificar se o compartilhamento de tela está funcionando corretamente Quando o valor for definido como True, dê uma notificação visual ao usuário final de que possivelmente há um problema que interrompe o compartilhamento da tela. (Quando o valor é definido de volta para False remover a notificação).

Acessar diagnóstico

O diagnóstico voltado para o usuário é um recurso estendido da API Call principal e permite diagnosticar uma chamada ativa.

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

Eventos de diagnóstico voltado para o usuário

  • Assine o evento diagnosticChanged para monitorar quando qualquer diagnóstico voltado ao usuário for alterado.
/**
 *  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);

Obter os mais recentes diagnósticos voltados para o usuário

  • Obtenha os valores de diagnóstico mais recentes gerados. Se um diagnóstico for indefinido, é porque ele nunca foi gerado.
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}`
);

Valores de diagnóstico

Os seguintes diagnósticos voltados para o usuário estão disponíveis:

Valores de rede

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
networkUnavailable Não há rede disponível. – Definido como True quando uma chamada falha ao iniciar porque não há rede disponível.
– Definido como False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelaysUnreachable Problemas com uma rede. – Definido como True quando a rede tiver alguma restrição que não permite que você alcance retransmissões dos Serviços de Comunicação do Azure.
– Definido como False ao fazer uma nova chamada.
Durante uma chamada quando o sinal Wi-Fi liga e desliga. Verifique se as regras de firewall e o roteamento de rede permitem que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, confira a seção Configuração de firewall.
networkReconnectionQuality A conexão foi perdida e estamos nos reconectando à rede. – Definido como Bad quando a rede estiver desconectada
– Definido como Poor quando a conectividade de transporte de mídia é perdida
– Definido como Good quando uma nova sessão estiver conectada.
Baixa largura de banda, sem Internet Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
networkReceiveQuality Um indicador sobre a qualidade do fluxo de entrada. – Definido como Bad quando há um problema grave ao receber o fluxo.
– Definido como Poor quando há um problema moderado ao receber o fluxo.
– Definido como Good quando não há problema ao receber o fluxo.
– Só ficará visível se houver um fluxo de áudio ativo na chamada, o que significa que um participante está falando ativamente por um período de tempo.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.
networkSendQuality Um indicador sobre a qualidade do fluxo de saída. – Definido como Bad quando há um problema grave ao enviar o fluxo.
– Definido como Poor quando há um problema moderado ao enviar o fluxo.
– Definido como Good quando não há problema ao enviar o fluxo.
– Semelhante ao recebimento do diagnóstico de qualidade, ele só ficará visível se houver um fluxo de áudio ativo na chamada, o que significa que um participante está falando ativamente por um período de tempo. Porém, ele só funciona em uma chamada individual, pois depende de informações do outro lado para verificar a qualidade. Onde o outro lado precisa sinalizar os dados recebidos.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Além disso, sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
noSpeakerDevicesAvailable não há dispositivo de saída de áudio (alto-falante) no sistema do usuário. – Definido como True quando não há dispositivos de alto-falante no sistema e há suporte para a seleção de alto-falante.
– Definido como False quando há pelo menos um dispositivo de alto-falante no sistema e há suporte para a seleção de alto-falante.
Todos os alto-falantes estão desconectados Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem alto-falantes disponíveis.
speakingWhileMicrophoneIsMuted Falando enquanto o mudo está ativado. – Definido como True quando o microfone local está no mudo e o usuário local está falando.
– Definido como False quando o usuário local para de falar ou não desativa o mudo.
– Esse evento de diagnóstico pode ser desabilitado automaticamente se for disparado uma determinada quantidade de vezes sem qualquer ação do usuário para evitar ruídos e fornecer uma melhor experiência do usuário. Ele será habilitado novamente quando ocorrer uma nova ação de ativar mudo.
Durante uma chamada, ative o mudo e fale no microfone. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que ele pode estar falando sem perceber que o áudio está mudo.
noMicrophoneDevicesAvailable Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário – Definido como True quando não houver dispositivos de microfone no sistema.
– Definido como False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desconectados durante a chamada. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem um microfone. Para obter mais informações, consulte a seção habilitar o microfone no gerenciador de dispositivos.
microphoneNotFunctioning O microfone não está funcionando. – Definido como True quando o envio do fluxo de áudio local não for iniciado porque o dispositivo de microfone pode ter sido desabilitado no sistema ou está sendo usado por outro processo. Esse UFD leva cerca de 10 segundos para ser gerado.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito novamente.
Nenhum microfone disponível, acesso ao microfone desabilitado em um sistema Quando o valor for definido como True, dê uma notificação visual ao usuário final de que há um problema com o microfone.
microphoneMuteUnexpectedly O microfone está no mudo - Definido como True quando o microfone ativa o mudo inesperadamente.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito
O microfone está mudo no sistema. A maioria dos casos acontece quando o usuário está em uma chamada dos Serviços de Comunicação do Azure em um dispositivo móvel e chega uma chamada telefônica. Na maioria dos casos, o sistema operacional silencia a chamada dos Serviços de Comunicação do Azure para que um usuário possa atender à chamada telefônica. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a chamada foi silenciada devido à chegada de uma chamada telefônica. Para obter mais informações, veja como melhor lidar com o Sistema operacional silenciando uma chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microphonePermissionDenied o volume no dispositivo está baixo ou quase inaudível no macOS. – Definido como True quando a permissão de áudio é negada das configurações do sistema (áudio).
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS.
As permissões de microfone estão desabilitadas nas Configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar o microfone para uma chamada dos Serviços de Comunicação do Azure.

Valores de câmera

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
cameraFrozen A câmera para de produzir quadros por mais de 5 segundos. - Definido como True quando o fluxo de vídeo local está congelado. Esse diagnóstico significa que o lado remoto está vendo seu vídeo congelado na tela ou que os participantes remotos não estão renderizando seu vídeo na tela.
– Definido como False quando o congelamento termina e os usuários podem ver seu vídeo normalmente.
A câmera foi perdida durante a chamada ou uma rede ruim fez com que a câmera congelasse. Quando o valor for definido como True, considere dar uma notificação ao usuário final de que a rede do participante remoto pode ser ruim; é possível sugerir que ele desligue a câmera para preservar largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as capacidade de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica de câmera. – Definido como True quando o envio de vídeo local não for iniciado porque o dispositivo de câmera pode ter sido desabilitado no sistema ou está sendo usado por outro processo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera falhou ao iniciar.
cameraStartTimedOut Cenário comum em que a câmera está em mau estado. - Definido como True quando o dispositivo de câmera atingir tempo limite para começar a enviar o fluxo de vídeo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. – Definido como True quando a permissão de câmera é negada das configurações do sistema.
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS Chrome.
As permissões de câmera estão desabilitadas nas configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar a câmera para uma chamada dos Serviços de Comunicação do Azure.
cameraStoppedUnexpectedly Mau funcionamento da câmera – Definido como True quando a câmera entra em estado parado inesperadamente.
– Definido como False quando a câmera começa a enviar o fluxo de vídeo com êxito novamente.
Verificar se a câmera está funcionando corretamente. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).

Apenas nativo

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
speakerVolumeIsZero Volume zerado em um dispositivo (alto-falante). – Definido como True quando o volume do alto-falante for zero.
– Definido como False quando o volume do alto-falante não for zero.
Não é possível ouvir áudio de participantes na chamada. Quando o valor for definido como True, você pode ter acidentalmente o volume na posição mais baixa (zero).
speakerMuted O dispositivo de alto-falante está com o mudo ativado. – Definido como True quando o dispositivo de alto-falante estiver com o mudo ativado.
– Definido como False quando o dispositivo de alto-falante não estiver com o mudo ativado.
Não é possível ouvir áudio de participantes na chamada. Quando o valor for definido como True, você pode ter ativado o mudo acidentalmente no alto-falante.
speakerBusy O alto-falante já está sendo usado. O dispositivo está sendo usado no modo exclusivo ou está sendo usado no modo compartilhado e o chamado pediu para usar o dispositivo no modo exclusivo. – Definido como True quando a aquisição do fluxo de dispositivos do alto-falante atingir o tempo limite (áudio).
– Definido como False quando a aquisição do alto-falante for bem-sucedida.
Não é possível ouvir áudio de participantes na chamada por meio do alto-falante. Quando o valor for definido como True, dê uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o alto-falante e tente fechá-lo.
speakerNotFunctioning O alto-falante não está funcionando (falha ao inicializar o cliente do dispositivo de áudio ou dispositivo ficou inativo por mais de 5 segundos) – Definido como True quando o alto-falante não estiver disponível ou a aquisição do fluxo de dispositivos atingir o tempo limite.
– Definido como False quando a aquisição do alto-falante for bem-sucedida.
Não é possível ouvir áudio de participantes na chamada por meio do alto-falante. Tente verificar o estado do dispositivo de alto-falante.
microphoneBusy O microfone já está sendo usado. O dispositivo está sendo usado no modo exclusivo ou está sendo usado no modo compartilhado e o chamado pediu para usar o dispositivo no modo exclusivo. – Definido como True quando a aquisição do fluxo de dispositivos do microfone atingir o tempo limite (áudio).
– Definido como False quando a aquisição do microfone for bem-sucedida.
Seu áudio não está atingindo outros participantes na chamada. Quando o valor for definido como True, dê uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o microfone e tente fechá-lo.

Acessar diagnóstico

O diagnóstico voltado para o usuário é um recurso estendido da API Call principal e permite diagnosticar uma chamada ativa.

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

Eventos de diagnóstico voltado para o usuário

  • Obtenha o objeto de recurso e adicione ouvintes aos eventos de diagnóstico.
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);

Obter os mais recentes diagnósticos voltados para o usuário

  • Obtenha os valores de diagnóstico mais recentes gerados na chamada atual. Se ainda não recebemos um valor para o diagnóstico, uma exceção será gerada.
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 ...

Valores de diagnóstico

Os seguintes diagnósticos voltados para o usuário estão disponíveis:

Valores de rede

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
networkUnavailable Não há rede disponível. – Definido como True quando uma chamada falha ao iniciar porque não há rede disponível.
– Definido como False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelaysUnreachable Problemas com uma rede. – Definido como True quando a rede tiver alguma restrição que não permite que você alcance retransmissões dos Serviços de Comunicação do Azure.
– Definido como False ao fazer uma nova chamada.
Durante uma chamada quando o sinal Wi-Fi liga e desliga. Verifique se as regras de firewall e o roteamento de rede permitem que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, confira a seção Configuração de firewall.
networkReconnectionQuality A conexão foi perdida e estamos nos reconectando à rede. – Definido como Bad quando a rede estiver desconectada
– Definido como Poor quando a conectividade de transporte de mídia é perdida
– Definido como Good quando uma nova sessão estiver conectada.
Baixa largura de banda, sem Internet Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
networkReceiveQuality Um indicador sobre a qualidade do fluxo de entrada. – Definido como Bad quando há um problema grave ao receber o fluxo.
– Definido como Poor quando há um problema moderado ao receber o fluxo.
– Definido como Good quando não há problema ao receber o fluxo.
– Só ficará visível se houver um fluxo de áudio ativo na chamada, o que significa que um participante está falando ativamente por um período de tempo.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.
networkSendQuality Um indicador sobre a qualidade do fluxo de saída. – Definido como Bad quando há um problema grave ao enviar o fluxo.
– Definido como Poor quando há um problema moderado ao enviar o fluxo.
– Definido como Good quando não há problema ao enviar o fluxo.
– Semelhante ao recebimento do diagnóstico de qualidade, ele só ficará visível se houver um fluxo de áudio ativo na chamada, o que significa que um participante está falando ativamente por um período de tempo. Porém, ele só funciona em uma chamada individual, pois depende de informações do outro lado para verificar a qualidade. Onde o outro lado precisa sinalizar os dados recebidos.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Além disso, sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
noSpeakerDevicesAvailable não há dispositivo de saída de áudio (alto-falante) no sistema do usuário. – Definido como True quando não há dispositivos de alto-falante no sistema e há suporte para a seleção de alto-falante.
– Definido como False quando há pelo menos um dispositivo de alto-falante no sistema e há suporte para a seleção de alto-falante.
Todos os alto-falantes estão desconectados Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem alto-falantes disponíveis.
speakingWhileMicrophoneIsMuted Falando enquanto o mudo está ativado. – Definido como True quando o microfone local está no mudo e o usuário local está falando.
– Definido como False quando o usuário local para de falar ou não desativa o mudo.
– Esse evento de diagnóstico pode ser desabilitado automaticamente se for disparado uma determinada quantidade de vezes sem qualquer ação do usuário para evitar ruídos e fornecer uma melhor experiência do usuário. Ele será habilitado novamente quando ocorrer uma nova ação de ativar mudo.
Durante uma chamada, ative o mudo e fale no microfone. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que ele pode estar falando sem perceber que o áudio está mudo.
noMicrophoneDevicesAvailable Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário – Definido como True quando não houver dispositivos de microfone no sistema.
– Definido como False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desconectados durante a chamada. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem um microfone. Para obter mais informações, consulte a seção habilitar o microfone no gerenciador de dispositivos.
microphoneNotFunctioning O microfone não está funcionando. – Definido como True quando o envio do fluxo de áudio local não for iniciado porque o dispositivo de microfone pode ter sido desabilitado no sistema ou está sendo usado por outro processo. Esse UFD leva cerca de 10 segundos para ser gerado.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito novamente.
Nenhum microfone disponível, acesso ao microfone desabilitado em um sistema Quando o valor for definido como True, dê uma notificação visual ao usuário final de que há um problema com o microfone.
microphoneMuteUnexpectedly O microfone está no mudo - Definido como True quando o microfone ativa o mudo inesperadamente.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito
O microfone está mudo no sistema. A maioria dos casos acontece quando o usuário está em uma chamada dos Serviços de Comunicação do Azure em um dispositivo móvel e chega uma chamada telefônica. Na maioria dos casos, o sistema operacional silencia a chamada dos Serviços de Comunicação do Azure para que um usuário possa atender à chamada telefônica. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a chamada foi silenciada devido à chegada de uma chamada telefônica. Para obter mais informações, veja como melhor lidar com o Sistema operacional silenciando uma chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microphonePermissionDenied o volume no dispositivo está baixo ou quase inaudível no macOS. – Definido como True quando a permissão de áudio é negada das configurações do sistema (áudio).
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS.
As permissões de microfone estão desabilitadas nas Configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar o microfone para uma chamada dos Serviços de Comunicação do Azure.

Valores de câmera

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
cameraFrozen A câmera para de produzir quadros por mais de 5 segundos. - Definido como True quando o fluxo de vídeo local está congelado. Esse diagnóstico significa que o lado remoto está vendo seu vídeo congelado na tela ou que os participantes remotos não estão renderizando seu vídeo na tela.
– Definido como False quando o congelamento termina e os usuários podem ver seu vídeo normalmente.
A câmera foi perdida durante a chamada ou uma rede ruim fez com que a câmera congelasse. Quando o valor for definido como True, considere dar uma notificação ao usuário final de que a rede do participante remoto pode ser ruim; é possível sugerir que ele desligue a câmera para preservar largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as capacidade de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica de câmera. – Definido como True quando o envio de vídeo local não for iniciado porque o dispositivo de câmera pode ter sido desabilitado no sistema ou está sendo usado por outro processo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera falhou ao iniciar.
cameraStartTimedOut Cenário comum em que a câmera está em mau estado. - Definido como True quando o dispositivo de câmera atingir tempo limite para começar a enviar o fluxo de vídeo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. – Definido como True quando a permissão de câmera é negada das configurações do sistema.
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS Chrome.
As permissões de câmera estão desabilitadas nas configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar a câmera para uma chamada dos Serviços de Comunicação do Azure.
cameraStoppedUnexpectedly Mau funcionamento da câmera – Definido como True quando a câmera entra em estado parado inesperadamente.
– Definido como False quando a câmera começa a enviar o fluxo de vídeo com êxito novamente.
Verificar se a câmera está funcionando corretamente. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).

Apenas nativo

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
speakerVolumeIsZero Volume zerado em um dispositivo (alto-falante). – Definido como True quando o volume do alto-falante for zero.
– Definido como False quando o volume do alto-falante não for zero.
Não é possível ouvir áudio de participantes na chamada. Quando o valor for definido como True, você pode ter acidentalmente o volume na posição mais baixa (zero).
speakerMuted O dispositivo de alto-falante está com o mudo ativado. – Definido como True quando o dispositivo de alto-falante estiver com o mudo ativado.
– Definido como False quando o dispositivo de alto-falante não estiver com o mudo ativado.
Não é possível ouvir áudio de participantes na chamada. Quando o valor for definido como True, você pode ter ativado o mudo acidentalmente no alto-falante.
speakerBusy O alto-falante já está sendo usado. O dispositivo está sendo usado no modo exclusivo ou está sendo usado no modo compartilhado e o chamado pediu para usar o dispositivo no modo exclusivo. – Definido como True quando a aquisição do fluxo de dispositivos do alto-falante atingir o tempo limite (áudio).
– Definido como False quando a aquisição do alto-falante for bem-sucedida.
Não é possível ouvir áudio de participantes na chamada por meio do alto-falante. Quando o valor for definido como True, dê uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o alto-falante e tente fechá-lo.
speakerNotFunctioning O alto-falante não está funcionando (falha ao inicializar o cliente do dispositivo de áudio ou dispositivo ficou inativo por mais de 5 segundos) – Definido como True quando o alto-falante não estiver disponível ou a aquisição do fluxo de dispositivos atingir o tempo limite.
– Definido como False quando a aquisição do alto-falante for bem-sucedida.
Não é possível ouvir áudio de participantes na chamada por meio do alto-falante. Tente verificar o estado do dispositivo de alto-falante.
microphoneBusy O microfone já está sendo usado. O dispositivo está sendo usado no modo exclusivo ou está sendo usado no modo compartilhado e o chamado pediu para usar o dispositivo no modo exclusivo. – Definido como True quando a aquisição do fluxo de dispositivos do microfone atingir o tempo limite (áudio).
– Definido como False quando a aquisição do microfone for bem-sucedida.
Seu áudio não está atingindo outros participantes na chamada. Quando o valor for definido como True, dê uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o microfone e tente fechá-lo.

Acessar diagnóstico

O diagnóstico voltado para o usuário é um recurso estendido da API Call principal e permite diagnosticar uma chamada ativa.

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

Eventos de diagnóstico voltado para o usuário

  • Implemente os delegados para as fontes de diagnóstico media e network. MediaDiagnosticsDelegate e NetworkDiagnosticsDelegate, respectivamente.
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...
  }
}
  • Mantenha uma referência para os diagnósticos media e network e defina o objeto delegado para ouvir eventos.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Observação

Se você tiver CallKit habilitado por meio do SDK ou implementar a integração do CallKit em seu aplicativo, relatar o estado mudo ao CallKit poderá fazer com que o sistema operacional faça o aplicativo desativar o microfone devido a motivos de privacidade, o que faria com que o evento didIsSpeakingWhileMicrophoneIsMuted não funcionasse conforme o esperado, pois não podemos capturar a entrada do dispositivo de microfone para detectar se o usuário está falando.

Obter os mais recentes diagnósticos voltados para o usuário

  • Obtenha os valores de diagnóstico mais recentes gerados. Se ainda não recebemos um valor para o diagnóstico, nil ou .unknown será retornado.
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.

Valores de diagnóstico

Os seguintes diagnósticos voltados para o usuário estão disponíveis:

Valores de rede

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
networkUnavailable Não há rede disponível. – Definido como True quando uma chamada falha ao iniciar porque não há rede disponível.
– Definido como False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelaysUnreachable Problemas com uma rede. – Definido como True quando a rede tiver alguma restrição que não permite que você alcance retransmissões dos Serviços de Comunicação do Azure.
– Definido como False ao fazer uma nova chamada.
Durante uma chamada quando o sinal Wi-Fi liga e desliga. Verifique se as regras de firewall e o roteamento de rede permitem que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, confira a seção Configuração de firewall.
networkReconnectionQuality A conexão foi perdida e estamos nos reconectando à rede. – Definido como Bad quando a rede estiver desconectada
– Definido como Poor quando a conectividade de transporte de mídia é perdida
– Definido como Good quando uma nova sessão estiver conectada.
Baixa largura de banda, sem Internet Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
networkReceiveQuality Um indicador sobre a qualidade do fluxo de entrada. – Definido como Bad quando há um problema grave ao receber o fluxo.
– Definido como Poor quando há um problema moderado ao receber o fluxo.
– Definido como Good quando não há problema ao receber o fluxo.
– Só ficará visível se houver um fluxo de áudio ativo na chamada, o que significa que um participante está falando ativamente por um período de tempo.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.
networkSendQuality Um indicador sobre a qualidade do fluxo de saída. – Definido como Bad quando há um problema grave ao enviar o fluxo.
– Definido como Poor quando há um problema moderado ao enviar o fluxo.
– Definido como Good quando não há problema ao enviar o fluxo.
– Semelhante ao recebimento do diagnóstico de qualidade, ele só ficará visível se houver um fluxo de áudio ativo na chamada, o que significa que um participante está falando ativamente por um período de tempo. Porém, ele só funciona em uma chamada individual, pois depende de informações do outro lado para verificar a qualidade. Onde o outro lado precisa sinalizar os dados recebidos.
Largura de banda baixa Verifique se a chamada tenha uma conexão de Internet confiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede. Além disso, sugira ao usuário final que desligue a câmera para preservar a largura de banda da Internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
noSpeakerDevicesAvailable não há dispositivo de saída de áudio (alto-falante) no sistema do usuário. – Definido como True quando não há dispositivos de alto-falante no sistema e há suporte para a seleção de alto-falante.
– Definido como False quando há pelo menos um dispositivo de alto-falante no sistema e há suporte para a seleção de alto-falante.
Todos os alto-falantes estão desconectados Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem alto-falantes disponíveis.
speakingWhileMicrophoneIsMuted Falando enquanto o mudo está ativado. – Definido como True quando o microfone local está no mudo e o usuário local está falando.
– Definido como False quando o usuário local para de falar ou não desativa o mudo.
– Esse evento de diagnóstico pode ser desabilitado automaticamente se for disparado uma determinada quantidade de vezes sem qualquer ação do usuário para evitar ruídos e fornecer uma melhor experiência do usuário. Ele será habilitado novamente quando ocorrer uma nova ação de ativar mudo.
Durante uma chamada, ative o mudo e fale no microfone. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que ele pode estar falando sem perceber que o áudio está mudo.
noMicrophoneDevicesAvailable Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário – Definido como True quando não houver dispositivos de microfone no sistema.
– Definido como False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desconectados durante a chamada. Quando o valor for definido como True, considere dar uma notificação visual ao usuário final de que sua sessão de chamada atual não tem um microfone. Para obter mais informações, consulte a seção habilitar o microfone no gerenciador de dispositivos.
microphoneNotFunctioning O microfone não está funcionando. – Definido como True quando o envio do fluxo de áudio local não for iniciado porque o dispositivo de microfone pode ter sido desabilitado no sistema ou está sendo usado por outro processo. Esse UFD leva cerca de 10 segundos para ser gerado.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito novamente.
Nenhum microfone disponível, acesso ao microfone desabilitado em um sistema Quando o valor for definido como True, dê uma notificação visual ao usuário final de que há um problema com o microfone.
microphoneMuteUnexpectedly O microfone está no mudo - Definido como True quando o microfone ativa o mudo inesperadamente.
- Definido como False quando o microfone começa a enviar o fluxo de áudio com êxito
O microfone está mudo no sistema. A maioria dos casos acontece quando o usuário está em uma chamada dos Serviços de Comunicação do Azure em um dispositivo móvel e chega uma chamada telefônica. Na maioria dos casos, o sistema operacional silencia a chamada dos Serviços de Comunicação do Azure para que um usuário possa atender à chamada telefônica. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a chamada foi silenciada devido à chegada de uma chamada telefônica. Para obter mais informações, veja como melhor lidar com o Sistema operacional silenciando uma chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microphonePermissionDenied o volume no dispositivo está baixo ou quase inaudível no macOS. – Definido como True quando a permissão de áudio é negada das configurações do sistema (áudio).
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS.
As permissões de microfone estão desabilitadas nas Configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar o microfone para uma chamada dos Serviços de Comunicação do Azure.

Valores de câmera

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
cameraFrozen A câmera para de produzir quadros por mais de 5 segundos. - Definido como True quando o fluxo de vídeo local está congelado. Esse diagnóstico significa que o lado remoto está vendo seu vídeo congelado na tela ou que os participantes remotos não estão renderizando seu vídeo na tela.
– Definido como False quando o congelamento termina e os usuários podem ver seu vídeo normalmente.
A câmera foi perdida durante a chamada ou uma rede ruim fez com que a câmera congelasse. Quando o valor for definido como True, considere dar uma notificação ao usuário final de que a rede do participante remoto pode ser ruim; é possível sugerir que ele desligue a câmera para preservar largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as capacidade de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica de câmera. – Definido como True quando o envio de vídeo local não for iniciado porque o dispositivo de câmera pode ter sido desabilitado no sistema ou está sendo usado por outro processo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera falhou ao iniciar.
cameraStartTimedOut Cenário comum em que a câmera está em mau estado. - Definido como True quando o dispositivo de câmera atingir tempo limite para começar a enviar o fluxo de vídeo.
– Definido como False quando o dispositivo de câmera selecionado envia novamente com êxito o vídeo local.
Falhas de câmera Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. – Definido como True quando a permissão de câmera é negada das configurações do sistema.
- Definido como na False aquisição de fluxo bem-sucedida.
Observação: esse diagnóstico só funciona no macOS Chrome.
As permissões de câmera estão desabilitadas nas configurações. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que ele não habilitou a permissão para usar a câmera para uma chamada dos Serviços de Comunicação do Azure.
cameraStoppedUnexpectedly Mau funcionamento da câmera – Definido como True quando a câmera entra em estado parado inesperadamente.
– Definido como False quando a câmera começa a enviar o fluxo de vídeo com êxito novamente.
Verificar se a câmera está funcionando corretamente. Quando o valor for definido como True, dê uma notificação visual ao usuário final de que a câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para False remover a notificação).

Apenas nativo

Nome Descrição Valores possíveis Casos de uso Etapas de mitigação
speakerVolumeIsZero Volume zerado em um dispositivo (alto-falante). – Definido como True quando o volume do alto-falante for zero.
– Definido como False quando o volume do alto-falante não for zero.
Não é possível ouvir áudio de participantes na chamada. Quando o valor for definido como True, você pode ter acidentalmente o volume na posição mais baixa (zero).
speakerMuted O dispositivo de alto-falante está com o mudo ativado. – Definido como True quando o dispositivo de alto-falante estiver com o mudo ativado.
– Definido como False quando o dispositivo de alto-falante não estiver com o mudo ativado.
Não é possível ouvir áudio de participantes na chamada. Quando o valor for definido como True, você pode ter ativado o mudo acidentalmente no alto-falante.
speakerBusy O alto-falante já está sendo usado. O dispositivo está sendo usado no modo exclusivo ou está sendo usado no modo compartilhado e o chamado pediu para usar o dispositivo no modo exclusivo. – Definido como True quando a aquisição do fluxo de dispositivos do alto-falante atingir o tempo limite (áudio).
– Definido como False quando a aquisição do alto-falante for bem-sucedida.
Não é possível ouvir áudio de participantes na chamada por meio do alto-falante. Quando o valor for definido como True, dê uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o alto-falante e tente fechá-lo.
speakerNotFunctioning O alto-falante não está funcionando (falha ao inicializar o cliente do dispositivo de áudio ou dispositivo ficou inativo por mais de 5 segundos) – Definido como True quando o alto-falante não estiver disponível ou a aquisição do fluxo de dispositivos atingir o tempo limite.
– Definido como False quando a aquisição do alto-falante for bem-sucedida.
Não é possível ouvir áudio de participantes na chamada por meio do alto-falante. Tente verificar o estado do dispositivo de alto-falante.
microphoneBusy O microfone já está sendo usado. O dispositivo está sendo usado no modo exclusivo ou está sendo usado no modo compartilhado e o chamado pediu para usar o dispositivo no modo exclusivo. – Definido como True quando a aquisição do fluxo de dispositivos do microfone atingir o tempo limite (áudio).
– Definido como False quando a aquisição do microfone for bem-sucedida.
Seu áudio não está atingindo outros participantes na chamada. Quando o valor for definido como True, dê uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o microfone e tente fechá-lo.

Acessar diagnóstico

O diagnóstico voltado para o usuário é um recurso estendido da API Call principal e permite diagnosticar uma chamada ativa.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Eventos de diagnóstico voltado para o usuário

  • Implementar ouvintes para eventos de diagnóstico.
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
  • Definir métodos de evento para ouvir eventos.
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 ... 

Obter os mais recentes diagnósticos voltados para o usuário

  • Obtenha os valores de diagnóstico mais recentes gerados na chamada atual. Se ainda não recebemos um valor para o diagnóstico, null ou .unknown será retornado.
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.