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 de Frente para o Usuário" (UFD) que pode ser usado para examinar várias propriedades de uma chamada para determinar qual pode ser o problema. Diagnóstico de Enfrentamento ao Usuário são eventos que são disparados que podem indicar devido a algum problema subjacente (rede ruim, usuário tem seu microfone silenciado) que um usuário pode ter uma experiência ruim. Depois que um diagnóstico voltado para o usuário for acionado, você deve considerar dar feedback a um usuário final de que ele pode estar tendo algum problema subjacente. No entanto, a saída Diagnóstico voltado para o usuário é apenas informativa e a pilha de chamadas não faz alterações com base em um diagnóstico voltado para o usuário que está sendo acionado.

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 utilização Passos de mitigação
noRede Não há rede disponível. - Defina para True quando uma chamada não for iniciada porque não há rede disponível.
- Definir para False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelésNotReachable Problemas com uma rede. - Defina quando True a rede tiver alguma restrição que não permita que você alcance os retransmissores dos Serviços de Comunicação do Azure.
- Definir para False ao fazer uma nova chamada.
Durante uma chamada quando o sinal WiFi liga e desliga. Certifique-se de que as regras de firewall e o roteamento de rede permitam que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, consulte a seção Configuração do firewall .
redeReconectar A conexão foi perdida e estamos nos reconectando à rede. - Definido paraBad quando a rede está desconectada
- Definido para Poorquando a conectividade de transporte de mídia é perdida
- Defina para Good quando uma nova sessão é conectada.
Baixa largura de banda, sem internet Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
redeReceberQualidade Um indicador sobre a qualidade do fluxo de entrada. - Defina paraBad quando houver um problema grave com o recebimento do fluxo.
- Definido para Poor quando há um problema leve com o recebimento do fluxo.
- Defina para Good quando não há problema com o recebimento do fluxo.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue a câmera para conservar a largura de banda disponível na internet.
networkSendQuality Um indicador relativo à qualidade do fluxo de saída. - Defina paraBad quando houver um problema grave com o envio do fluxo.
- Definido para Poor quando há um problema leve com o envio do fluxo.
- Defina para Good quando não há problema com o envio do fluxo.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue a câmera para conservar a largura de banda disponível na internet.

Valores de áudio

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
noSpeakerDevicesEnumerado Não há nenhum dispositivo de saída de áudio (alto-falante) no sistema do usuário. - Definido para True quando não há dispositivos de alto-falante no sistema, e a seleção de alto-falantes é suportada.
- Defina para False quando há pelo menos um dispositivo de alto-falante no sistema, e a seleção de alto-falantes é suportada.
Todos os altifalantes estão desligados da tomada Quando o valor for definido como True, considere fornecer uma notificação visual ao usuário final de que sua sessão de chamada atual não tem nenhum alto-falante disponível.
falandoEnquantoMicrofoneIsMuted Falar enquanto está mudo. - Defina para True quando o microfone local estiver silenciado e o usuário local estiver falando.
- Defina para False quando o usuário local para de falar ou desativa o som do microfone.
* Nota: Atualmente, esta opção não é suportada no Safari porque as amostras de nível de áudio são retiradas das estatísticas WebRTC.
Durante uma chamada, silencie o microfone e fale nele. Quando o valor definido para True considerar dar uma notificação visual ao usuário final de que ele pode estar falando e não percebendo que seu áudio está silenciado.
noMicrophoneDevicesEnumerado Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário - Definido para True quando não há dispositivos de microfone no sistema.
- Defina para False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desligados durante a chamada. Quando o valor definido para True considerar 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 microfone da manjedoura do dispositivo.
microfoneNotFunctioning O microfone não está funcionando. - Defina para True quando não conseguimos iniciar o envio de fluxo de áudio local porque o dispositivo de microfone pode ter sido desativado no sistema ou está sendo usado por outro processo. Este UFD demora cerca de 10 segundos a ser levantado.
- Defina para False quando o microfone começa a enviar com sucesso o fluxo de áudio novamente.
Não há microfones disponíveis, acesso ao microfone desativado em um sistema Quando o valor definido para True fornecer notificação visual ao usuário final de que há um problema com seu microfone.
microfoneMuteInesperadamente O microfone está mudo - Defina para quando o True microfone entra no estado silenciado inesperadamente.
- Definido para quando o False microfone começa a enviar fluxo de áudio com sucesso
O microfone é silenciado do 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 uma chamada telefônica chega. 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 a chamada telefônica. Quando o valor estiver definido como True, notifique visualmente o usuário final de que a chamada foi silenciada porque uma chamada telefônica chegou. Para obter mais informações, consulte como lidar melhor com o silenciamento do sistema operacional em uma seção de chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microfonePermissionDenied há baixo volume do dispositivo ou é quase silencioso no macOS. - Defina para True quando a permissão de áudio é negada a partir das configurações do sistema (áudio).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS.
As permissões de microfone estão desativadas nas Configurações. Quando value é definido como True, forneça 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 da câmara

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
cameraFreeze A câmera para de produzir quadros por mais de 5 segundos. - Definido para 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 significa que os participantes remotos não estão renderizando seu vídeo na tela.
- Defina para False quando o congelamento termina e os usuários podem ver seu vídeo como de costume.
A câmera foi perdida durante a chamada ou rede ruim fez com que a câmera congelasse. Quando o valor estiver definido como True, considere notificar o usuário final de que a rede de participantes remotos pode estar ruim - possivelmente sugira que ele desligue a câmera para conservar a largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as habilidades de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica da câmera. - Definido para True quando não conseguimos começar a enviar vídeo local porque o dispositivo da câmera pode ter sido desativado no sistema ou está sendo usado por outro processo ~.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, notifique visualmente o usuário final de que a câmera falhou ao iniciar.
câmeraStartTimedOut Cenário comum onde a câmera está em mau estado. - Defina para quando o True tempo limite do dispositivo da câmera para começar a enviar fluxo de vídeo.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. - Definido para True quando a permissão da câmera é negada a partir das configurações do sistema (vídeo).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS Chrome.
As permissões da câmera estão desativadas nas configurações. Quando value é definido como True, forneça 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.
câmeraParouInesperadamente Mau funcionamento da câmara - Definido para quando a True câmera entra no estado parado inesperadamente.
- Defina para quando a False câmera começa a enviar com sucesso fluxo de vídeo novamente.
Verifique se a câmera está funcionando corretamente. Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).

Valores diversos

Nome Descrição Valores possíveis Casos de utilização Passos de Mitigação
compartilhamento de telaGravaçãoDesativado O compartilhamento de tela do sistema foi negado nas preferências em Configurações. - Defina para True quando a permissão de compartilhamento de tela é negada nas configurações do sistema (compartilhamento).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS.Chrome.
A gravação de tela está desativada em Configurações. Quando value é definido como True, forneça uma notificação visual ao usuário final de que ele não habilitou a permissão para compartilhar sua tela para uma chamada dos Serviços de Comunicação do Azure.
capturerStartFailed Falha no compartilhamento de tela do sistema. - Definir para True quando não conseguirmos começar a capturar a tela.
- Definido para False quando a captura da tela pode iniciar com sucesso.
Quando value estiver definido como True, notifique visualmente o usuário final de que possivelmente houve um problema ao compartilhar sua tela. (Quando o valor for redefinido para , remova a Falsenotificação).
capturerStoppedInesperadamente Mau funcionamento da partilha de ecrã do sistema - Definido para quando o True capturador de tela entra no estado interrompido inesperadamente.
- Defina para False quando o capturador de tela começa a capturar com sucesso novamente.
Verifique se o compartilhamento de tela está funcionando corretamente Quando o valor estiver definido como True, notifique visualmente o usuário final de que possivelmente há um problema que faz com que o compartilhamento da tela seja interrompido. (Quando o valor é definido de volta para remover a False notificação).

Acesso ao diagnóstico

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

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

Eventos de diagnóstico voltados para o usuário

  • Inscreva-se no evento para monitorar quando qualquer diagnóstico voltado para o diagnosticChanged 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);

Obtenha o diagnóstico mais recente voltado para o usuário

  • Obtenha os valores de diagnóstico mais recentes que foram levantados. Se um diagnóstico é indefinido, é porque nunca foi levantado.
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 utilização Passos de mitigação
redeIndisponível Não há rede disponível. - Defina para True quando uma chamada não for iniciada porque não há rede disponível.
- Definir para False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelésInacessível Problemas com uma rede. - Defina quando True a rede tiver alguma restrição que não permita que você alcance os retransmissores dos Serviços de Comunicação do Azure.
- Definir para False ao fazer uma nova chamada.
Durante uma chamada quando o sinal WiFi liga e desliga. Certifique-se de que as regras de firewall e o roteamento de rede permitam que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, consulte a seção Configuração do firewall .
redeReconexãoQualidade A conexão foi perdida e estamos nos reconectando à rede. - Definido paraBad quando a rede está desconectada
- Definido para Poorquando a conectividade de transporte de mídia é perdida
- Defina para Good quando uma nova sessão é conectada.
Baixa largura de banda, sem internet Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
redeReceberQualidade Um indicador sobre a qualidade do fluxo de entrada. - Defina paraBad quando houver um problema grave com o recebimento do fluxo.
- Definido para Poor quando há um problema leve com o recebimento do fluxo.
- Defina para Good quando não há problema com o recebimento do fluxo.
- Só é 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.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue a câmera para conservar a largura de banda disponível da Internet.
networkSendQuality Um indicador relativo à qualidade do fluxo de saída. - Defina paraBad quando houver um problema grave com o envio do fluxo.
- Definido para Poor quando há um problema leve com o envio do fluxo.
- Defina para Good quando não há problema com o envio do fluxo.
- Semelhante a receber diagnóstico de qualidade, só é 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. Mas, ele só funciona em uma chamada 1:1, pois depende de informações do outro lado para verificar a qualidade. Onde o outro lado tem que sinalizar os dados que foram recebidos.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue sua câmera para conservar a largura de banda de internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
noSpeakerDevicesDisponível Não há nenhum dispositivo de saída de áudio (alto-falante) no sistema do usuário. - Definido para True quando não há dispositivos de alto-falante no sistema, e a seleção de alto-falantes é suportada.
- Defina para False quando há pelo menos um dispositivo de alto-falante no sistema, e a seleção de alto-falantes é suportada.
Todos os altifalantes estão desligados da tomada Quando o valor for definido como True, considere fornecer uma notificação visual ao usuário final de que sua sessão de chamada atual não tem nenhum alto-falante disponível.
falandoEnquantoMicrofoneIsMuted Falar enquanto está mudo. - Defina para True quando o microfone local estiver silenciado e o usuário local estiver falando.
- Defina para False quando o usuário local para de falar ou desativa o som do microfone.
- Este evento de diagnóstico pode ser desativado automaticamente se for acionado por um determinado número de vezes sem qualquer ação do usuário para evitar o ruído e fornecer uma melhor experiência ao usuário. Ele será reativado novamente quando ocorrer uma nova ação de silenciamento.
Durante uma chamada, silencie o microfone e fale nele. Quando o valor definido para True considerar dar uma notificação visual ao usuário final de que ele pode estar falando e não percebendo que seu áudio está silenciado.
noMicrophoneDevicesDisponível Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário - Definido para True quando não há dispositivos de microfone no sistema.
- Defina para False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desligados durante a chamada. Quando o valor definido para True considerar 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 microfone da manjedoura do dispositivo.
microfoneNotFunctioning O microfone não está funcionando. - Defina para True quando não conseguimos iniciar o envio de fluxo de áudio local porque o dispositivo de microfone pode ter sido desativado no sistema ou está sendo usado por outro processo. Este UFD demora cerca de 10 segundos a ser levantado.
- Defina para False quando o microfone começa a enviar com sucesso o fluxo de áudio novamente.
Não há microfones disponíveis, acesso ao microfone desativado em um sistema Quando o valor definido para True fornecer notificação visual ao usuário final de que há um problema com seu microfone.
microfoneMuteInesperadamente O microfone está mudo - Defina para quando o True microfone entra no estado silenciado inesperadamente.
- Definido para quando o False microfone começa a enviar fluxo de áudio com sucesso
O microfone é silenciado do 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 uma chamada telefônica chega. 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 a chamada telefônica. Quando o valor estiver definido como True, notifique visualmente o usuário final de que a chamada foi silenciada porque uma chamada telefônica chegou. Para obter mais informações, consulte como lidar melhor com o silenciamento do sistema operacional em uma seção de chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microfonePermissionDenied há baixo volume do dispositivo ou é quase silencioso no macOS. - Defina para True quando a permissão de áudio é negada a partir das configurações do sistema (áudio).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS.
As permissões de microfone estão desativadas nas Configurações. Quando o valor estiver definido como True, notifique visualmente o 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 da câmara

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
câmeraFrozen A câmera para de produzir quadros por mais de 5 segundos. - Definido para 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 significa que os participantes remotos não estão renderizando seu vídeo na tela.
- Defina para False quando o congelamento termina e os usuários podem ver seu vídeo como de costume.
A câmera foi perdida durante a chamada ou rede ruim fez com que a câmera congelasse. Quando o valor estiver definido como True, considere notificar o usuário final de que a rede de participantes remotos pode estar ruim - possivelmente sugira que ele desligue a câmera para conservar a largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as habilidades de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica da câmera. - Definido para True quando não conseguimos começar a enviar vídeo local porque o dispositivo da câmera pode ter sido desativado no sistema ou está sendo usado por outro processo ~.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, notifique visualmente o usuário final de que a câmera falhou ao iniciar.
câmeraStartTimedOut Cenário comum onde a câmera está em mau estado. - Defina para quando o True tempo limite do dispositivo da câmera para começar a enviar fluxo de vídeo.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. - Definido para True quando a permissão da câmera é negada a partir das configurações do sistema (vídeo).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS Chrome.
As permissões da câmera estão desativadas nas configurações. Quando o valor estiver definido como True, notifique visualmente o 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.
câmeraParouInesperadamente Mau funcionamento da câmara - Definido para quando a True câmera entra no estado parado inesperadamente.
- Defina para quando a False câmera começa a enviar com sucesso fluxo de vídeo novamente.
Verifique se a câmera está funcionando corretamente. Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).

Apenas nativo

Nome Descrição Valores possíveis Casos de utilização Passos de Mitigação
speakerVolumeIsZero Volume zero num dispositivo (altifalante). - Defina para True quando o volume do alto-falante é zero.
- Defina para quando o False volume do alto-falante não é zero.
Não ouvir áudio dos participantes de plantão. Quando o valor é definido como True, você pode ter acidentalmente o volume no menor (zero).
alto-falanteMudo O dispositivo de altifalante está desativado. - Defina para True quando o dispositivo de alto-falante está mudo.
- Defina para False quando o dispositivo de alto-falante não estiver mudo.
Não ouvir áudio dos participantes de plantão. Quando o valor é definido como True, você pode ter silenciado acidentalmente o alto-falante.
oradorOcupado Speaker já está em uso. Ou o dispositivo está sendo usado no modo exclusivo, ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. - Defina para True quando o tempo limite de aquisição do fluxo do dispositivo de alto-falante (áudio).
- Defina para quando a False aquisição do alto-falante for bem-sucedida.
Não ouvir o áudio dos participantes em serviço através do alto-falante. Quando value estiver definido como True, forneça uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o alto-falante e tentar fechá-lo.
speakerNotFunctioning O alto-falante não está funcionando (falha ao inicializar o cliente do dispositivo de áudio ou o dispositivo ficou inativo por mais de 5 segundos) - Defina para quando o True alto-falante não estiver disponível ou o tempo limite de aquisição do fluxo do dispositivo (áudio).
- Defina para quando a False aquisição do alto-falante for bem-sucedida.
Não ouvir o áudio dos participantes em serviço através do alto-falante. Tente verificar o estado do dispositivo de coluna.
microfoneOcupado O microfone já está em uso. Ou o dispositivo está sendo usado no modo exclusivo, ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. - Defina para True quando o tempo limite de aquisição do fluxo do dispositivo de microfone (áudio).
- Defina para quando a False aquisição do microfone for bem-sucedida.
O seu áudio não chega a outros participantes na chamada. Quando value estiver definido como True, forneça uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o microfone e tentar fechá-lo.

Acesso ao diagnóstico

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

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

Eventos de diagnóstico voltados 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);

Obtenha o diagnóstico mais recente voltado para o usuário

  • Obtenha os valores de diagnóstico mais recentes que foram gerados na chamada atual. Se ainda não recebemos um valor para o diagnóstico, uma exceção é lançada.
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 utilização Passos de mitigação
redeIndisponível Não há rede disponível. - Defina para True quando uma chamada não for iniciada porque não há rede disponível.
- Definir para False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelésInacessível Problemas com uma rede. - Defina quando True a rede tiver alguma restrição que não permita que você alcance os retransmissores dos Serviços de Comunicação do Azure.
- Definir para False ao fazer uma nova chamada.
Durante uma chamada quando o sinal WiFi liga e desliga. Certifique-se de que as regras de firewall e o roteamento de rede permitam que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, consulte a seção Configuração do firewall .
redeReconexãoQualidade A conexão foi perdida e estamos nos reconectando à rede. - Definido paraBad quando a rede está desconectada
- Definido para Poorquando a conectividade de transporte de mídia é perdida
- Defina para Good quando uma nova sessão é conectada.
Baixa largura de banda, sem internet Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
redeReceberQualidade Um indicador sobre a qualidade do fluxo de entrada. - Defina paraBad quando houver um problema grave com o recebimento do fluxo.
- Definido para Poor quando há um problema leve com o recebimento do fluxo.
- Defina para Good quando não há problema com o recebimento do fluxo.
- Só é 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.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue a câmera para conservar a largura de banda disponível da Internet.
networkSendQuality Um indicador relativo à qualidade do fluxo de saída. - Defina paraBad quando houver um problema grave com o envio do fluxo.
- Definido para Poor quando há um problema leve com o envio do fluxo.
- Defina para Good quando não há problema com o envio do fluxo.
- Semelhante a receber diagnóstico de qualidade, só é 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. Mas, ele só funciona em uma chamada 1:1, pois depende de informações do outro lado para verificar a qualidade. Onde o outro lado tem que sinalizar os dados que foram recebidos.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue sua câmera para conservar a largura de banda de internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
noSpeakerDevicesDisponível Não há nenhum dispositivo de saída de áudio (alto-falante) no sistema do usuário. - Definido para True quando não há dispositivos de alto-falante no sistema, e a seleção de alto-falantes é suportada.
- Defina para False quando há pelo menos um dispositivo de alto-falante no sistema, e a seleção de alto-falantes é suportada.
Todos os altifalantes estão desligados da tomada Quando o valor for definido como True, considere fornecer uma notificação visual ao usuário final de que sua sessão de chamada atual não tem nenhum alto-falante disponível.
falandoEnquantoMicrofoneIsMuted Falar enquanto está mudo. - Defina para True quando o microfone local estiver silenciado e o usuário local estiver falando.
- Defina para False quando o usuário local para de falar ou desativa o som do microfone.
- Este evento de diagnóstico pode ser desativado automaticamente se for acionado por um determinado número de vezes sem qualquer ação do usuário para evitar o ruído e fornecer uma melhor experiência ao usuário. Ele será reativado novamente quando ocorrer uma nova ação de silenciamento.
Durante uma chamada, silencie o microfone e fale nele. Quando o valor definido para True considerar dar uma notificação visual ao usuário final de que ele pode estar falando e não percebendo que seu áudio está silenciado.
noMicrophoneDevicesDisponível Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário - Definido para True quando não há dispositivos de microfone no sistema.
- Defina para False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desligados durante a chamada. Quando o valor definido para True considerar 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 microfone da manjedoura do dispositivo.
microfoneNotFunctioning O microfone não está funcionando. - Defina para True quando não conseguimos iniciar o envio de fluxo de áudio local porque o dispositivo de microfone pode ter sido desativado no sistema ou está sendo usado por outro processo. Este UFD demora cerca de 10 segundos a ser levantado.
- Defina para False quando o microfone começa a enviar com sucesso o fluxo de áudio novamente.
Não há microfones disponíveis, acesso ao microfone desativado em um sistema Quando o valor definido para True fornecer notificação visual ao usuário final de que há um problema com seu microfone.
microfoneMuteInesperadamente O microfone está mudo - Defina para quando o True microfone entra no estado silenciado inesperadamente.
- Definido para quando o False microfone começa a enviar fluxo de áudio com sucesso
O microfone é silenciado do 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 uma chamada telefônica chega. 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 a chamada telefônica. Quando o valor estiver definido como True, notifique visualmente o usuário final de que a chamada foi silenciada porque uma chamada telefônica chegou. Para obter mais informações, consulte como lidar melhor com o silenciamento do sistema operacional em uma seção de chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microfonePermissionDenied há baixo volume do dispositivo ou é quase silencioso no macOS. - Defina para True quando a permissão de áudio é negada a partir das configurações do sistema (áudio).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS.
As permissões de microfone estão desativadas nas Configurações. Quando o valor estiver definido como True, notifique visualmente o 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 da câmara

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
câmeraFrozen A câmera para de produzir quadros por mais de 5 segundos. - Definido para 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 significa que os participantes remotos não estão renderizando seu vídeo na tela.
- Defina para False quando o congelamento termina e os usuários podem ver seu vídeo como de costume.
A câmera foi perdida durante a chamada ou rede ruim fez com que a câmera congelasse. Quando o valor estiver definido como True, considere notificar o usuário final de que a rede de participantes remotos pode estar ruim - possivelmente sugira que ele desligue a câmera para conservar a largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as habilidades de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica da câmera. - Definido para True quando não conseguimos começar a enviar vídeo local porque o dispositivo da câmera pode ter sido desativado no sistema ou está sendo usado por outro processo ~.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, notifique visualmente o usuário final de que a câmera falhou ao iniciar.
câmeraStartTimedOut Cenário comum onde a câmera está em mau estado. - Defina para quando o True tempo limite do dispositivo da câmera para começar a enviar fluxo de vídeo.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. - Definido para True quando a permissão da câmera é negada a partir das configurações do sistema (vídeo).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS Chrome.
As permissões da câmera estão desativadas nas configurações. Quando o valor estiver definido como True, notifique visualmente o 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.
câmeraParouInesperadamente Mau funcionamento da câmara - Definido para quando a True câmera entra no estado parado inesperadamente.
- Defina para quando a False câmera começa a enviar com sucesso fluxo de vídeo novamente.
Verifique se a câmera está funcionando corretamente. Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).

Apenas nativo

Nome Descrição Valores possíveis Casos de utilização Passos de Mitigação
speakerVolumeIsZero Volume zero num dispositivo (altifalante). - Defina para True quando o volume do alto-falante é zero.
- Defina para quando o False volume do alto-falante não é zero.
Não ouvir áudio dos participantes de plantão. Quando o valor é definido como True, você pode ter acidentalmente o volume no menor (zero).
alto-falanteMudo O dispositivo de altifalante está desativado. - Defina para True quando o dispositivo de alto-falante está mudo.
- Defina para False quando o dispositivo de alto-falante não estiver mudo.
Não ouvir áudio dos participantes de plantão. Quando o valor é definido como True, você pode ter silenciado acidentalmente o alto-falante.
oradorOcupado Speaker já está em uso. Ou o dispositivo está sendo usado no modo exclusivo, ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. - Defina para True quando o tempo limite de aquisição do fluxo do dispositivo de alto-falante (áudio).
- Defina para quando a False aquisição do alto-falante for bem-sucedida.
Não ouvir o áudio dos participantes em serviço através do alto-falante. Quando value estiver definido como True, forneça uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o alto-falante e tentar fechá-lo.
speakerNotFunctioning O alto-falante não está funcionando (falha ao inicializar o cliente do dispositivo de áudio ou o dispositivo ficou inativo por mais de 5 segundos) - Defina para quando o True alto-falante não estiver disponível ou o tempo limite de aquisição do fluxo do dispositivo (áudio).
- Defina para quando a False aquisição do alto-falante for bem-sucedida.
Não ouvir o áudio dos participantes em serviço através do alto-falante. Tente verificar o estado do dispositivo de coluna.
microfoneOcupado O microfone já está em uso. Ou o dispositivo está sendo usado no modo exclusivo, ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. - Defina para True quando o tempo limite de aquisição do fluxo do dispositivo de microfone (áudio).
- Defina para quando a False aquisição do microfone for bem-sucedida.
O seu áudio não chega a outros participantes na chamada. Quando value estiver definido como True, forneça uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o microfone e tentar fechá-lo.

Acesso ao diagnóstico

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

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

Eventos de diagnóstico voltados para o usuário

  • Implementar os delegados para media e network fontes de diagnóstico. MediaDiagnosticsDelegate e NetworkDiagnosticsDelegate respetivamente.
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 e media network um diagnóstico e defina o objeto de delegado para ouvir eventos.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Nota

Se você CallKit tiver ativado via SDK ou implementado a integração do CallKit em seu aplicativo, relatar o estado de mudo para o CallKit pode resultar no sistema operacional fazendo com que o aplicativo perca a retenção para o microfone devido a razões de privacidade que fariam com que o evento não funcionasse como esperado, porque não podemos capturar a didIsSpeakingWhileMicrophoneIsMuted entrada do dispositivo de microfone para detetar que o usuário está falando.

Obtenha o diagnóstico mais recente voltado para o usuário

  • Obtenha os valores de diagnóstico mais recentes que foram levantados. Se ainda não recebemos um valor para o diagnóstico, nil ou .unknown é devolvido.
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 utilização Passos de mitigação
redeIndisponível Não há rede disponível. - Defina para True quando uma chamada não for iniciada porque não há rede disponível.
- Definir para False quando houver candidatos ICE presentes.
O dispositivo não está conectado a uma rede. Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Otimização de rede.
networkRelésInacessível Problemas com uma rede. - Defina quando True a rede tiver alguma restrição que não permita que você alcance os retransmissores dos Serviços de Comunicação do Azure.
- Definir para False ao fazer uma nova chamada.
Durante uma chamada quando o sinal WiFi liga e desliga. Certifique-se de que as regras de firewall e o roteamento de rede permitam que o cliente alcance os servidores de turno da Microsoft. Para obter mais informações, consulte a seção Configuração do firewall .
redeReconexãoQualidade A conexão foi perdida e estamos nos reconectando à rede. - Definido paraBad quando a rede está desconectada
- Definido para Poorquando a conectividade de transporte de mídia é perdida
- Defina para Good quando uma nova sessão é conectada.
Baixa largura de banda, sem internet Certifique-se de que a chamada tem uma ligação à Internet fiável que possa sustentar uma chamada de voz. Para obter mais informações, consulte a seção Requisito de largura de banda de rede.
redeReceberQualidade Um indicador sobre a qualidade do fluxo de entrada. - Defina paraBad quando houver um problema grave com o recebimento do fluxo.
- Definido para Poor quando há um problema leve com o recebimento do fluxo.
- Defina para Good quando não há problema com o recebimento do fluxo.
- Só é 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.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue a câmera para conservar a largura de banda disponível da Internet.
networkSendQuality Um indicador relativo à qualidade do fluxo de saída. - Defina paraBad quando houver um problema grave com o envio do fluxo.
- Definido para Poor quando há um problema leve com o envio do fluxo.
- Defina para Good quando não há problema com o envio do fluxo.
- Semelhante a receber diagnóstico de qualidade, só é 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. Mas, ele só funciona em uma chamada 1:1, pois depende de informações do outro lado para verificar a qualidade. Onde o outro lado tem que sinalizar os dados que foram recebidos.
Baixa largura de banda Certifique-se de que a chamada tem uma ligação à Internet fiá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 que o usuário final desligue sua câmera para conservar a largura de banda de internet disponível.

Valores de áudio

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
noSpeakerDevicesDisponível Não há nenhum dispositivo de saída de áudio (alto-falante) no sistema do usuário. - Definido para True quando não há dispositivos de alto-falante no sistema, e a seleção de alto-falantes é suportada.
- Defina para False quando há pelo menos um dispositivo de alto-falante no sistema, e a seleção de alto-falantes é suportada.
Todos os altifalantes estão desligados da tomada Quando o valor for definido como True, considere fornecer uma notificação visual ao usuário final de que sua sessão de chamada atual não tem nenhum alto-falante disponível.
falandoEnquantoMicrofoneIsMuted Falar enquanto está mudo. - Defina para True quando o microfone local estiver silenciado e o usuário local estiver falando.
- Defina para False quando o usuário local para de falar ou desativa o som do microfone.
- Este evento de diagnóstico pode ser desativado automaticamente se for acionado por um determinado número de vezes sem qualquer ação do usuário para evitar o ruído e fornecer uma melhor experiência ao usuário. Ele será reativado novamente quando ocorrer uma nova ação de silenciamento.
Durante uma chamada, silencie o microfone e fale nele. Quando o valor definido para True considerar dar uma notificação visual ao usuário final de que ele pode estar falando e não percebendo que seu áudio está silenciado.
noMicrophoneDevicesDisponível Nenhum dispositivo de captura de áudio (microfone) no sistema do usuário - Definido para True quando não há dispositivos de microfone no sistema.
- Defina para False quando houver pelo menos um dispositivo de microfone no sistema.
Todos os microfones são desligados durante a chamada. Quando o valor definido para True considerar 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 microfone da manjedoura do dispositivo.
microfoneNotFunctioning O microfone não está funcionando. - Defina para True quando não conseguimos iniciar o envio de fluxo de áudio local porque o dispositivo de microfone pode ter sido desativado no sistema ou está sendo usado por outro processo. Este UFD demora cerca de 10 segundos a ser levantado.
- Defina para False quando o microfone começa a enviar com sucesso o fluxo de áudio novamente.
Não há microfones disponíveis, acesso ao microfone desativado em um sistema Quando o valor definido para True fornecer notificação visual ao usuário final de que há um problema com seu microfone.
microfoneMuteInesperadamente O microfone está mudo - Defina para quando o True microfone entra no estado silenciado inesperadamente.
- Definido para quando o False microfone começa a enviar fluxo de áudio com sucesso
O microfone é silenciado do 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 uma chamada telefônica chega. 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 a chamada telefônica. Quando o valor estiver definido como True, notifique visualmente o usuário final de que a chamada foi silenciada porque uma chamada telefônica chegou. Para obter mais informações, consulte como lidar melhor com o silenciamento do sistema operacional em uma seção de chamada dos Serviços de Comunicação do Azure para obter mais detalhes.
microfonePermissionDenied há baixo volume do dispositivo ou é quase silencioso no macOS. - Defina para True quando a permissão de áudio é negada a partir das configurações do sistema (áudio).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS.
As permissões de microfone estão desativadas nas Configurações. Quando o valor estiver definido como True, notifique visualmente o 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 da câmara

Nome Descrição Valores possíveis Casos de utilização Passos de mitigação
câmeraFrozen A câmera para de produzir quadros por mais de 5 segundos. - Definido para 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 significa que os participantes remotos não estão renderizando seu vídeo na tela.
- Defina para False quando o congelamento termina e os usuários podem ver seu vídeo como de costume.
A câmera foi perdida durante a chamada ou rede ruim fez com que a câmera congelasse. Quando o valor estiver definido como True, considere notificar o usuário final de que a rede de participantes remotos pode estar ruim - possivelmente sugira que ele desligue a câmera para conservar a largura de banda. Para obter mais informações, consulte a seção Requisito de largura de banda de rede sobre as habilidades de Internet necessárias para uma chamada dos Serviços de Comunicação do Azure.
cameraStartFailed Falha genérica da câmera. - Definido para True quando não conseguimos começar a enviar vídeo local porque o dispositivo da câmera pode ter sido desativado no sistema ou está sendo usado por outro processo ~.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, notifique visualmente o usuário final de que a câmera falhou ao iniciar.
câmeraStartTimedOut Cenário comum onde a câmera está em mau estado. - Defina para quando o True tempo limite do dispositivo da câmera para começar a enviar fluxo de vídeo.
- Definido para quando o False dispositivo de câmera selecionado envia vídeo local com sucesso novamente.
Falhas na câmara Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).
cameraPermissionDenied As permissões da câmera foram negadas nas configurações. - Definido para True quando a permissão da câmera é negada a partir das configurações do sistema (vídeo).
- Definir para False uma aquisição de fluxo bem-sucedida.
Nota: Este diagnóstico só funciona no macOS Chrome.
As permissões da câmera estão desativadas nas configurações. Quando o valor estiver definido como True, notifique visualmente o 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.
câmeraParouInesperadamente Mau funcionamento da câmara - Definido para quando a True câmera entra no estado parado inesperadamente.
- Defina para quando a False câmera começa a enviar com sucesso fluxo de vídeo novamente.
Verifique se a câmera está funcionando corretamente. Quando o valor estiver definido como True, forneça uma notificação visual ao usuário final de que sua câmera possivelmente está tendo problemas. (Quando o valor é definido de volta para remover a False notificação).

Apenas nativo

Nome Descrição Valores possíveis Casos de utilização Passos de Mitigação
speakerVolumeIsZero Volume zero num dispositivo (altifalante). - Defina para True quando o volume do alto-falante é zero.
- Defina para quando o False volume do alto-falante não é zero.
Não ouvir áudio dos participantes de plantão. Quando o valor é definido como True, você pode ter acidentalmente o volume no menor (zero).
alto-falanteMudo O dispositivo de altifalante está desativado. - Defina para True quando o dispositivo de alto-falante está mudo.
- Defina para False quando o dispositivo de alto-falante não estiver mudo.
Não ouvir áudio dos participantes de plantão. Quando o valor é definido como True, você pode ter silenciado acidentalmente o alto-falante.
oradorOcupado Speaker já está em uso. Ou o dispositivo está sendo usado no modo exclusivo, ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. - Defina para True quando o tempo limite de aquisição do fluxo do dispositivo de alto-falante (áudio).
- Defina para quando a False aquisição do alto-falante for bem-sucedida.
Não ouvir o áudio dos participantes em serviço através do alto-falante. Quando value estiver definido como True, forneça uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o alto-falante e tentar fechá-lo.
speakerNotFunctioning O alto-falante não está funcionando (falha ao inicializar o cliente do dispositivo de áudio ou o dispositivo ficou inativo por mais de 5 segundos) - Defina para quando o True alto-falante não estiver disponível ou o tempo limite de aquisição do fluxo do dispositivo (áudio).
- Defina para quando a False aquisição do alto-falante for bem-sucedida.
Não ouvir o áudio dos participantes em serviço através do alto-falante. Tente verificar o estado do dispositivo de coluna.
microfoneOcupado O microfone já está em uso. Ou o dispositivo está sendo usado no modo exclusivo, ou o dispositivo está sendo usado no modo compartilhado e o chamador pediu para usar o dispositivo no modo exclusivo. - Defina para True quando o tempo limite de aquisição do fluxo do dispositivo de microfone (áudio).
- Defina para quando a False aquisição do microfone for bem-sucedida.
O seu áudio não chega a outros participantes na chamada. Quando value estiver definido como True, forneça uma notificação visual ao usuário final para que ele possa verificar se outro aplicativo está usando o microfone e tentar fechá-lo.

Acesso ao diagnóstico

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

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Eventos de diagnóstico voltados para o usuário

  • Implemente 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
  • Defina 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 ... 

Obtenha o diagnóstico mais recente voltado para o usuário

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