Compartilhar via


Usar o End of Call Survey 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.

Pré-requisitos

Importante

A Pesquisa ao final da chamada está disponível a partir da versão 1.13.1 do SDK de Chamada. Certifique-se de usar essa versão ou mais recente ao seguir as instruções.

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

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. Depois que a chamada de um usuário terminar, seu aplicativo poderá exibir uma interface do usuário para que ele possa escolher uma classificação e, se necessário, selecionar os problemas que encontrou durante a chamada em nossa lista predefinida.

Os snips de código a seguir mostram um exemplo de chamada um-para-um. Após o final da chamada, seu aplicativo pode mostrar uma interface de usuário para a pesquisa e, depois que o usuário escolher uma classificação, deverá chamar a API de funcionalidade 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 escala de classificação personalizada. Você pode conferir o aplicativo de exemplo para o uso de API de exemplo.

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 necessária para 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 durante o envio da pesquisa

A API retorna 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 de pesquisa é necessária.

  • Na escala padrão, X deve ser de 1 a 5. - em que X é um dos:

    • 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 não pôde enviar a pesquisa devido à rede ou outro erro].

Retornaremos quaisquer 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 (tempo limite) quando o evento é descartado:
{ message: "Please try again.", code: 408 }

Todos os valores possíveis

Configuração da API de pesquisa padrão

Categorias de classificação de API Valor de corte* Intervalo de entrada Comments
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 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 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 foi experimentado.
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 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

Um 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 etiquetas de pesquisa

Categorias de classificação Tags 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
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 você achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre sua experiência geral de chamada em vez de perguntar a eles sobre sua experiência de áudio, vídeo e compartilhamento de 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 de API Valor de corte* Intervalo de entrada
Chamada geral 0 - 100 0 - 100
Áudio 0 - 100 0 - 100
Vídeo 0 - 100 0 - 100
Screenshare 0 - 100 0 - 100

Observação

Um 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 com os resultados da Pesquisa de Fim de Chamada. Abaixo, você encontra etapas para incorporar suas próprias perguntas de cliente em uma pesquisa e consultar os resultados da API de Pesquisa de Fim de Chamada e suas próprias perguntas de pesquisa.

  • Criar um recurso do App Insight.

  • 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 App Insights. Clique aqui para saber mais sobre a inicialização do App Insight usando o NPM.

  • Criar uma interface do usuário em seu aplicativo que atenda perguntas personalizadas ao usuário e reúna suas entradas, vamos supor que seu aplicativo reuniu respostas como uma cadeia de caracteres na improvementSuggestion variável

  • 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 estão disponíveis no workspace 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 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 está Logs e Resource type está Communication
  • Você pode renomear a consulta (Configurações Avançadas –> Nome da etapa [exemplo: pesquisa de chamada])
  • Lembre-se de que isso pode exigir no máximo 2 horas antes 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)
    
  • Adicionar outra consulta para obter dados do App Insights (+Adicionar –> Adicionar consulta)
  • Verifique se Data source está Logs e Resource type está 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])
  • Por fim, mescle essas duas consultas por surveyId. Crie uma nova consulta (+Adicionar –> Adicionar consulta).
  • Certifique-se de que o Data source esteja definido como "Merge" e selecione Merge 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/7/2024 ms.topic: tutorial ms.service: azure-communication-services ms.subservice: calling

Importante

A Pesquisa de Satisfação ao Final da Chamada está disponível a partir da versão 2.10.0 do SDK de Chamadas do Android. Certifique-se de usar essa versão ou mais recente ao seguir 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. Depois que a chamada de um usuário terminar, seu aplicativo poderá exibir uma interface do usuário para que ele possa escolher uma classificação e, se necessário, selecionar os problemas que encontrou durante a chamada em nossa lista predefinida.

Os snips de código a seguir mostram um exemplo de chamada um-para-um. Após o final da chamada, seu aplicativo pode mostrar uma interface de usuário para a pesquisa e, depois que o usuário escolher uma classificação, deverá chamar a API de funcionalidade 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 escala de classificação personalizada.

Iniciar uma pesquisa

Você cria um CallSurvey objeto iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso esse objeto específico CallSurvey não seja submetido posteriormente, isso significa que a pesquisa foi ignorada ou pulada 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 avaliar chamadas, 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. Ambos os valores são inclusivos.

OverallRating é uma categoria necessária para todas as pesquisas.

Observação

Um 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 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 Questionário e tratar erros que o SDK pode gerar

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 durante o envio da pesquisa:

A API submitSurvey pode retornar um erro nos seguintes cenários:

  • É necessário obter a classificação geral da pesquisa.

  • CallSurveyRatingScale os limites devem estar dentro de 0 e 100. LimiteInferior deve ser menor que LimiteSuperior. LowScoreThreshold deve estar dentro dos limites.

  • Qualquer uma das pontuações deve respeitar os limites definidos pelo CallSurveyRatingScale. Todos os valores no CallSurveyRatingScale 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.

Etiquetas de pesquisa disponíveis

Chamada geral

Etiqueta Description
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

Etiqueta Description
NoLocalAudio Não há áudio na chamada no computador do cliente, não é possível ouvir ninguém 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 é 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

Etiqueta Description
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 Congelamento 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

Etiqueta 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 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 optar por coletar cada um dos quatro valores de API ou apenas os que você achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre sua experiência geral de chamada em vez de perguntar a eles sobre sua experiência de áudio, vídeo e compartilhamento de 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 compartilhamento geral de chamada, áudio, vídeo e tela. No entanto, cada valor de API pode ser personalizado de um mínimo de 0 a um máximo de 100.

Observação

Um 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 com os resultados da Pesquisa de Fim de 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. CallSurveyResult A classe possui o campo SurveyId que indica um identificador exclusivo para a pesquisa e CallId indica um identificador para a chamada na qual a pesquisa foi gerada. Salvar esses identificadores junto com seus dados personalizados permite que os dados sejam associados exclusivamente.

Importante

A Pesquisa de Satisfação ao Final da 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 mais recente ao seguir 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. Depois que a chamada de um usuário terminar, seu aplicativo poderá exibir uma interface do usuário para que ele possa escolher uma classificação e, se necessário, selecionar os problemas que encontrou durante a chamada em nossa lista predefinida.

Os snips de código a seguir mostram um exemplo de chamada um-para-um. Após o final da chamada, seu aplicativo pode mostrar uma interface de usuário para a pesquisa e, depois que o usuário escolher uma classificação, deverá chamar a API de funcionalidade 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 escala de classificação personalizada.

Iniciar uma pesquisa

Você cria um CallSurvey objeto iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso esse objeto específico CallSurvey não seja submetido posteriormente, isso significa que a pesquisa foi ignorada ou pulada 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 avaliar chamadas, 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. Ambos os valores são inclusivos.

OverallRating é uma categoria necessária para todas as pesquisas.

Para obter mais informações sobre o uso da pesquisa sugerida, consulte Conceitos da Pesquisa

Observação

Um 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.

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 Questionário e tratar erros que o SDK pode gerar

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 durante o envio da pesquisa:

A API submitSurvey pode retornar um erro nos seguintes cenários:

  • É necessário obter a classificação geral da pesquisa.

  • CallSurveyRatingScale os limites devem estar dentro de 0 e 100. LimiteInferior deve ser menor que LimiteSuperior. LowScoreThreshold deve estar dentro dos limites.

  • Qualquer uma das pontuações deve respeitar os limites definidos pelo CallSurveyRatingScale. Todos os valores no CallSurveyRatingScale 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.

Etiquetas de pesquisa disponíveis

Chamada geral

Etiqueta Description
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

Etiqueta Description
NoLocalAudio Não há áudio na chamada no computador do cliente, não é possível ouvir ninguém 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 é 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

Etiqueta Description
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 Congelamento 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

Etiqueta 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 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 optar por coletar cada um dos quatro valores de API ou apenas os que você achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre sua experiência geral de chamada em vez de perguntar a eles sobre sua experiência de áudio, vídeo e compartilhamento de 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 compartilhamento geral de chamada, áudio, vídeo e tela. No entanto, cada valor de API pode ser personalizado de um mínimo de 0 a um máximo de 100.

Observação

Um 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 com os resultados da Pesquisa de Fim de Chamada.

No entanto, os dados resultantes da operação SubmitSurvey fornecem informações que você pode usar para relacionar os dados da Pesquisa ACS com seus próprios dados e armazenamento personalizados. CallSurveyResult A classe possui o campo SurveyId que indica um identificador exclusivo para a pesquisa e CallId indica um identificador para a chamada na qual 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 mais recente ao seguir 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. Depois que a chamada de um usuário terminar, seu aplicativo poderá exibir uma interface do usuário para que ele possa escolher uma classificação e, se necessário, selecionar os problemas que encontrou durante a chamada em nossa lista predefinida.

Os snips de código a seguir mostram um exemplo de chamada um-para-um. Após o final da chamada, seu aplicativo pode mostrar uma interface de usuário para a pesquisa e, depois que o usuário escolher uma classificação, deverá chamar a API de funcionalidade 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 escala de classificação personalizada.

Iniciar uma pesquisa

Você cria um CallSurvey objeto iniciando uma pesquisa. Isso registra uma intenção de pesquisa. Caso esse objeto específico CallSurvey não seja submetido posteriormente, isso significa que a pesquisa foi ignorada ou pulada pelo cliente final.

var surveyCallFeature = call.Features.Survey;
var survey = await surveyCallFeature.StartSurveyAsync();

Uso geral

Ao avaliar chamadas, 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. Ambos os valores são inclusivos.

OverallRating é uma categoria necessária para todas as pesquisas.

Para obter mais informações sobre o uso da pesquisa sugerida, consulte Conceitos da Pesquisa

Observação

Um 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.

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 Questionário e tratar erros que o SDK pode gerar

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 durante o envio da pesquisa:

A API submitSurvey pode retornar um erro nos seguintes cenários:

  • É necessário obter a classificação geral da pesquisa.

  • CallSurveyRatingScale os limites devem estar dentro de 0 e 100. LimiteInferior deve ser menor que LimiteSuperior. LowScoreThreshold deve estar dentro dos limites.

  • Qualquer uma das pontuações deve respeitar os limites definidos pelo CallSurveyRatingScale. Todos os valores no CallSurveyRatingScale 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.

Etiquetas de pesquisa disponíveis

Chamada geral

Etiqueta Description
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

Etiqueta Description
NoLocalAudio Não há áudio na chamada no computador do cliente, não é possível ouvir ninguém 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 é 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

Etiqueta Description
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 Congelamento 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

Etiqueta 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 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 optar por coletar cada um dos quatro valores de API ou apenas os que você achar mais importantes. Por exemplo, você pode optar por perguntar apenas aos clientes sobre sua experiência geral de chamada em vez de perguntar a eles sobre sua experiência de áudio, vídeo e compartilhamento de 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 compartilhamento geral de chamada, áudio, vídeo e tela. No entanto, cada valor de API pode ser personalizado de um mínimo de 0 a um máximo de 100.

Observação

Um 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 com os resultados da Pesquisa de Fim de Chamada.

No entanto, os dados resultantes da operação SubmitSurvey fornecem informações que você pode usar para relacionar os dados da Pesquisa ACS com seus próprios dados e armazenamento personalizados. CallSurveyResult A classe possui o campo SurveyId que indica um identificador exclusivo para a pesquisa e CallId indica um identificador para a chamada na qual 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 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: Logs de Pesquisa de Satisfação ao Fim da Chamada

Exibir dados de levantamento em 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ções, consulte: Logs de Pesquisa de Fim de Chamada.

Práticas recomendadas

Aqui estão nossos fluxos de pesquisa recomendados e solicitações de pergunta sugeridas 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 sua experiência geral de qualidade de chamada? Recomendamos que você inicie a pesquisa perguntando apenas sobre a qualidade geral dos participantes. Se você separar a primeira e a segunda perguntas, isso ajudará a coletar apenas respostas a problemas de Áudio, Vídeo e Compartilhamento de Tela se um participante da pesquisa indicar que teve problemas de qualidade de chamada.

  • Prompt sugerido: "Como foi 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 abaixo ou abaixo do valor de corte para a chamada geral, apresente a segunda pergunta.

  • Sugestão de prompt: "O que poderia ter sido melhor?"
  • Valores de pergunta da API: áudio, vídeo e compartilhamento de tela

Diretrizes de pesquisa

  • Evite o esgotamento da pesquisa, não pesquise todos os participantes da chamada.
  • A ordem de suas perguntas importa. 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 lembrete que veem.
  • Considere o uso de pesquisas para recursos distintos dos Serviços de Comunicação do Azure em experimentos controlados, com o objetivo de identificar impactos das versões.

Próximas etapas