Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tutorial mostra como usar a Pesquisa de Fim de Chamada dos Serviços de Comunicação do Azure.
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 de Serviços de Comunicação. Os resultados da pesquisa estão vinculados a recursos únicos dos Serviços de Comunicação.
- Um espaço de trabalho ativo do Log Analytics, também conhecido como Azure Monitor Logs. Consulte Logs de inquérito de fim das chamadas.
- Para conduzir uma pesquisa com perguntas personalizadas usando texto de forma livre, você precisa de um recurso do App Insight.
Importante
O End of Call Survey está disponível a partir da versão 1.13.1 do SDK de chamada. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Exemplo de uso da API
O recurso Pesquisa de fim de chamada deve ser usado após o término da chamada. Os usuários podem classificar qualquer tipo de chamada VoIP, 1:1, grupo, reunião, saída e entrada. Após o término da chamada de um utilizador, a sua aplicação pode mostrar uma interface de utilizador ao utilizador final, permitindo-lhe escolher uma pontuação de classificação e, se necessário, seleccionar problemas identificados durante a chamada a partir da nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada um-para-um. Após o término da chamada, a sua aplicação pode mostrar uma interface de inquérito e, assim que o utilizador escolher uma classificação, a sua aplicação deve chamar a API de funcionalidade para enviar o inquérito com as opções do utilizador.
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 verificar o aplicativo de exemplo para o uso da API de exemplo.
Avaliar apenas chamadas - 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 para todos os inquéritos.
Classifique apenas 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'));
Classifique o áudio e vídeo em geral, fornecendo um exemplo de problema.
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 gerar
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 3 }
}).catch((e) => console.log('error when submitting survey: ' + e))
Encontrar diferentes tipos de erros
Falhas ao enviar pesquisa
A API retorna as seguintes mensagens de erro se a validação de dados falhar ou a pesquisa não puder ser enviada.
É necessária pelo menos uma classificação no inquérito.
Por defeito, a escala X deve ser de 1 a 5. - em que X é uma das seguintes opções:
- ClassificaçãoGeral.pontuação
- pontuação de classificação de áudio
- 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} ambos devem estar entre 0 e 100.
Tente novamente [O ACS não conseguiu enviar a pesquisa devido a um erro de rede ou outro].
Retornaremos todos os códigos de erro com uma mensagem.
- Código de erro 400 (solicitação incorreta) para todas as mensagens de erro, exceto uma.
{ message: validationErrorMessage, code: 400 }
- Um 408 (timeout) ocorreu quando o evento foi 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 | Comments |
|---|---|---|---|
| Chamada Geral | 2 | 1 - 5 | Avalia a experiência geral de qualidade de um participante numa chamada numa escala de 1 a 5. Uma resposta de 1 indica uma experiência de chamada imperfeita e 5 indica uma chamada perfeita. O 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 não houve problemas de áudio. |
| Vídeos | 2 | 1 - 5 | Uma resposta de 1 indica uma experiência de vídeo imperfeita e 5 indica que nenhum problema de vídeo foi experimentado. |
| Screenshare | 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 da pesquisa. 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 tags de pesquisa
| Categorias de Avaliação | Tags opcionais |
|---|---|
| Chamada Geral |
CallCannotJoin
CallCannotInvite
HadToRejoin
CallEndedUnexpectedly
OtherIssues
|
| Áudio |
NoLocalAudio
NoRemoteAudio
Echo
AudioNoise
LowVolume
AudioStoppedUnexpectedly
DistortedSpeech
AudioInterruption
OtherIssues
|
| Vídeos |
NoVideoReceived
NoVideoSent
LowQuality
Freezes
StoppedUnexpectedly
DarkVideoReceived
AudioVideoOutOfSync
OtherIssues
|
| Screenshare |
NoContentLocal
NoContentRemote
CannotPresent
LowQuality
Freezes
StoppedUnexpectedly
LargeDelay
OtherIssues
|
Opções de personalização
Você pode optar por coletar cada um dos quatro valores de API ou apenas os que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral de chamada em vez de perguntar sobre a experiência de compartilhamento de áudio, vídeo e tela. Você também pode personalizar 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 de 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ídeos | 0 - 100 | 0 - 100 |
| Screenshare | 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 da pesquisa. 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 de chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las aos resultados da pesquisa de fim de chamada. Abaixo, você encontra etapas para incorporar suas próprias perguntas de clientes em uma pesquisa e consultar os resultados da API de pesquisa de fim de chamada e suas próprias perguntas de pesquisa.
Incorporar o Azure AppInsights em seu aplicativo Clique aqui para saber mais sobre a inicialização do App Insight usando JavaScript simples. Como alternativa, você pode usar o NPM para obter as dependências do App 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 sirva perguntas personalizadas para o usuário e reúna suas entradas, vamos supor que seu aplicativo reuniu respostas como uma cadeia de caracteres na
improvementSuggestionvariávelEnvie 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 dos usuários que foram enviadas usando o AppInsights estão disponíveis em seu espaço de trabalho do App Insights. 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 chamadas e os dados personalizados da pesquisa:
- Crie novas pastas de trabalho (seu recurso ACS -> Monitoramento -> Pastas de trabalho -> Nova) e consulte os dados do Call Survey a partir do recurso ACS.
- Adicionar nova consulta (+Adicionar -> Adicionar consulta)
- Certifique-se de que
Data sourceéLogseResource typeéCommunication - Você pode renomear a consulta (Configurações avançadas -> Nome da etapa [exemplo: pesquisa de chamada])
- Lembre-se de que pode ser necessário um máximo de 2 horas para que os dados da pesquisa fiquem visíveis no portal do Azure. Consultar os dados de classificação de chamadas-
ACSCallSurvey | where TimeGenerated > now(-24h) - Adicionar outra consulta para obter dados do App Insights (+Adicionar -> Adicionar consulta)
- Certifique-se de que
Data sourceéLogseResource typeéApplication Insights - Consultar 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])
- Finalmente, combine estas duas consultas por identificador de inquérito. Criar nova consulta (+Adicionar -> Adicionar consulta).
- Certifique-se de que o
Data sourceé Merge e selecioneMerge typeconforme necessário
title: Azure Communication Services End of Call Survey titleSufixo: Descrição do documento tutorial dos Serviços de Comunicação do Azure: Saiba como usar a Pesquisa de Fim de Chamada para coletar comentários dos usuários. autor: viniciusl-msft ms.autor: viniciusl gerente: gaobob serviços: azure-communication-services ms.date: 30/07/2024 ms.topic: tutorial ms.service: azure-communication-services ms.subservice: calling
Importante
O End of Call Survey está disponível a partir da versão 2.10.0 do Android Calling SDK. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Exemplo de uso da API
O recurso Pesquisa de fim de chamada deve ser usado após o término da chamada. Os usuários podem classificar qualquer tipo de chamada VoIP, 1:1, grupo, reunião, saída e entrada. Após o término da chamada de um utilizador, a sua aplicação pode mostrar uma interface de utilizador ao utilizador final, permitindo-lhe escolher uma pontuação de classificação e, se necessário, seleccionar problemas identificados durante a chamada a partir da nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada um-para-um. Após o término da chamada, a sua aplicação pode mostrar uma interface de inquérito e, assim que o utilizador escolher uma classificação, a sua aplicação deve chamar a API de funcionalidade para enviar o inquérito com as opções do utilizador.
Recomendamos que você use a escala de classificação padrão, que é a classificação de cinco estrelas (entre 1-5). No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada.
Iniciar um inquérito
Você cria um CallSurvey objeto iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso este objeto específico CallSurvey não seja enviado posteriormente, isso significa que a pesquisa foi ignorada ou não atendida pelo cliente final.
SurveyCallFeature surveyCallFeature = call.feature(Features.SURVEY);
try {
CallSurvey survey = surveyCallFeature.startSurvey().get();
} catch (InterruptedException | ExecutionException e) {
// failure to start survey
}
Utilização geral
Ao classificar chamadas, você deve respeitar os valores definidos no campo de escala. O valor lowerBound denota a pior experiência possível, enquanto o valor upperBound significa a experiência perfeita. Ambos os valores são inclusivos.
OverallRating é uma categoria obrigatória para todos os inquéritos.
Observação
O valor de corte indicado por uma pergunta na API é o limite que a Microsoft usa ao analisar os dados da pesquisa. 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 sugerido da pesquisa, consulte Conceitos da pesquisa
Avaliar apenas chamadas - sem escala personalizada
SurveyScore overall = new SurveyScore();
overall.setScore(5);
callSurvey.setOverallScore(overall);
Classifique apenas 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);
Classifique o áudio e vídeo em geral, fornecendo um exemplo de problema.
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);
Submeter questionário e lidar com 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());
}
Encontrar diferentes tipos de erros
Falhas durante o envio da pesquisa:
A API submitSurvey pode retornar um erro nos seguintes cenários:
É necessária uma classificação geral do inquérito.
CallSurveyRatingScaleos limites 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 osCallSurveyRatingScalevalores no objeto 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.
Tags de pesquisa disponíveis
Apelo global
| Tag | Description |
|---|---|
CannotJoin |
O cliente não conseguiu participar de uma chamada |
CannotInvite |
O cliente não conseguiu adicionar um novo participante à chamada. |
HadToRejoin |
O cliente saiu e ingressou novamente na chamada como uma solução temporária para um problema. |
CallEndedUnexpectedly |
A chamada do cliente terminou sem motivo aparente |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de áudio
| Tag | Description |
|---|---|
NoLocalAudio |
Sem áudio no computador do cliente durante a chamada, com incapacidade de ouvir qualquer pessoa na chamada. |
NoRemoteAudio |
Áudio ausente de um participante específico |
Echo |
Eco ouvido na chamada |
AudioNoise |
Áudio recebido com ruído não intencional |
LowVolume |
Áudio muito baixo |
AudioStoppedUnexpectedly |
O áudio parou sem uma razão aparente (por exemplo, ninguém está silenciado) |
DistortedSpeech |
A voz de um participante é distorcida, diferente da sua voz esperada |
AudioInterruption |
O cliente experimenta interrupções de áudio, cortes de voz, etc. |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de vídeo
| Tag | Description |
|---|---|
NoVideoReceived |
O cliente não recebe vídeo de um participante |
NoVideoSent |
Cliente inicia vídeo, mas ninguém na chamada é capaz de vê-lo |
LowQuality |
Vídeo de baixa qualidade |
Freezes |
Vídeo congela |
StoppedUnexpectedly |
A Partilha de Ecrã para sem uma razão clara (por exemplo, a câmara está ligada e a videochamada 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 sincronizados |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de compartilhamento de tela
| Tag | Description |
|---|---|
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 |
Baixa qualidade no compartilhamento de vídeo de tela, por ex., incapaz de ler |
Freezes |
A partilha de tela congela durante a apresentação |
StoppedUnexpectedly |
O compartilhamento de tela é interrompido sem motivo aparente (por exemplo, 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 encaixe nas descrições anteriores |
Opções de personalização
Você pode optar por coletar cada um dos quatro valores de API ou apenas os que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral de chamada em vez de perguntar sobre a experiência de compartilhamento de áudio, vídeo e tela. Você também pode personalizar 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 de 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 da pesquisa. 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 de chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las aos resultados da pesquisa de fim de chamada.
A carga útil resultante da operação fornece dados que você pode usar para correlacionar os dados do SubmitSurvey ACS Survey com seus próprios dados e armazenamento personalizados.
CallSurveyResult class tem o SurveyId campo que denota um identificador exclusivo para a pesquisa e CallId indica um identificador para a chamada onde a pesquisa foi gerada. Salvar esses identificadores junto com seus dados personalizados permite que os dados sejam associados exclusivamente.
Importante
O End of Call Survey está disponível a partir da versão 2.10.0 do iOS Calling SDK. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Exemplo de uso da API
O recurso Pesquisa de fim de chamada deve ser usado após o término da chamada. Os usuários podem classificar qualquer tipo de chamada VoIP, 1:1, grupo, reunião, saída e entrada. Após o término da chamada de um utilizador, a sua aplicação pode mostrar uma interface de utilizador ao utilizador final, permitindo-lhe escolher uma pontuação de classificação e, se necessário, seleccionar problemas identificados durante a chamada a partir da nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada um-para-um. Após o término da chamada, a sua aplicação pode mostrar uma interface de inquérito e, assim que o utilizador escolher uma classificação, a sua aplicação deve chamar a API de funcionalidade para enviar o inquérito com as opções do utilizador.
Recomendamos que você use a escala de classificação padrão, que é a classificação de cinco estrelas (entre 1-5). No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada.
Iniciar um inquérito
Você cria um CallSurvey objeto iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso este objeto específico CallSurvey não seja enviado posteriormente, isso significa que a pesquisa foi ignorada ou não atendida pelo cliente final.
var surveyCallFeature = self.call.feature(Features.survey)
do {
try self.callSurvey = await surveyFeature.startSurvey()
} catch {
print("Failure to start survey")
}
Utilização geral
Ao classificar chamadas, você deve respeitar os valores definidos no campo de escala. O valor lowerBound denota a pior experiência possível, enquanto o valor upperBound significa a experiência perfeita. Ambos os valores são inclusivos.
OverallRating é uma categoria obrigatória para todos os inquéritos.
Para obter mais informações sobre o uso sugerido da pesquisa, 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 da pesquisa. 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.
Avaliar apenas chamadas - sem escala personalizada
let overallScore = SurveyScore()
overallScore.score = Int32(5)
callSurvey.overallScore = overallScore
Classifique apenas 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 ];
Classifique o áudio e vídeo em geral, fornecendo um exemplo de problema.
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 ];
Submeter questionário e lidar com 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)
}
Encontrar diferentes tipos de erros
Falhas durante o envio da pesquisa:
A API submitSurvey pode retornar um erro nos seguintes cenários:
É necessária uma classificação geral do inquérito.
CallSurveyRatingScaleos limites 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 osCallSurveyRatingScalevalores no objeto 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.
Tags de pesquisa disponíveis
Chamada Geral
| Tag | Description |
|---|---|
CannotJoin |
O cliente não conseguiu participar de uma chamada |
CannotInvite |
O cliente não conseguiu adicionar um novo participante à chamada. |
HadToRejoin |
O cliente saiu e ingressou novamente na chamada como uma solução temporária para um problema. |
CallEndedUnexpectedly |
A chamada do cliente terminou sem motivo aparente |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de áudio
| Tag | Description |
|---|---|
NoLocalAudio |
Sem áudio no computador do cliente durante a chamada, com incapacidade de ouvir qualquer pessoa na chamada. |
NoRemoteAudio |
Áudio ausente de um participante específico |
Echo |
Eco ouvido na chamada |
AudioNoise |
Áudio recebido com ruído não intencional |
LowVolume |
Áudio muito baixo |
AudioStoppedUnexpectedly |
O áudio parou sem uma razão aparente (por exemplo, ninguém está silenciado) |
DistortedSpeech |
A voz de um participante é distorcida, diferente da sua voz esperada |
AudioInterruption |
O cliente experimenta interrupções de áudio, cortes de voz, etc. |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de vídeo
| Tag | Description |
|---|---|
NoVideoReceived |
O cliente não recebe vídeo de um participante |
NoVideoSent |
Cliente inicia vídeo, mas ninguém na chamada é capaz de vê-lo |
LowQuality |
Vídeo de baixa qualidade |
Freezes |
Vídeo congela |
StoppedUnexpectedly |
A Partilha de Ecrã para sem uma razão clara (por exemplo, a câmara está ligada e a videochamada 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 encaixe nas descrições anteriores |
Problemas de compartilhamento de tela
| Tag | Description |
|---|---|
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 |
Baixa qualidade no compartilhamento de vídeo de tela, por ex., incapaz de ler |
Freezes |
A partilha de tela congela durante a apresentação |
StoppedUnexpectedly |
O compartilhamento de tela é interrompido sem motivo claro (por exemplo, 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 encaixe nas descrições anteriores |
Opções de personalização
Você pode optar por coletar cada um dos quatro valores de API ou apenas os que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral de chamada em vez de perguntar sobre a experiência de compartilhamento de áudio, vídeo e tela. Você também pode personalizar 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 de 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 da pesquisa. 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 de chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las aos resultados da pesquisa de fim de chamada.
No entanto, a carga útil resultante da operação fornece dados que você pode usar para correlacionar os dados do SubmitSurvey ACS Survey com seus próprios dados personalizados e armazenamento.
CallSurveyResult class tem o SurveyId campo que denota um identificador exclusivo para a pesquisa e CallId indica um identificador para a chamada onde 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 Chamada do Windows. Certifique-se de usar essa versão ou posterior ao tentar as instruções.
Exemplo de uso da API
O recurso Pesquisa de fim de chamada deve ser usado após o término da chamada. Os usuários podem classificar qualquer tipo de chamada VoIP, 1:1, grupo, reunião, saída e entrada. Após o término da chamada de um utilizador, a sua aplicação pode mostrar uma interface de utilizador ao utilizador final, permitindo-lhe escolher uma pontuação de classificação e, se necessário, seleccionar problemas identificados durante a chamada a partir da nossa lista predefinida.
Os trechos de código a seguir mostram um exemplo de chamada um-para-um. Após o término da chamada, a sua aplicação pode mostrar uma interface de inquérito e, assim que o utilizador escolher uma classificação, a sua aplicação deve chamar a API de funcionalidade para enviar o inquérito com as opções do utilizador.
Recomendamos que você use a escala de classificação padrão, que é a classificação de cinco estrelas (entre 1-5). No entanto, você pode enviar uma pesquisa com uma escala de classificação personalizada.
Iniciar um inquérito
Você cria um CallSurvey objeto iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso este objeto específico CallSurvey não seja enviado posteriormente, isso significa que a pesquisa foi ignorada ou não atendida pelo cliente final.
var surveyCallFeature = call.Features.Survey;
var survey = await surveyCallFeature.StartSurveyAsync();
Utilização geral
Ao classificar chamadas, você deve respeitar os valores definidos no campo de escala. O valor lowerBound denota a pior experiência possível, enquanto o valor upperBound significa a experiência perfeita. Ambos os valores são inclusivos.
OverallRating é uma categoria obrigatória para todos os inquéritos.
Para obter mais informações sobre o uso sugerido da pesquisa, 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 da pesquisa. 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.
Avaliar apenas chamadas - sem escala personalizada
survey.OverallScore = new CallSurveyScore() { Score = 5 };
Classifique apenas 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;
Classifique o áudio e vídeo em geral, fornecendo um exemplo de problema.
survey.OverallScore = new CallSurveyScore() {
Score = 5
};
survey.AudioScore = new CallSurveyScore() {
Score = 4
};
survey.VideoScore = new CallSurveyScore() {
Score = 3
};
survey.videoIssues = VideoIssues.Freezes;
Submeter questionário e lidar com 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);
}
Encontrar diferentes tipos de erros
Falhas durante o envio da pesquisa:
A API submitSurvey pode retornar um erro nos seguintes cenários:
É necessária uma classificação geral do inquérito.
CallSurveyRatingScaleos limites 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 osCallSurveyRatingScalevalores no objeto 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.
Tags de pesquisa disponíveis
Chamada Geral
| Tag | Description |
|---|---|
CannotJoin |
O cliente não conseguiu participar de uma chamada |
CannotInvite |
O cliente não conseguiu adicionar um novo participante à chamada. |
HadToRejoin |
O cliente saiu e ingressou novamente na chamada como uma solução temporária para um problema. |
EndedUnexpectedly |
A chamada do cliente terminou sem motivo aparente |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de áudio
| Tag | Description |
|---|---|
NoLocalAudio |
Sem áudio no computador do cliente durante a chamada, com incapacidade de ouvir qualquer pessoa na chamada. |
NoRemoteAudio |
Áudio ausente de um participante específico |
Echo |
Eco ouvido na chamada |
AudioNoise |
Áudio recebido com ruído não intencional |
LowVolume |
Áudio muito baixo |
AudioStoppedUnexpectedly |
O áudio parou sem uma razão aparente (por exemplo, ninguém está silenciado) |
DistortedSpeech |
A voz de um participante é distorcida, diferente da sua voz esperada |
AudioInterruption |
O cliente experimenta interrupções de áudio, cortes de voz, etc. |
OtherIssues |
Qualquer problema que não se encaixe nas descrições anteriores |
Problemas de vídeo
| Tag | Description |
|---|---|
NoVideoReceived |
O cliente não recebe vídeo de um participante |
NoVideoSent |
Cliente inicia vídeo, mas ninguém na chamada é capaz de vê-lo |
LowQuality |
Vídeo de baixa qualidade |
Freezes |
Vídeo congela |
StoppedUnexpectedly |
A Partilha de Ecrã para sem uma razão clara (por exemplo, a câmara está ligada e a videochamada 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 encaixe nas descrições anteriores |
Problemas de compartilhamento de tela
| Tag | Description |
|---|---|
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 |
Baixa qualidade no compartilhamento de vídeo de tela, por ex., incapaz de ler |
Freezes |
A partilha de tela congela durante a apresentação |
StoppedUnexpectedly |
O compartilhamento de tela é interrompido sem motivo aparente (por exemplo, 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 encaixe nas descrições anteriores |
Opções de personalização
Você pode optar por coletar cada um dos quatro valores de API ou apenas os que achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre a experiência geral de chamada em vez de perguntar sobre a experiência de compartilhamento de áudio, vídeo e tela. Você também pode personalizar 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 de 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 da pesquisa. 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 de chamada, você pode criar suas próprias perguntas de pesquisa e incorporá-las aos resultados da pesquisa de fim de chamada.
No entanto, a carga útil resultante da operação fornece dados que você pode usar para correlacionar os dados do SubmitSurvey ACS Survey com seus próprios dados personalizados e armazenamento.
CallSurveyResult class tem o SurveyId campo que denota um identificador exclusivo para a pesquisa e CallId indica um identificador para a chamada onde a pesquisa foi gerada. Salvar esses identificadores junto com seus dados personalizados permite que os dados sejam associados exclusivamente.
Coletar 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 espaço de trabalho 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 os dados da 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ções, consulte: Logs de pesquisa de fim de chamada
Exibir dados da pesquisa com um espaço de trabalho do Log Analytics
Você precisa habilitar um espaço de trabalho do Log Analytics para armazenar os dados de log de suas pesquisas e acessar os resultados da pesquisa. Para habilitar esses registos para o seu Serviço de Comunicações, consulte: Registos de inquérito de fim de chamada.
- Também pode integrar a sua área de trabalho do Log Analytics com o Power BI, consulte: Integrar o Log Analytics com o Power BI.
Melhores práticas
Aqui estão nossos fluxos de pesquisa recomendados e sugestões de perguntas para consideração. Seu desenvolvimento pode usar nossa recomendação ou usar prompts e fluxos de perguntas personalizados para sua interface visual.
Pergunta 1: Como os usuários perceberam sua experiência geral de qualidade de chamada? Recomendamos que você comece a pesquisa perguntando apenas sobre a qualidade geral dos participantes. Se você separar a primeira e a segunda perguntas, isso só ajudará a coletar respostas a problemas de Áudio, Vídeo e Compartilhamento de Tela se um participante da pesquisa indicar que teve problemas de qualidade de chamada.
- Sugestão de aviso: "Como foi a qualidade da chamada?"
- Valores da pergunta 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 para a chamada geral, apresente a segunda pergunta.
- Sugestão de aviso: "O que poderia ter sido melhor?"
- Valores de pergunta da API: áudio, vídeo e compartilhamento de tela
Diretrizes de levantamento topográfico
- Evite o esgotamento com pesquisas, não faça perguntas a todos os participantes.
- A ordem das suas perguntas é importante. Recomendamos que você aleatorize a sequência de tags opcionais na Pergunta 2, caso os entrevistados concentrem a maior parte de seus comentários no primeiro prompt que veem visualmente.
- Considere usar pesquisas para Recursos de Serviços de Comunicação do Azure separados em experimentos controlados para identificar impactos de lançamento.
Próximos passos
Analise os dados da pesquisa, consulte: Registros de pesquisa de fim de chamada
Saiba mais sobre a Pesquisa de Fim de Chamada, consulte: Visão geral da Pesquisa de Fim de Chamada
Saiba como usar o espaço de trabalho do Log Analytics, consulte: Tutorial do Log Analytics
Crie suas próprias consultas no Log Analytics, consulte: Consultas de introdução