Share via


Diagnóstico pré-chamada

Importante

Este recurso dos Serviços de Comunicação do Azure está atualmente em visualização.

As APIs e SDKs de visualização são fornecidos sem um contrato de nível de serviço. Recomendamos que você não os use para cargas de trabalho de produção. Alguns recursos podem não ser suportados ou podem ter recursos restritos.

Para obter mais informações, consulte Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.

A API de Pré-Chamada permite que os desenvolvedores validem programaticamente a prontidão de um cliente para ingressar em uma Chamada dos Serviços de Comunicação do Azure. As APIs de pré-chamada podem ser acessadas por meio do SDK de chamada. Eles fornecem vários diagnósticos, incluindo o dispositivo, a conexão e a qualidade da chamada. As APIs de pré-chamada estão disponíveis apenas para Web (JavaScript). Habilitaremos esses recursos em todas as plataformas no futuro, nos forneceremos feedback sobre em quais plataformas você gostaria de ver APIs de pré-chamada.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.

  • Node.js versões ativas de Suporte de Longo Prazo (LTS) são recomendadas.

  • Um recurso ativo dos Serviços de Comunicação. Crie um recurso de Serviços de Comunicação.

  • Um Token de Acesso de Usuário para instanciar o cliente de chamada. Saiba como criar e gerenciar tokens de acesso de usuário. Você também pode usar a CLI do Azure e executar o próximo comando com sua cadeia de conexão para criar um usuário e um token de acesso. (Precisa pegar a cadeia de conexão do recurso por meio do portal do Azure.)

    az communication identity token issue --scope voip --connection-string "yourConnectionString"
    

    Para obter detalhes, consulte Usar a CLI do Azure para criar e gerenciar tokens de acesso.

Acessando APIs de pré-chamada

Importante

Os diagnósticos de pré-chamada estão disponíveis a partir da versão 1.9.1-beta.1 do SDK de chamada. Certifique-se de usar essa versão ao tentar as próximas instruções.

Para acessar a API de pré-chamada, você precisa inicializar um e provisionar um callClienttoken de acesso dos Serviços de Comunicação do Azure. Lá você pode acessar o recurso e o PreCallDiagnosticsstartTest método.

import { CallClient, Features} from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';

const callClient = new CallClient(); 
const tokenCredential = new AzureCommunicationTokenCredential("INSERT ACCESS TOKEN");
const preCallDiagnosticsResult = await callClient.feature(Features.PreCallDiagnostics).startTest(tokenCredential);

Quando a execução terminar, os desenvolvedores poderão acessar o objeto resultante.

Resultados do diagnóstico

A API de pré-chamada retorna um diagnóstico completo do dispositivo, incluindo detalhes como permissões do dispositivo, disponibilidade e compatibilidade, estatísticas de qualidade da chamada e diagnóstico na chamada. Os resultados são retornados como um PreCallDiagnosticsResult objeto.


export declare type PreCallDiagnosticsResult  = {
    deviceAccess: Promise<DeviceAccess>;
    deviceEnumeration: Promise<DeviceEnumeration>;
    inCallDiagnostics: Promise<InCallDiagnostics>;
    browserSupport?: Promise<DeviceCompatibility>;
    id: string;
    callMediaStatistics?: Promise<MediaStatsCallFeature>;
};

Os objetos de resultado individuais podem ser acessados como tal usando a preCallDiagnosticsResult constante. Os resultados de testes individuais devem ser devolvidos à medida que são concluídos, com muitos dos resultados dos testes disponíveis imediatamente. Se você usar o teste, os resultados podem levar até 1 minuto, pois o inCallDiagnostics teste valida a qualidade do vídeo e do áudio.

Suporte do browser

Verificação de compatibilidade do navegador. Verifica a Browser compatibilidade e OS fornece um Supported ou NotSupported valor de volta.


const browserSupport =  await preCallDiagnosticsResult.browserSupport;
  if(browserSupport) {
    console.log(browserSupport.browser)
    console.log(browserSupport.os)
  }

No caso de o teste falhar e o navegador que está sendo usado pelo usuário é , a maneira mais fácil de corrigir isso é NotSupportedpedindo ao usuário para mudar para um navegador suportado. Consulte os navegadores suportados na nossa documentação.

Nota

Problema conhecido: browser support teste de retorno Unknown nos casos em que deveria estar retornando um valor correto.

Acesso ao dispositivo

Verificação de permissão. Verifica se os dispositivos de vídeo e áudio estão disponíveis do ponto de vista das permissões. Fornece boolean valor para audio e video dispositivos.


  const deviceAccess =  await preCallDiagnosticsResult.deviceAccess;
  if(deviceAccess) {
    console.log(deviceAccess.audio)
    console.log(deviceAccess.video)
  }

Caso o teste falhe e as permissões sejam falsas para áudio e vídeo, o usuário não deve continuar participando de uma chamada. Em vez disso, você precisa solicitar que o usuário habilite as permissões. Para fazê-lo, a melhor maneira é fornecida a instrução específica sobre como acessar o acesso de permissão com base no sistema operacional, versão e navegador em que eles estão. Para mais informações sobre permissões, consulte as nossas recomendações.

Enumeração de dispositivos

Disponibilidade do dispositivo. Verifica se os dispositivos de microfone, câmera e alto-falante estão detetados no sistema e prontos para uso. Fornece um Available ou NotAvailable valor de volta.


  const deviceEnumeration = await preCallDiagnosticsResult.deviceEnumeration;
  if(deviceEnumeration) {
    console.log(deviceEnumeration.microphone)
    console.log(deviceEnumeration.camera)
    console.log(deviceEnumeration.speaker)
  }

No caso de os dispositivos não estarem disponíveis, o utilizador não deve continuar a participar numa chamada. Em vez disso, o usuário deve ser solicitado a verificar as conexões do dispositivo para garantir que todos os fones de ouvido, câmeras ou alto-falantes estejam conectados corretamente. Para obter mais informações sobre gerenciamento de dispositivos, consulte nossa documentação

Diagnóstico InCall

Realiza uma chamada rápida para verificar as métricas de áudio e vídeo na chamada e fornece os resultados de volta. Inclui conectividade (, booleano), qualidade de largura de banda (, ) e diagnóstico de chamadas para áudio e vídeo (connectedbandWidthdiagnostics). 'Bad' | 'Average' | 'Good' Os diagnósticos são fornecidos jitterpacketLoss e rtt os resultados são gerados usando um simples grau de qualidade ('Bad' | 'Average' | 'Good').

O diagnóstico InCall usa estatísticas de qualidade de mídia para calcular pontuações de qualidade e diagnosticar problemas. Durante o diagnóstico pré-chamada, o conjunto completo de estatísticas de qualidade de mídia está disponível para consumo. Essas estatísticas incluem valores brutos em métricas de vídeo e áudio que podem ser usadas programaticamente. O diagnóstico InCall fornece uma camada de conveniência sobre estatísticas de qualidade de mídia para consumir os resultados sem a necessidade de processar todos os dados brutos. Consulte a secção sobre estatísticas dos meios de comunicação social para obter instruções de acesso.


  const inCallDiagnostics =  await preCallDiagnosticsResult.inCallDiagnostics;
  if(inCallDiagnostics) {    
    console.log(inCallDiagnostics.connected)
    console.log(inCallDiagnostics.bandWidth)
    console.log(inCallDiagnostics.diagnostics.audio)
    console.log(inCallDiagnostics.diagnostics.video)
  }

Nesta etapa, há vários pontos de falha a serem observados. Os valores fornecidos pela API são baseados nos valores de limite exigidos pelo serviço. Esses limites brutos podem ser encontrados em nossa documentação de estatísticas de qualidade de mídia.

  • Se a conexão falhar, o usuário deve ser solicitado a verificar novamente sua conectividade de rede. As falhas de conexão também podem ser atribuídas a condições de rede como DNS, Proxies ou Firewalls. Para obter mais informações sobre a configuração de rede recomendada, consulte nossa documentação.
  • Se a largura de banda for , o usuário deve ser solicitado a experimentar uma rede diferente ou verificar a disponibilidade de largura de Badbanda em sua rede atual. Certifique-se de que nenhuma outra atividade de alta largura de banda possa estar ocorrendo.

Estatísticas da mídia

Para estatísticas granulares sobre métricas de qualidade como desvio, perda de pacotes, rtt, etc. callMediaStatistics são fornecidos como parte do preCallDiagnosticsResult recurso. Veja a lista completa e a descrição das métricas disponíveis no artigo vinculado. Você pode assinar as estatísticas de mídia de chamada para obter a coleção completa deles. Essa estatística é a métrica bruta usada para calcular os resultados do diagnóstico do InCall e que pode ser consumida granularmente para análise posterior.


const mediaStatsCollector = callMediaStatistics.startCollector(); 

mediaStatsCollector.on('mediaStatsEmitted', (mediaStats: SDK.MediaStats) => { 
    // process the stats for the call. 
    console.log(mediaStats);
});

Preços

Quando o teste de diagnóstico de pré-chamada é executado, nos bastidores ele usa minutos de chamada para executar o diagnóstico. O teste dura cerca de 30 segundos, consumindo até 30 segundos de chamada, que é cobrada à taxa padrão de US $ 0,004 por participante por minuto. Para o caso de diagnóstico Pré-Chamada, a cobrança será para 1 participante x 30 segundos = $0,002.

Próximos passos