Diagnóstico de pré-chamada
Importante
Este recurso dos Serviços de Comunicação do Azure estão atualmente em versão prévia.
Versões prévias das APIs e dos SDKs são fornecidas sem um contrato de nível de serviço. É recomendável que você não as use para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou talvez ter restrição de recursos.
Para saber mais, consulte os Termos de Uso Complementares das Versões Prévias do Microsoft Azure.
O recurso de API de pré-chamada permite que os desenvolvedores validem programaticamente a preparação de um cliente para ingressar em uma chamada dos Serviços de Comunicação do Azure. Você só pode acessar recursos de pré-chamada usando o SDK de Chamada. O recurso de diagnóstico de pré-chamada fornece vários diagnósticos, incluindo dispositivo, conexão e qualidade de chamada. O recurso diagnóstico de pré-chamada está disponível apenas para Web (JavaScript). Planejamos habilitar esses recursos entre plataformas no futuro. Forneça comentários sobre quais plataformas você deseja ver o diagnóstico de pré-chamada habilitado.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Node.js versões de LTS (Suporte a Longo Prazo) ativas são recomendadas.
Um recurso ativo dos Serviços de Comunicação. Crie um recurso dos Serviços de Comunicação.
Um Token de Acesso do Usuário para criar uma instância do cliente de chamada. Saiba como criar e gerenciar os tokens de acesso do usuário. Você também pode usar a CLI do Azure e executar o próximo comando com a cadeia de conexão para criar um usuário e um token de acesso. Lembre-se de copiar a cadeia de conexão do recurso por meio do portal do Azure.
az communication identity token issue --scope voip --connection-string "yourConnectionString"
Para saber mais, confira Usar a CLI do Azure para criar e gerenciar tokens de acesso.
Acessando o diagnóstico de pré-chamada
Importante
O diagnóstico de pré-chamada está disponível a partir da versão 1.9.1-beta.1 do SDK de Chamada. Use essa versão ou superior ao seguir estas instruções.
Para acessar o diagnóstico de pré-chamada, você precisa inicializar um callClient
e provisionar um token de acesso dos Serviços de Comunicação do Azure. Lá, você pode acessar o recurso PreCallDiagnostics
e o método startTest
.
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);
Depois que ele terminar de ser executado, os desenvolvedores poderão acessar o objeto de resultado.
Resultados do diagnóstico
O diagnóstico de pré-chamada retorna um diagnóstico completo do dispositivo, incluindo detalhes como permissões de dispositivo, disponibilidade e compatibilidade, estatísticas de qualidade de chamada e diagnóstico em chamada. Os resultados são retornados como um objeto PreCallDiagnosticsResult
.
export declare type PreCallDiagnosticsResult = {
deviceAccess: Promise<DeviceAccess>;
deviceEnumeration: Promise<DeviceEnumeration>;
inCallDiagnostics: Promise<InCallDiagnostics>;
browserSupport?: Promise<DeviceCompatibility>;
id: string;
callMediaStatistics?: Promise<MediaStatsCallFeature>;
};
Você pode acessar objetos de resultado individuais usando o tipo preCallDiagnosticsResult
. Os resultados de testes individuais são retornados à medida que são concluídos, com muitos dos resultados do teste sendo disponibilizados imediatamente. Se você usar o teste inCallDiagnostics
, os resultados poderão levar até 1 minuto, pois o teste valida a qualidade do vídeo e do áudio.
Suporte ao navegador
Verificação de compatibilidade do navegador. Verifica a compatibilidade de Browser
e OS
e retorna um valor Supported
ou NotSupported
.
const browserSupport = await preCallDiagnosticsResult.browserSupport;
if(browserSupport) {
console.log(browserSupport.browser)
console.log(browserSupport.os)
}
Se o teste falhar e o navegador que está sendo usado pelo usuário for NotSupported
, a maneira mais fácil de corrigir isso é solicitando que o usuário mude para um navegador com suporte. Consulte os navegadores com suporte na visão geral do SDK de Chamada > Suporte ao SDK de Chamada JavaScript por sistema operacional e navegador.
Observação
Problema conhecido: teste browser support
retornando Unknown
nos casos em que ele deve retornar um valor correto.
Acesso ao dispositivo
A verificação de permissão determina se os dispositivos de áudio e vídeo estão disponíveis de uma perspectiva de permissões. Fornece valor boolean
para os dispositivos audio
e video
.
const deviceAccess = await preCallDiagnosticsResult.deviceAccess;
if(deviceAccess) {
console.log(deviceAccess.audio)
console.log(deviceAccess.video)
}
Se o teste falhar e as permissões forem falsas para áudio e vídeo, o usuário não deverá continuar ingressando em uma chamada. Em vez disso, solicite ao usuário que habilite as permissões. A melhor maneira de fazer isso é fornecendo a instrução específica sobre como acessar permissões com base no sistema operacional, versão e navegador que eles estão usando. Para obter mais informações sobre permissões, consulte a lista de verificação de para obter experiências avançadas de chamada em navegadores da Web.
Enumeração do dispositivo
Disponibilidade do dispositivo. Verifica se dispositivos de microfone, câmera e alto-falante são detectados no sistema e estão prontos para uso. Retorna um valor Available
ou NotAvailable
.
const deviceEnumeration = await preCallDiagnosticsResult.deviceEnumeration;
if(deviceEnumeration) {
console.log(deviceEnumeration.microphone)
console.log(deviceEnumeration.camera)
console.log(deviceEnumeration.speaker)
}
Se os dispositivos não estiverem disponíveis, o usuário não deverá continuar ingressando em uma chamada. Em vez disso, solicite ao usuário que verifique as conexões do dispositivo para garantir que todos os fones de ouvido, câmeras ou alto-falantes estejam corretamente conectados. Para obter mais informações sobre o gerenciamento de dispositivos, consulte Gerenciar vídeo durante chamadas.
Diagnóstico de InCall
Executa uma chamada rápida para verificar as métricas de chamada para áudio e vídeo e fornece resultados de volta. Inclui conectividade (connected
, booliano), qualidade de largura de banda (bandWidth
, 'Bad' | 'Average' | 'Good'
) e diagnóstico de chamada para áudio e vídeo (diagnostics
). As categorias de diagnóstico fornecidas incluem jitter
, packetLoss
e rtt
e os resultados são gerados usando uma nota de qualidade simples ('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 de 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 você pode usar programaticamente.
O diagnóstico InCall fornece uma camada de conveniência sobre as estatísticas de qualidade da mídia para consumir os resultados sem a necessidade de processar todos os dados brutos. Para obter mais informações, incluindo instruções de acesso, consulte Estatísticas de qualidade de mídia para uma chamada em andamento.
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 possíveis. Os valores fornecidos pela API são baseados nos valores de limite exigidos pelo serviço. Os limites brutos podem ser encontrados nas estatísticas de qualidade da mídia.
- Se uma conexão falhar, solicite aos usuários que verifiquem novamente a conectividade de rede. 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 Recomendações de rede.
- Se a largura de banda for
Bad
, solicite aos usuários que tentem uma rede diferente ou verifiquem a disponibilidade de largura de banda em sua rede atual. Verifique se nenhuma outra atividade de alta largura de banda está ocorrendo.
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, usando até 30 segundos de tempo de chamada, que é cobrado à taxa padrão de US$ 0,004 por participante por minuto. Para o caso de diagnóstico de pré-chamada, a cobrança é de 1 participante x 30 segundos = US$ 0,002.