Use a Pesquisa de Fim de Chamada para coletar comentários do usuário
Este tutorial mostra como usar a Pesquisa de Fim de Chamada dos Serviços de Comunicação do Azure para JavaScript / Web SDK.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Um recurso ativo dos Serviços de Comunicação. Crie um recurso dos Serviços de Comunicação. Os resultados da pesquisa estão vinculados a recursos únicos dos Serviços de Comunicação.
- Um Workspace do Log Analytics ativo, também conhecido como Logs do Azure Monitor. Confira Fim dos Logs de Pesquisa de Chamadas.
- Para realizar uma pesquisa com perguntas personalizadas usando texto de formulário gratuito, você precisará de um recurso do App Insight.
Importante
A Pesquisa de Fim de Chamada está disponível a partir da versão 1.13.1 do SDK de Chamadas. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
- Node.js versões de LTS (Suporte a Longo Prazo) ativas são recomendadas.
Amostra do uso da API
O recurso Pesquisa de Fim de Chamada deve ser usado após o término da chamada. Os usuários podem avaliar qualquer tipo de chamada VoIP, individual, grupo, reunião, saída e entrada. Quando a chamada de um usuário termina, seu aplicativo pode mostrar uma interface de usuário para o usuário final, permitindo que ele escolha uma pontuação de classificação e, se necessário, escolha os problemas encontrados durante a chamada na nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada individual. Após o término da chamada, seu aplicativo poderá mostrar uma interface de usuário de pesquisa e, assim que o usuário escolher uma classificação, seu aplicativo deverá chamar a API de recurso para enviar a pesquisa com as opções do usuário.
Recomendamos que você use a escala de classificação padrão. No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada. Você pode conferir o aplicativo de exemplo para o uso da API de amostra.
Somente chamadas tarifadas, sem escala personalizada
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 5 }, // issues are optional
}).then(() => console.log('survey submitted successfully'));
OverallRating é uma categoria obrigatória em todas as pesquisas.
Avaliar somente chamadas, com escala e problemas personalizados
call.feature(Features.CallSurvey).submitSurvey({
overallRating: {
score: 1, // my score
scale: { // my custom scale
lowerBound: 0,
upperBound: 1,
lowScoreThreshold: 0
},
issues: ['HadToRejoin'] // my issues, check the table below for all available issues
}
}).then(() => console.log('survey submitted successfully'));
Avalie o áudio e o vídeo em geral com um exemplo de edição
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 3 },
audioRating: { score: 4 },
videoRating: { score: 3, issues: ['Freezes'] }
}).then(() => console.log('survey submitted successfully'))
Lidar com erros que o SDK pode enviar
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 3 }
}).catch((e) => console.log('error when submitting survey: ' + e))
Localizar diferentes tipos de erros
Falhas ao enviar a pesquisa:
A API retornará as seguintes mensagens de erro se a validação de dados falhar ou se a pesquisa não puder ser enviada.
Pelo menos uma classificação da pesquisa é necessária.
Na escala padrão, X deve ir de 1 a 5. — onde X é um dos seguintes:
- overallRating.score
- audioRating.score
- videoRating.score
- ScreenshareRating.score
{propertyName}: {rating.score} deve estar entre {rating.scale?.lowerBound} e {rating.scale?.upperBound}.
{propertyName}: {rating.scale?.lowScoreThreshold} deve estar entre {rating.scale?.lowerBound} e {rating.scale?.upperBound}.
{propertyName} lowerBound: {rating.scale?.lowerBound} e upperBound: {rating.scale?.upperBound} devem estar entre 0 e 100.
Tente novamente [o ACS falhou ao enviar a pesquisa, devido a um erro de rede ou outro erro].
Retornaremos todos os códigos de erro com uma mensagem.
- Código de erro 400 (bad request) para todas as mensagens de erro, exceto uma.
{ message: validationErrorMessage, code: 400 }
- Um 408 (tempo limite excedido) quando o evento é descartado:
{ message: "Please try again.", code: 408 }
Todos os valores possíveis
Configuração padrão da API de pesquisa
Categorias de classificação da API | Valor de Corte* | Intervalo de Entrada | Comentários |
---|---|---|---|
Chamada geral | 2 | 1 - 5 | Pesquisa a experiência geral de qualidade de um participante da chamada em uma escala de 1 a 5. Uma resposta de 1 indica uma experiência de chamada imperfeita e 5 indica uma chamada perfeita. Um valor de corte de 2 significa que uma resposta do cliente de 1 ou 2 indica uma experiência de chamada menos do que perfeita. |
Áudio | 2 | 1 - 5 | Uma resposta de 1 indica uma experiência de áudio imperfeita e 5 indica que nenhum problema de áudio ocorreu. |
Vídeo | 2 | 1 - 5 | Uma resposta de 1 indica uma experiência de vídeo imperfeita e 5 indica que nenhum problema de vídeo ocorreu. |
Compartilhamento de tela | 2 | 1 - 5 | Uma resposta de 1 indica uma experiência de compartilhamento de tela imperfeita e 5 indica que nenhum problema de compartilhamento de tela foi experimentado. |
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Mais marcas de pesquisa
Categorias de Classificação | Marcas Opcionais |
---|---|
Chamada geral | CallCannotJoin CallCannotInvite HadToRejoin CallEndedUnexpectedly OtherIssues |
Áudio | NoLocalAudio NoRemoteAudio Echo AudioNoise LowVolume AudioStoppedUnexpectedly DistortedSpeech AudioInterruption OtherIssues |
Vídeo | NoVideoReceived NoVideoSent LowQuality Freezes StoppedUnexpectedly DarkVideoReceived AudioVideoOutOfSync OtherIssues |
Compartilhamento de tela | NoContentLocal NoContentRemote CannotPresent LowQuality Freezes StoppedUnexpectedly LargeDelay OtherIssues |
Opções de personalização
Você pode escolher coletar cada um dos quatro valores da API ou somente aqueles que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral da chamada, em vez de perguntar sobre a experiência de áudio, vídeo e compartilhamento de tela. Você também pode personalizar os intervalos de entrada para atender às suas necessidades. O intervalo de entrada padrão é de 1 a 5 para Chamada Geral, Áudio, Vídeo e Compartilhamento de Tela. No entanto, cada valor da API pode ser personalizado de um mínimo de 0 a um máximo de 100.
Exemplos de personalização
Categorias de classificação da API | Valor de Corte* | Intervalo de Entrada |
---|---|---|
Chamada geral | 0–100 | 0–100 |
Áudio | 0–100 | 0–100 |
Vídeo | 0–100 | 0–100 |
Compartilhamento de tela | 0–100 | 0–100 |
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Perguntas personalizadas
Além de usar a API de Pesquisa de Fim da Chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las com os resultados da Pesquisa de Fim da Chamada. Abaixo, você encontrará etapas para incorporar suas próprias perguntas ao cliente em uma pesquisa e consultar os resultados da API de Pesquisa de Fim de Chamada e suas próprias perguntas de pesquisa.
Insira o Azure AppInsights em seu aplicativo Clique aqui para saber mais sobre a inicialização do App Insight usando JavaScript sem formatação. Como alternativa, você pode usar o NPM para obter as dependências do Application Insights. Clique aqui para saber mais sobre a inicialização do App Insight usando o NPM.
Crie uma interface do usuário em seu aplicativo que fornecerá perguntas personalizadas ao usuário e coletará suas entradas. Vamos supor que seu aplicativo reuniu respostas como uma cadeia de caracteres na variável
improvementSuggestion
Envie os resultados da pesquisa para o ACS e envie a resposta do usuário usando o App Insights:
currentCall.feature(SDK.Features.CallSurvey).submitSurvey(survey).then(res => { // `improvementSuggestion` contains custom, user response if (improvementSuggestion !== '') { appInsights.trackEvent({ name: "CallSurvey", properties: { // Survey ID to correlate the survey id: res.id, // Other custom properties as key value pair improvementSuggestion: improvementSuggestion } }); } }); appInsights.flush();
As respostas do usuário enviadas usando o AppInsights estarão disponíveis no seu workspace do AppInsights. Você pode usar pastas de trabalho para consultar entre vários recursos, correlacionar classificações de chamadas e dados de pesquisa personalizados. Etapas para correlacionar as classificações de chamada e os dados de pesquisa personalizados:
- Crie novas Pastas de Trabalho (Recurso do ACS –> Monitoramento –> Pastas de Trabalho –> Novas) e consulte dados da Pesquisa de Chamadas do recurso do ACS.
- Adicionar nova consulta (+Adicionar –> Adicionar consulta)
- Verifique se
Data source
éLogs
eResource type
éCommunication
- Você pode renomear a consulta (Configurações Avançadas –> Nome da etapa [exemplo: call-survey])
- Lembre-se de que isso pode exigir no máximo 2 horas até que os dados da pesquisa fiquem visíveis no portal do Azure. Consulte os dados de classificação de chamada–
ACSCallSurvey | where TimeGenerated > now(-24h)
- Adicione outra consulta para obter dados do App Insights (+Adicionar –> Adicionar consulta)
- Verifique se
Data source
éLogs
eResource type
éApplication Insights
- Consulte os eventos personalizados–
customEvents | where timestamp > now(-24h) | where name == 'CallSurvey' | extend d=parse_json(customDimensions) | project SurveyId = d.id, ImprovementSuggestion = d.improvementSuggestion
- Você pode renomear a consulta (Configurações Avançadas –> Nome da etapa [exemplo: custom-call-survey])
- Por fim, mescle essas duas consultas por surveyId. Adicione nova consulta (+Adicionar –> Adicionar consulta).
- Certifique-se de que o
Data source
é Mesclar e selecioneMerge type
conforme necessário
título: Pesquisa de Fim de Chamada dos Serviços de Comunicação do Azure titleSuffix: Um documento tutorial dos Serviços de Comunicação do Azure descrição: Saiba como usar a Pesquisa de fim de chamada para coletar comentários do usuário. autor: viniciusl-msft ms.author: viniciusl manager: gaobob services: azure-communication-services ms.date: 30/07/2024 ms.topic: tutorial ms.service: azure-communication-services ms.subservice: calling
Importante
A Pesquisa de Fim de Chamada está disponível a partir da versão 2.10.0 do SDK de Chamadas. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Amostra do uso da API
O recurso Pesquisa de Fim de Chamada deve ser usado após o término da chamada. Os usuários podem avaliar qualquer tipo de chamada VoIP, individual, grupo, reunião, saída e entrada. Quando a chamada de um usuário termina, seu aplicativo pode mostrar uma interface de usuário para o usuário final, permitindo que ele escolha uma pontuação de classificação e, se necessário, escolha os problemas encontrados durante a chamada na nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada individual. Após o término da chamada, seu aplicativo poderá mostrar uma interface de usuário de pesquisa e, assim que o usuário escolher uma classificação, seu aplicativo deverá chamar a API de recurso para enviar a pesquisa com as opções do usuário.
Recomendamos que você use a escala de classificação padrão, que é a classificação cinco estrelas (entre 1 e 5). No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada.
Iniciar uma pesquisa
Você cria um objeto CallSurvey
iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso esse objeto CallSurvey
específico não seja enviado posteriormente, isso significa que a pesquisa foi ignorada ou ignorada pelo cliente final.
SurveyCallFeature surveyCallFeature = call.feature(Features.SURVEY);
try {
CallSurvey survey = surveyCallFeature.startSurvey().get();
} catch (InterruptedException | ExecutionException e) {
// failure to start survey
}
Uso geral
Ao fazer chamadas de classificação, você deve respeitar os valores definidos no campo de escala. O valor lowerBound indica a pior experiência possível, enquanto o valor upperBound significa a experiência perfeita. Os valores da chave são inclusivos.
OverallRating é uma categoria obrigatória em todas as pesquisas.
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Para obter mais informações sobre o uso da pesquisa sugerida, consulte Conceitos da Pesquisa
Somente chamadas tarifadas, sem escala personalizada
SurveyScore overall = new SurveyScore();
overall.setScore(5);
callSurvey.setOverallScore(overall);
Avaliar somente chamadas, com escala e problemas personalizados
// configuring scale
CallSurveyRatingScale ratingScale = new CallSurveyRatingScale();
ratingScale.setLowerBound(0);
ratingScale.setLowerBound(1);
ratingScale.setLowScoreThreshold(0);
SurveyScore overall = new SurveyScore();
overall.setScale(ratingScale);
// setting score according to scale
overall.setScore(1);
callSurvey.setOverallScore(overall);
// reporting one or more issues
callSurvey.setCallIssues(CallIssues.HAD_TO_REJOIN);
Avalie o áudio e o vídeo em geral com um exemplo de edição
SurveyScore overall = new SurveyScore();
overall.setScore(3);
SurveyScore audio = new SurveyScore();
audio.setScore(4);
SurveyScore video = new SurveyScore();
video.setScore(3);
callSurvey.setOverallScore(overall);
callSurvey.setAudioScore(audio);
callSurvey.setVideoScore(video);
callSurvey.setVideoIssues(VideoIssues.FREEZES);
Enviar Pesquisa e manipular erros que o SDK pode enviar
try {
CallSurveyResult survey = surveyCallFeature.submitSurvey(survey).get();
} catch (InterruptedException e) {
// Threading error
} catch (ExecutionException e) {
Log.e("SURVEY", e.getCause().getMessage());
}
Localizar diferentes tipos de erros
Falhas ao enviar a pesquisa:
A API submitSurvey pode retornar um erro nos seguintes cenários:
A classificação geral da pesquisa é necessária.
Os limites
CallSurveyRatingScale
devem estar entre 0 e 100. LowerBound deve ser menor que UpperBound. LowScoreThreshold deve estar dentro dos limites.Qualquer uma das pontuações deve respeitar os limites definidos pelo
CallSurveyRatingScale
. Todos os valores no objetoCallSurveyRatingScale
são inclusivos. Usando a escala padrão, o valor da pontuação deve estar entre 1 e 5.A pesquisa não pode ser enviada devido a um erro de rede/serviço.
Marcas de pesquisa disponíveis
Chamada geral
Marca | Descrição |
---|---|
CannotJoin |
O cliente não pôde ingressar em uma chamada |
CannotInvite |
O cliente não pôde adicionar um novo participante na chamada |
HadToRejoin |
O cliente saiu e entrou novamente na chamada como uma solução alternativa para um problema |
CallEndedUnexpectedly |
A chamada do cliente terminou sem motivo aparente |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de áudio
Marca | Descrição |
---|---|
NoLocalAudio |
Nenhum áudio no computador do cliente da chamada, incapacidade de ouvir qualquer pessoa na chamada |
NoRemoteAudio |
Áudio ausente de um participante específico |
Echo |
Eco sendo percebido na chamada |
AudioNoise |
Áudio recebido com ruído não intencional |
LowVolume |
Áudio muito baixo |
AudioStoppedUnexpectedly |
Áudio interrompido sem motivo claro (por exemplo, ninguém está mudo) |
DistortedSpeech |
A voz de um participante está distorcida, diferente da voz esperada |
AudioInterruption |
O cliente experimenta interrupções de áudio, cortes de voz etc. |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de vídeo
Marca | Descrição |
---|---|
NoVideoReceived |
O cliente não recebe vídeo de um participante |
NoVideoSent |
O cliente inicia o vídeo, mas ninguém na chamada é capaz de vê-lo |
LowQuality |
Vídeo de baixa qualidade |
Freezes |
Congelamentos de Vídeo |
StoppedUnexpectedly |
O Compartilhamento de Tela é interrompido sem motivo claro (por exemplo, a câmera está ativada e a chamada de vídeo está ativada) |
DarkVideoReceived |
O vídeo está sendo enviado, mas o participante vê apenas uma caixa escura (ou outra única cor) |
AudioVideoOutOfSync |
Vídeo e áudio não parecem estar em sincronia |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de compartilhamento de tela
Marca | Descrição |
---|---|
NoContentLocal |
O cliente não recebe compartilhamento de tela de um participante que está compartilhando |
NoContentRemote |
O cliente está compartilhando a tela, mas outros participantes não conseguem vê-la |
CannotPresent |
Não é possível iniciar o compartilhamento de tela |
LowQuality |
Vídeo de compartilhamento de tela de baixa qualidade, por exemplo, não é possível ler |
Freezes |
O Compartilhamento de Tela congela durante a apresentação |
StoppedUnexpectedly |
O compartilhamento de tela é interrompido sem motivo claro (por exemplo, o compartilhamento de tela não foi interrompido pelo cliente) |
LargeDelay |
Atraso percebido entre o que está sendo mostrado e o que é visto |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Opções de personalização
Você pode escolher coletar cada um dos quatro valores da API ou somente aqueles que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral da chamada, em vez de perguntar sobre a experiência de áudio, vídeo e compartilhamento de tela. Você também pode personalizar os intervalos de entrada para atender às suas necessidades. O intervalo de entrada padrão é de 1 a 5 para Chamada Geral, Áudio, Vídeo e Compartilhamento de Tela. No entanto, cada valor da API pode ser personalizado de um mínimo de 0 a um máximo de 100.
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Perguntas personalizadas
Além de usar a API de Pesquisa de Fim da Chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las com os resultados da Pesquisa de Fim da Chamada.
O conteúdo de resultado da operação SubmitSurvey
fornece dados que você pode usar para correlacionar dados da Pesquisa ACS com seus próprios dados e armazenamento personalizados. A classe CallSurveyResult
tem o campo SurveyId
que indica um identificador exclusivo para a pesquisa e CallId
indica um identificador para a chamada em que a pesquisa foi gerada. Salvar esses identificadores junto com seus dados personalizados permite que os dados sejam associados exclusivamente.
Importante
A Pesquisa de Fim de Chamada está disponível a partir da versão 2.10.0 do SDK de Chamadas DO iOS. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Amostra do uso da API
O recurso Pesquisa de Fim de Chamada deve ser usado após o término da chamada. Os usuários podem avaliar qualquer tipo de chamada VoIP, individual, grupo, reunião, saída e entrada. Quando a chamada de um usuário termina, seu aplicativo pode mostrar uma interface de usuário para o usuário final, permitindo que ele escolha uma pontuação de classificação e, se necessário, escolha os problemas encontrados durante a chamada na nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada individual. Após o término da chamada, seu aplicativo poderá mostrar uma interface de usuário de pesquisa e, assim que o usuário escolher uma classificação, seu aplicativo deverá chamar a API de recurso para enviar a pesquisa com as opções do usuário.
Recomendamos que você use a escala de classificação padrão, que é a classificação cinco estrelas (entre 1 e 5). No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada.
Iniciar uma pesquisa
Você cria um objeto CallSurvey
iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso esse objeto CallSurvey
específico não seja enviado posteriormente, isso significa que a pesquisa foi ignorada ou ignorada pelo cliente final.
var surveyCallFeature = self.call.feature(Features.survey)
do {
try self.callSurvey = await surveyFeature.startSurvey()
} catch {
print("Failure to start survey")
}
Uso geral
Ao fazer chamadas de classificação, você deve respeitar os valores definidos no campo de escala. O valor lowerBound indica a pior experiência possível, enquanto o valor upperBound significa a experiência perfeita. Os valores da chave são inclusivos.
OverallRating é uma categoria obrigatória em todas as pesquisas.
Para obter mais informações sobre o uso da pesquisa sugerida, consulte Conceitos da Pesquisa
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Somente chamadas tarifadas, sem escala personalizada
let overallScore = SurveyScore()
overallScore.score = Int32(5)
callSurvey.overallScore = overallScore
Avaliar somente chamadas, com escala e problemas personalizados
// configuring scale
var ratingScale = new CallSurveyRatingScale()
ratingScale.lowerBound = 0;
ratingScale.upperBound = 1;
ratingScale.lowScoreThreshold = 0;
SurveyScore overall = new SurveyScore();
overall.scale = ratingScale;
// setting score according to scale
overall.score = 1;
callSurvey.overallScore = overall;
// reporting one or more issues
callSurvey.callIssues = [ CallIssues.hadToRejoin ];
Avalie o áudio e o vídeo em geral com um exemplo de edição
let overall = SurveyScore();
overall.score = 3;
let audio = SurveyScore();
audio.score = 4;
let video = SurveyScore();
video.score = 3;
callSurvey.overallScore = overall;
callSurvey.audioScore = audio;
callSurvey.videoScore = video;
callSurvey.videoIssues = [ VideoIssues.freezes ];
Enviar Pesquisa e manipular erros que o SDK pode enviar
do {
var result = try await self.surveyFeature!.submit(survey: callSurvey)
} catch let error as NSError {
print("==> Survey Not Submitted " + error.localizedDescription)
}
Localizar diferentes tipos de erros
Falhas ao enviar a pesquisa:
A API submitSurvey pode retornar um erro nos seguintes cenários:
A classificação geral da pesquisa é necessária.
Os limites
CallSurveyRatingScale
devem estar entre 0 e 100. LowerBound deve ser menor que UpperBound. LowScoreThreshold deve estar dentro dos limites.Qualquer uma das pontuações deve respeitar os limites definidos pelo
CallSurveyRatingScale
. Todos os valores no objetoCallSurveyRatingScale
são inclusivos. Usando a escala padrão, o valor da pontuação deve estar entre 1 e 5.A pesquisa não pode ser enviada devido a um erro de rede/serviço.
Rótulos de Pesquisa Disponíveis
Chamada geral
Marca | Descrição |
---|---|
CannotJoin |
O cliente não pôde ingressar em uma chamada |
CannotInvite |
O cliente não pôde adicionar um novo participante na chamada |
HadToRejoin |
O cliente saiu e entrou novamente na chamada como uma solução alternativa para um problema |
CallEndedUnexpectedly |
A chamada do cliente terminou sem motivo aparente |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de áudio
Marca | Descrição |
---|---|
NoLocalAudio |
Nenhum áudio no computador do cliente da chamada, incapacidade de ouvir qualquer pessoa na chamada |
NoRemoteAudio |
Áudio ausente de um participante específico |
Echo |
Eco sendo percebido na chamada |
AudioNoise |
Áudio recebido com ruído não intencional |
LowVolume |
Áudio muito baixo |
AudioStoppedUnexpectedly |
Áudio interrompido sem motivo claro (por exemplo, ninguém está mudo) |
DistortedSpeech |
A voz de um participante está distorcida, diferente da voz esperada |
AudioInterruption |
O cliente experimenta interrupções de áudio, cortes de voz etc. |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de vídeo
Marca | Descrição |
---|---|
NoVideoReceived |
O cliente não recebe vídeo de um participante |
NoVideoSent |
O cliente inicia o vídeo, mas ninguém na chamada é capaz de vê-lo |
LowQuality |
Vídeo de baixa qualidade |
Freezes |
Congelamentos de Vídeo |
StoppedUnexpectedly |
O Compartilhamento de Tela é interrompido sem motivo claro (por exemplo, a câmera está ativada e a chamada de vídeo está ativada) |
DarkVideoReceived |
O vídeo está sendo enviado, mas o participante vê apenas uma caixa escura (ou outra única cor) |
AudioVideoOutOfSync |
Vídeo e áudio não parecem estar em sincronia |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de compartilhamento de tela
Marca | Descrição |
---|---|
NoContentLocal |
O cliente não recebe compartilhamento de tela de um participante que está compartilhando |
NoContentRemote |
O cliente está compartilhando a tela, mas outros participantes não conseguem vê-la |
CannotPresent |
Não é possível iniciar o compartilhamento de tela |
LowQuality |
Vídeo de compartilhamento de tela de baixa qualidade, por exemplo, não é possível ler |
Freezes |
O Compartilhamento de Tela congela durante a apresentação |
StoppedUnexpectedly |
O Compartilhamento de Tela é interrompido sem motivo claro (por exemplo, o compartilhamento de tela não foi interrompido pelo cliente) |
LargeDelay |
Atraso percebido entre o que está sendo mostrado e o que é visto |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Opções de personalização
Você pode escolher coletar cada um dos quatro valores da API ou somente aqueles que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral da chamada, em vez de perguntar sobre a experiência de áudio, vídeo e compartilhamento de tela. Você também pode personalizar os intervalos de entrada para atender às suas necessidades. O intervalo de entrada padrão é de 1 a 5 para Chamada Geral, Áudio, Vídeo e Compartilhamento de Tela. No entanto, cada valor da API pode ser personalizado de um mínimo de 0 a um máximo de 100.
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Perguntas personalizadas
Além de usar a API de Pesquisa de Fim da Chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las com os resultados da Pesquisa de Fim da Chamada.
No entanto, o conteúdo da operação de resultado SubmitSurvey
fornece dados que você pode usar para correlacionar dados da Pesquisa ACS com seus próprios dados e armazenamento personalizados. A classe CallSurveyResult
tem o campo SurveyId
que indica um identificador exclusivo para a pesquisa e CallId
indica um identificador para a chamada em que a pesquisa foi gerada. Salvar esses identificadores junto com seus dados personalizados permite que os dados sejam associados exclusivamente.
Importante
A Pesquisa de Fim de Chamada está disponível a partir da versão 1.8.0 do SDK de Chamadas do Windows. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Amostra do uso da API
O recurso Pesquisa de Fim de Chamada deve ser usado após o término da chamada. Os usuários podem avaliar qualquer tipo de chamada VoIP, individual, grupo, reunião, saída e entrada. Quando a chamada de um usuário termina, seu aplicativo pode mostrar uma interface de usuário para o usuário final, permitindo que ele escolha uma pontuação de classificação e, se necessário, escolha os problemas encontrados durante a chamada na nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada individual. Após o término da chamada, seu aplicativo poderá mostrar uma interface de usuário de pesquisa e, assim que o usuário escolher uma classificação, seu aplicativo deverá chamar a API de recurso para enviar a pesquisa com as opções do usuário.
Recomendamos que você use a escala de classificação padrão, que é a classificação cinco estrelas (entre 1 e 5). No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada.
Iniciar uma pesquisa
Você cria um objeto CallSurvey
iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso esse objeto CallSurvey
específico não seja enviado posteriormente, isso significa que a pesquisa foi ignorada ou ignorada pelo cliente final.
var surveyCallFeature = call.Features.Survey;
var survey = await surveyCallFeature.StartSurveyAsync();
Uso geral
Ao fazer chamadas de classificação, você deve respeitar os valores definidos no campo de escala. O valor lowerBound indica a pior experiência possível, enquanto o valor upperBound significa a experiência perfeita. Os valores da chave são inclusivos.
OverallRating é uma categoria obrigatória em todas as pesquisas.
Para obter mais informações sobre o uso da pesquisa sugerida, consulte Conceitos da Pesquisa
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Somente chamadas tarifadas, sem escala personalizada
survey.OverallScore = new CallSurveyScore() { Score = 5 };
Avaliar somente chamadas, com escala e problemas personalizados
// configuring scale and score
survey.OverallScore = new CallSurveyScore() {
Scale = new CallSurveyRatingScale() {
LowerBound = 0,
UpperBound = 1,
LowScoreThreshold = 1,
},
Score = 1
};
// reporting one or more issues
survey.OverallIssues = CallIssues.HadToRejoin;
Avalie o áudio e o vídeo em geral com um exemplo de edição
survey.OverallScore = new CallSurveyScore() {
Score = 5
};
survey.AudioScore = new CallSurveyScore() {
Score = 4
};
survey.VideoScore = new CallSurveyScore() {
Score = 3
};
survey.videoIssues = VideoIssues.Freezes;
Enviar Pesquisa e manipular erros que o SDK pode enviar
try
{
CallSurveyResult result = await surveyCallFeature.SubmitSurveyAsync(survey);
Console.WriteLine("Survey submitted" + result.SurveyId);
} catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Localizar diferentes tipos de erros
Falhas ao enviar a pesquisa:
A API submitSurvey pode retornar um erro nos seguintes cenários:
A classificação geral da pesquisa é necessária.
Os limites
CallSurveyRatingScale
devem estar entre 0 e 100. LowerBound deve ser menor que UpperBound. LowScoreThreshold deve estar dentro dos limites.Qualquer uma das pontuações deve respeitar os limites definidos pelo
CallSurveyRatingScale
. Todos os valores no objetoCallSurveyRatingScale
são inclusivos. Usando a escala padrão, o valor da pontuação deve estar entre 1 e 5.A pesquisa não pode ser enviada devido a um erro de rede/serviço.
Rótulos de Pesquisa Disponíveis
Chamada geral
Marca | Descrição |
---|---|
CannotJoin |
O cliente não pôde ingressar em uma chamada |
CannotInvite |
O cliente não pôde adicionar um novo participante na chamada |
HadToRejoin |
O cliente saiu e entrou novamente na chamada como uma solução alternativa para um problema |
EndedUnexpectedly |
A chamada do cliente terminou sem motivo aparente |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de áudio
Marca | Descrição |
---|---|
NoLocalAudio |
Nenhum áudio no computador do cliente da chamada, incapacidade de ouvir qualquer pessoa na chamada |
NoRemoteAudio |
Áudio ausente de um participante específico |
Echo |
Eco sendo percebido na chamada |
AudioNoise |
Áudio recebido com ruído não intencional |
LowVolume |
Áudio muito baixo |
AudioStoppedUnexpectedly |
Áudio interrompido sem motivo claro (por exemplo, ninguém está mudo) |
DistortedSpeech |
A voz de um participante está distorcida, diferente da voz esperada |
AudioInterruption |
O cliente experimenta interrupções de áudio, cortes de voz etc. |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de vídeo
Marca | Descrição |
---|---|
NoVideoReceived |
O cliente não recebe vídeo de um participante |
NoVideoSent |
O cliente inicia o vídeo, mas ninguém na chamada é capaz de vê-lo |
LowQuality |
Vídeo de baixa qualidade |
Freezes |
Congelamentos de Vídeo |
StoppedUnexpectedly |
O Compartilhamento de Tela é interrompido sem motivo claro (por exemplo, a câmera está ativada e a chamada de vídeo está ativada) |
DarkVideoReceived |
O vídeo está sendo enviado, mas o participante vê apenas uma caixa escura (ou outra única cor) |
AudioVideoOutOfSync |
Vídeo e áudio não parecem estar em sincronia |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Problemas de compartilhamento de tela
Marca | Descrição |
---|---|
NoContentLocal |
O cliente não recebe compartilhamento de tela de um participante que está compartilhando |
NoContentRemote |
O cliente está compartilhando a tela, mas outros participantes não conseguem vê-la |
CannotPresent |
Não é possível iniciar o compartilhamento de tela |
LowQuality |
Vídeo de compartilhamento de tela de baixa qualidade, por exemplo, não é possível ler |
Freezes |
O Compartilhamento de Tela congela durante a apresentação |
StoppedUnexpectedly |
O compartilhamento de tela é interrompido sem motivo claro (por exemplo, o compartilhamento de tela não foi interrompido pelo cliente) |
LargeDelay |
Atraso percebido entre o que está sendo mostrado e o que é visto |
OtherIssues |
Qualquer problema que não se ajuste às descrições anteriores |
Opções de personalização
Você pode escolher coletar cada um dos quatro valores da API ou somente aqueles que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral da chamada, em vez de perguntar sobre a experiência de áudio, vídeo e compartilhamento de tela. Você também pode personalizar os intervalos de entrada para atender às suas necessidades. O intervalo de entrada padrão é de 1 a 5 para Chamada Geral, Áudio, Vídeo e Compartilhamento de Tela. No entanto, cada valor da API pode ser personalizado de um mínimo de 0 a um máximo de 100.
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados do seu questionário. Quando você personaliza o valor de corte ou o intervalo de entrada, a Microsoft analisa os dados da pesquisa de acordo com sua personalização.
Perguntas personalizadas
Além de usar a API de Pesquisa de Fim da Chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las com os resultados da Pesquisa de Fim da Chamada.
No entanto, o conteúdo da operação de resultado SubmitSurvey
fornece dados que você pode usar para correlacionar dados da Pesquisa ACS com seus próprios dados e armazenamento personalizados. A classe CallSurveyResult
tem o campo SurveyId
que indica um identificador exclusivo para a pesquisa e CallId
indica um identificador para a chamada em que a pesquisa foi gerada. Salvar esses identificadores junto com seus dados personalizados permite que os dados sejam associados exclusivamente.
Colete os dados da pesquisa
Importante
Você deve habilitar uma Configuração de Diagnóstico no Azure Monitor para enviar os dados de log de suas pesquisas para um workspace do Log Analytics, Hubs de Eventos ou uma conta de armazenamento do Azure para receber e analisar os dados da pesquisa. Se você não enviar dados de pesquisa para uma dessas opções, os dados da pesquisa não serão armazenados e serão perdidos. Para habilitar esses logs para seus Serviços de Comunicação, consulte: Fim dos Logs de Pesquisa de Chamadas
Exibir dados da pesquisa com um workspace do Log Analytics
Você precisa habilitar um Workspace do Log Analytics para armazenar os dados de log de suas pesquisas e acessar os resultados da pesquisa. Para habilitar esses logs para seu Serviço de Comunicação, consulte: Fim dos Logs de Pesquisa de Chamadas.
- Você também pode integrar seu workspace do Log Analytics ao Power BI, confira: Integrar o Log Analytics ao Power BI.
Práticas recomendadas
Aqui estão nossos fluxos de pesquisa recomendados e sugestões de perguntas para consideração. Seu desenvolvimento pode usar nossa recomendação ou os fluxos e prompts de perguntas personalizados na sua interface visual.
Pergunta 1: como os usuários perceberam a experiência geral de qualidade de chamada? Recomendamos que você inicie a pesquisa somente perguntando sobre a qualidade geral dos participantes. Se você separar a primeira e a segunda pergunta, só será útil coletar respostas para problemas de áudio, vídeo e compartilhamento de tela se um participante da pesquisa indicar que teve problemas de qualidade na chamada.
- Prompt sugerido: “Como estava a qualidade da chamada?”
- Valores das Perguntas da API: Chamada Geral
Pergunta 2: o usuário percebeu algum problema de áudio, vídeo ou compartilhamento de tela na chamada? Se um participante da pesquisa respondeu à Pergunta 1 com uma pontuação igual ou inferior ao valor de corte da chamada geral, apresente a segunda pergunta.
- Prompt sugerido: “O que poderia ter sido melhor?”
- Valores das Perguntas da API: Áudio, Vídeo e Compartilhamento de Tela
Diretrizes da pesquisa
- Evite o esgotamento da pesquisa, não pesquise todos os participantes da chamada.
- A ordem das suas perguntas é importante. Recomendamos que você randomize a sequência de marcas opcionais na Pergunta 2, caso os entrevistados concentrem a maior parte de seus comentários no primeiro prompt que virem visualmente.
- Considere o uso de pesquisas para recursos de Serviços de Comunicação do Azure separados em experimentos controlados para identificar impactos na versão.
Próximas etapas
Analise os dados da pesquisa, consulte: Fim dos logs de pesquisa de chamadas
Saiba mais sobre a Pesquisa de Fim de Chamada, consulte: Visão geral da Pesquisa de Fim de Chamada
Saiba como usar o workspace do Log Analytics, confira: Tutorial do Log Analytics
Crie suas próprias consultas no Log Analytics, confira: Consultas de Introdução