Compartir a través de


Use la encuesta de fin de llamada para recopilar comentarios de los usuarios

En este tutorial se muestra cómo usar la encuesta de fin de llamada de Azure Communication Services.

Requisitos previos

Importante

La encuesta de fin de llamada está disponible a partir de la versión 1.13.1 del SDK de llamada. Asegúrese de usar esa versión o una posterior cuando pruebe las instrucciones.

  • Node.js se recomiendan las versiones de soporte técnico a largo plazo (LTS) activas.

Ejemplo de uso de API

La función de encuesta de fin de llamada debe usarse una vez finalizada la llamada. Los usuarios pueden valorar cualquier tipo de llamada VoIP, 1:1, de grupo, de reunión, saliente y entrante. Una vez finalizada la llamada de un usuario, su aplicación puede mostrar una interfaz de usuario al usuario final que le permita elegir una puntuación de calificación y, si es necesario, elegir los problemas que ha encontrado durante la llamada de nuestra lista predefinida.

Los siguientes fragmentos de código muestran un ejemplo de llamada uno a uno. Una vez finalizada la llamada, la aplicación puede mostrar una interfaz de encuesta y, cuando el usuario elija una puntuación, la aplicación debe llamar a la API de funciones para enviar la encuesta con las opciones del usuario.

Le recomendamos que use la escala de valoración predeterminada. Sin embargo, puede enviar una encuesta con una escala de valoración personalizada. Puede consultar la aplicación de ejemplo para ver un ejemplo de uso de la API.

Solo llamada de valoración - sin escala personalizada

call.feature(Features.CallSurvey).submitSurvey({
    overallRating: { score: 5 }, // issues are optional
}).then(() => console.log('survey submitted successfully'));

OverallRating es una categoría obligatoria para todas las encuestas.

Calificar solo llamada - con escala personalizada y problemas

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'));

Calificación general, audio y video con un problema de muestra

call.feature(Features.CallSurvey).submitSurvey({
    overallRating: { score: 3 },
    audioRating: { score: 4 },
    videoRating: { score: 3, issues: ['Freezes'] }
}).then(() => console.log('survey submitted successfully'))

Errores que puede enviar el SDK

call.feature(Features.CallSurvey).submitSurvey({
    overallRating: { score: 3 }
}).catch((e) => console.log('error when submitting survey: ' + e))

Buscar diferentes tipos de errores

Errores al enviar la encuesta

La API devolverá los siguientes mensajes de error si se produce un error en la validación de datos o la encuesta no se pudiera enviar.

  • Se requiere al menos una clasificación de encuesta.

  • En la escala predeterminada, X debería ser de 1 a 5. - donde X es cualquiera de:

    • overallRating.score
    • audioRating.score
    • videoRating.score
    • ScreenshareRating.score
  • {propertyName}: {rating.score} debería estar entre {rating.scale?.lowerBound} y {rating.scale?.upperBound}.

  • {propertyName}: {rating.scale?.lowScoreThreshold} debería estar entre {rating.scale?.lowerBound} y {rating.scale?.upperBound}.

  • {propertyName} lowerBound: {rating.scale?.lowerBound} y upperBound: {rating.scale?.upperBound} deberían estar entre 0 y 100.

  • Inténtelo de nuevo [ACS no pudo enviar la encuesta debido a la red u otro error].

Devolveremos los códigos de error con un mensaje.

  • Código de error 400 (solicitud incorrecta) para todos los mensajes de error, excepto uno.
{ message: validationErrorMessage, code: 400 }
  • Un 408 (tiempo de espera) cuando se descarta el evento:
{ message: "Please try again.", code: 408 }

Todos los valores posibles

Configuración predeterminada de la API de encuestas

Categorías de valoración de la API Valor límite* Intervalo de entrada Comentarios
Llamada general 2 De 1 a 5 Evalúa la experiencia global de calidad del participante en la llamada en una escala de 1 a 5. Una respuesta de 1 indica una experiencia de llamada imperfecta y una de 5 indica una llamada perfecta. El valor límite de 2 significa que una respuesta del cliente de 1 o 2 indica una experiencia de llamada menos que perfecta.
Audio 2 De 1 a 5 Una respuesta de 1 indica una experiencia de audio imperfecta y 5 indica que no hubo problemas de audio.
Vídeo 2 De 1 a 5 Una respuesta de 1 indica una experiencia de video imperfecta y 5 indica que no hubo problemas de video.
Pantalla compartida 2 De 1 a 5 Una respuesta de 1 indica una experiencia de pantalla compartida imperfecta y 5 indica que no se experimentaron problemas de pantalla compartida.

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Más etiquetas de encuestas

Categorías de clasificación Etiquetas opcionales
Llamada general CallCannotJoin CallCannotInvite HadToRejoin CallEndedUnexpectedly OtherIssues
Audio NoLocalAudio NoRemoteAudio Echo AudioNoise LowVolume AudioStoppedUnexpectedly DistortedSpeech AudioInterruption OtherIssues
Vídeo NoVideoReceived NoVideoSent LowQuality Freezes StoppedUnexpectedly DarkVideoReceived AudioVideoOutOfSync OtherIssues
Pantalla compartida NoContentLocal NoContentRemote CannotPresent LowQuality Freezes StoppedUnexpectedly LargeDelay OtherIssues

Opciones de personalización

Puede elegir recoger cada uno de los cuatro valores API o solo los que considere más importantes. Por ejemplo, puede elegir preguntar solo a los clientes sobre su experiencia general de llamadas en lugar de preguntarles sobre su experiencia de audio, video y uso compartido de pantalla. También puede personalizar los rangos de entrada para adaptarlos a sus necesidades. El intervalo de entrada predeterminado es de 1 a 5 para llamada general, audio, video y pantalla compartida. Sin embargo, cada valor API puede personalizarse desde un mínimo de 0 hasta un máximo de 100.

Ejemplos de personalización

Categorías de valoración de la API Valor límite* Intervalo de entrada
Llamada general 0 - 100 0 - 100
Audio 0 - 100 0 - 100
Vídeo 0 - 100 0 - 100
Pantalla compartida 0 - 100 0 - 100

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Preguntas personalizadas

Además de usar la API de encuestas de fin de llamadas, puede crear sus propias preguntas de encuestas e incorporarlas a los resultados las encuestas de fin de llamadas. A continuación, encontrará los pasos necesarios para añadir sus propias preguntas de cliente en encuestas y consultar los resultados de la API de encuestas de fin de llamadas y sus propias preguntas para encuestas.

Las respuestas de los usuarios enviadas mediante AppInsights están disponibles en el área de trabajo de App Insights. Puede usar libros para consultar entre varios recursos, además de correlacionar las calificaciones de llamadas y los datos de encuestas personalizados. Pasos para correlacionar las calificaciones de llamadas y los datos de encuestas personalizados:

  • Cree nuevos libros (su recurso de ACS -> Supervisión -> Libros -> Nuevo) y consulte los datos de la encuesta de llamadas desde el recurso de ACS.
  • Agregar nueva consulta (+Agregar -> Agregar consulta)
  • Asegúrese de que Data source sea Logs y de que Resource type sea Communication
  • Es posible cambiar el nombre de la consulta (Configuración avanzada -> Nombre del paso [ejemplo: encuesta-llamadas])
  • Tenga en cuenta que podrían pasar un máximo de 2 horas antes de que los datos de la encuesta sean visibles en Azure Portal. Consulta de los datos de clasificación de llamadas-
    ACSCallSurvey
    | where TimeGenerated > now(-24h)
    
  • Agregar otra consulta para obtener datos de App Insights (+Agregar -> Agregar consulta)
  • Asegúrese de que Data source sea Logs y de que Resource type sea Application Insights
  • Consulta de los eventos personalizados-
    customEvents
    | where timestamp > now(-24h)
    | where name == 'CallSurvey'
    | extend d=parse_json(customDimensions)
    | project SurveyId = d.id, ImprovementSuggestion = d.improvementSuggestion
    
  • Es posible cambiar el nombre de la consulta (Configuración avanzada -> Nombre del paso [ejemplo: encuesta-llamadas-personalizada])
  • Por último, combine estas dos consultas por surveyId. Crear nueva consulta (+Agregar -> Agregar consulta).
  • Asegúrese de que Data source se combine y seleccione Merge type, según sea necesario

título: encuesta de fin de llamada de Azure Communication Services titleSuffix: un tutorial de Azure Communication Services descripción: aprenda a usar la encuesta de fin de llamada para recopilar comentarios de los usuarios. autor: viniciusl-msft ms.author: viniciusl manager: liubob services: azure-communication-services ms.date: 7/30/2024 ms.topic: tutorial ms.service: azure-communication-services ms.subservice: calling

Importante

Final de la encuesta de llamadas está disponible a partir de la versión 2.10.0 del SDK de llamadas de Android. Asegúrese de usar esa versión o una posterior cuando pruebe las instrucciones.

Ejemplo de uso de API

La función de encuesta de fin de llamada debe usarse una vez finalizada la llamada. Los usuarios pueden valorar cualquier tipo de llamada VoIP, 1:1, de grupo, de reunión, saliente y entrante. Una vez finalizada la llamada de un usuario, su aplicación puede mostrar una interfaz de usuario al usuario final que le permita elegir una puntuación de calificación y, si es necesario, elegir los problemas que ha encontrado durante la llamada de nuestra lista predefinida.

Los siguientes fragmentos de código muestran un ejemplo de llamada uno a uno. Una vez finalizada la llamada, la aplicación puede mostrar una interfaz de encuesta y, cuando el usuario elija una puntuación, la aplicación debe llamar a la API de funciones para enviar la encuesta con las opciones del usuario.

Le recomendamos que use la escala de clasificación predeterminada, que es la clasificación de cinco estrellas (entre 1 y 5). Sin embargo, puede enviar una encuesta con una escala de valoración personalizada.

Iniciar una encuesta

Para crear un objeto CallSurvey, inicie una encuesta. Esto registra una intención de encuesta. En caso de que este objeto CallSurvey concreto no se envíe después, significa que el cliente final omitió o ignoró la encuesta.

SurveyCallFeature surveyCallFeature = call.feature(Features.SURVEY);
try {
    CallSurvey survey = surveyCallFeature.startSurvey().get();
} catch (InterruptedException | ExecutionException e) {
    // failure to start survey
}

Uso general

Al clasificar las llamadas, debe respetar los valores definidos en el campo de escalado. El valor lowerBound denota la peor experiencia posible, mientras que el valor upperBound significa la experiencia perfecta. Ambos valores son inclusivos.

OverallRating es una categoría obligatoria para todas las encuestas.

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Para obtener más información sobre el uso sugerido de la encuesta, consulte Conceptos de la encuesta

Solo llamada de valoración - sin escala personalizada

SurveyScore overall = new SurveyScore();
overall.setScore(5);
callSurvey.setOverallScore(overall);

Calificar solo llamada - con escala personalizada y problemas

// 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);

Calificación general, audio y video con un problema de muestra

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 encuesta y controlar los errores que el SDK puede enviar

try {
    CallSurveyResult survey = surveyCallFeature.submitSurvey(survey).get();
} catch (InterruptedException e) {
    // Threading error
} catch (ExecutionException e) {
    Log.e("SURVEY", e.getCause().getMessage());
}

Buscar diferentes tipos de errores

Errores al enviar la encuesta:

La API submitSurvey puede devolver un error en los escenarios siguientes:

  • Se requiere la clasificación general de la encuesta.

  • Los límites CallSurveyRatingScale deben estar dentro de 0 y 100. LowerBound debe ser menor que UpperBound. LowScoreThreshold debe estar dentro de los límites.

  • Cualquiera de las puntuaciones debe respetar los límites definidos por CallSurveyRatingScale. Todos los valores del objeto CallSurveyRatingScale son inclusivos. Con la escala predeterminada, el valor de puntuación debe estar comprendido entre 1 y 5.

  • La encuesta no se puede enviar debido a un error de red o servicio.

Etiquetas de encuesta disponibles

Llamada general

Etiqueta Descripción
CannotJoin El cliente no pudo unirse a una llamada
CannotInvite El cliente no pudo agregar un nuevo participante a la llamada
HadToRejoin El cliente abandonó y se unió de nuevo a la llamada como solución alternativa para un problema
CallEndedUnexpectedly La llamada del cliente finalizó sin ninguna razón aparente
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de audio

Etiqueta Descripción
NoLocalAudio No hay audio en el equipo del cliente desde la llamada, incapacidad de escuchar a nadie en la llamada
NoRemoteAudio Falta audio de un participante específico
Echo Se percibe eco en la llamada
AudioNoise Audio recibido con ruido no deseado
LowVolume Audio demasiado bajo
AudioStoppedUnexpectedly Audio detenido sin ninguna razón clara (por ejemplo, nadie está silenciado)
DistortedSpeech La voz de un participante se distorsiona, diferente de su voz esperada
AudioInterruption El cliente experimenta interrupciones de audio, cortes de voz, etcétera.
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de vídeo

Etiqueta Descripción
NoVideoReceived El cliente no recibe vídeo de un participante
NoVideoSent El cliente inicia el vídeo, pero nadie de la llamada puede verlo
LowQuality Vídeo de baja calidad
Freezes El vídeo se congela
StoppedUnexpectedly El recurso compartido de pantalla se detiene sin ninguna razón clara (por ejemplo, la cámara está activada y la videollamada está activada)
DarkVideoReceived El vídeo se envía, pero el participante ve solo un cuadro oscuro (u otro color único)
AudioVideoOutOfSync El vídeo y el audio no parecen estar sincronizados
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de uso compartido de pantalla

Etiqueta Descripción
NoContentLocal El cliente no recibe la pantalla compartida de un participante que comparte
NoContentRemote El cliente está compartiendo pantalla, pero otros participantes no pueden verlo
CannotPresent No se puede iniciar la pantalla compartida
LowQuality Baja calidad en el vídeo de pantalla compartida, por ejemplo, no se puede leer
Freezes La pantalla compartida se bloquea durante la presentación
StoppedUnexpectedly La pantalla compartida se detiene sin ninguna razón clara (por ejemplo, el cliente no ha detenido la pantalla compartida)
LargeDelay Se percibe un retraso entre lo que se muestra y lo que se ve
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Opciones de personalización

Puede elegir recoger cada uno de los cuatro valores API o solo los que considere más importantes. Por ejemplo, puede elegir preguntar solo a los clientes sobre su experiencia general de llamadas en lugar de preguntarles sobre su experiencia de audio, video y uso compartido de pantalla. También puede personalizar los rangos de entrada para adaptarlos a sus necesidades. El intervalo de entrada predeterminado es de 1 a 5 para llamada general, audio, video y pantalla compartida. Sin embargo, cada valor API puede personalizarse desde un mínimo de 0 hasta un máximo de 100.

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Preguntas personalizadas

Además de usar la API de encuestas de fin de llamadas, puede crear sus propias preguntas de encuestas e incorporarlas a los resultados las encuestas de fin de llamadas.

La carga útil de resultados de la operación SubmitSurvey proporciona datos que puede usar para correlacionar los datos de la encuesta de ACS con sus propios datos y almacenamiento personalizados. La clase CallSurveyResult tienen el campo SurveyId que denota un identificador único para la encuesta y CallId denota un identificador para la llamada donde se generó la encuesta. Guardar estos identificadores junto con los datos personalizados permite asociar datos de forma única.

Importante

La encuesta de fin de llamada está disponible a partir de la versión 2.10.0 del SDK de llamada de iOS. Asegúrese de usar esa versión o una posterior cuando pruebe las instrucciones.

Ejemplo de uso de API

La función de encuesta de fin de llamada debe usarse una vez finalizada la llamada. Los usuarios pueden valorar cualquier tipo de llamada VoIP, 1:1, de grupo, de reunión, saliente y entrante. Una vez finalizada la llamada de un usuario, su aplicación puede mostrar una interfaz de usuario al usuario final que le permita elegir una puntuación de calificación y, si es necesario, elegir los problemas que ha encontrado durante la llamada de nuestra lista predefinida.

Los siguientes fragmentos de código muestran un ejemplo de llamada uno a uno. Una vez finalizada la llamada, la aplicación puede mostrar una interfaz de encuesta y, cuando el usuario elija una puntuación, la aplicación debe llamar a la API de funciones para enviar la encuesta con las opciones del usuario.

Le recomendamos que use la escala de clasificación predeterminada, que es la clasificación de cinco estrellas (entre 1 y 5). Sin embargo, puede enviar una encuesta con una escala de valoración personalizada.

Iniciar una encuesta

Para crear un objeto CallSurvey, inicie una encuesta. Esto registra una intención de encuesta. En caso de que este objeto CallSurvey concreto no se envíe después, significa que el cliente final omitió o ignoró la encuesta.

var surveyCallFeature = self.call.feature(Features.survey)
do {
    try self.callSurvey = await surveyFeature.startSurvey()
} catch {
    print("Failure to start survey")
}

Uso general

Al clasificar las llamadas, debe respetar los valores definidos en el campo de escalado. El valor lowerBound denota la peor experiencia posible, mientras que el valor upperBound significa la experiencia perfecta. Ambos valores son inclusivos.

OverallRating es una categoría obligatoria para todas las encuestas.

Para obtener más información sobre el uso sugerido de la encuesta, consulte Conceptos de la encuesta

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Solo llamada de valoración - sin escala personalizada

let overallScore = SurveyScore()
overallScore.score = Int32(5)
callSurvey.overallScore = overallScore

Calificar solo llamada - con escala personalizada y problemas

// 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 ];

Calificación general, audio y video con un problema de muestra

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 encuesta y controlar los errores que el SDK puede enviar

do {
    var result =  try await self.surveyFeature!.submit(survey: callSurvey)
} catch let error as NSError {
    print("==> Survey Not Submitted " + error.localizedDescription)
}

Buscar diferentes tipos de errores

Errores al enviar la encuesta:

La API submitSurvey puede devolver un error en los escenarios siguientes:

  • Se requiere la clasificación general de la encuesta.

  • Los límites CallSurveyRatingScale deben estar dentro de 0 y 100. LowerBound debe ser menor que UpperBound. LowScoreThreshold debe estar dentro de los límites.

  • Cualquiera de las puntuaciones debe respetar los límites definidos por CallSurveyRatingScale. Todos los valores del objeto CallSurveyRatingScale son inclusivos. Con la escala predeterminada, el valor de puntuación debe estar comprendido entre 1 y 5.

  • La encuesta no se puede enviar debido a un error de red o servicio.

Etiquetas de encuesta disponibles

Llamada general

Etiqueta Descripción
CannotJoin El cliente no pudo unirse a una llamada
CannotInvite El cliente no pudo agregar un nuevo participante a la llamada
HadToRejoin El cliente abandonó y se unió de nuevo a la llamada como solución alternativa para un problema
CallEndedUnexpectedly La llamada del cliente finalizó sin ninguna razón aparente
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de audio

Etiqueta Descripción
NoLocalAudio No hay audio en el equipo del cliente desde la llamada, incapacidad de escuchar a nadie en la llamada
NoRemoteAudio Falta audio de un participante específico
Echo Se percibe eco en la llamada
AudioNoise Audio recibido con ruido no deseado
LowVolume Audio demasiado bajo
AudioStoppedUnexpectedly Audio detenido sin ninguna razón clara (por ejemplo, nadie está silenciado)
DistortedSpeech La voz de un participante se distorsiona, diferente de su voz esperada
AudioInterruption El cliente experimenta interrupciones de audio, cortes de voz, etcétera.
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de vídeo

Etiqueta Descripción
NoVideoReceived El cliente no recibe vídeo de un participante
NoVideoSent El cliente inicia el vídeo, pero nadie de la llamada puede verlo
LowQuality Vídeo de baja calidad
Freezes El vídeo se congela
StoppedUnexpectedly El recurso compartido de pantalla se detiene sin ninguna razón clara (por ejemplo, la cámara está activada y la videollamada está activada)
DarkVideoReceived El vídeo se envía, pero el participante ve solo un cuadro oscuro (u otro color único)
AudioVideoOutOfSync El vídeo y el audio no parecen estar sincronizados
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de uso compartido de pantalla

Etiqueta Descripción
NoContentLocal El cliente no recibe la pantalla compartida de un participante que comparte
NoContentRemote El cliente está compartiendo pantalla, pero otros participantes no pueden verlo
CannotPresent No se puede iniciar la pantalla compartida
LowQuality Baja calidad en el vídeo de pantalla compartida, por ejemplo, no se puede leer
Freezes La pantalla compartida se bloquea durante la presentación
StoppedUnexpectedly La pantalla compartida se detiene sin ninguna razón clara (por ejemplo, el cliente no ha detenido la pantalla compartida)
LargeDelay Se percibe un retraso entre lo que se muestra y lo que se ve
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Opciones de personalización

Puede elegir recoger cada uno de los cuatro valores API o solo los que considere más importantes. Por ejemplo, puede elegir preguntar solo a los clientes sobre su experiencia general de llamadas en lugar de preguntarles sobre su experiencia de audio, video y uso compartido de pantalla. También puede personalizar los rangos de entrada para adaptarlos a sus necesidades. El intervalo de entrada predeterminado es de 1 a 5 para llamada general, audio, video y pantalla compartida. Sin embargo, cada valor API puede personalizarse desde un mínimo de 0 hasta un máximo de 100.

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Preguntas personalizadas

Además de usar la API de encuestas de fin de llamadas, puede crear sus propias preguntas de encuestas e incorporarlas a los resultados las encuestas de fin de llamadas.

Sin embargo, la carga útil de resultados de la operación SubmitSurvey proporciona datos que puede usar para correlacionar los datos de la encuesta de ACS con sus propios datos y almacenamiento personalizados. La clase CallSurveyResult tienen el campo SurveyId que denota un identificador único para la encuesta y CallId denota un identificador para la llamada donde se generó la encuesta. Guardar estos identificadores junto con los datos personalizados permite asociar datos de forma única.

Importante

La encuesta de fin de llamada está disponible a partir de la versión 1.8.0 del SDK de llamada de Windows. Asegúrese de usar esa versión o una posterior cuando pruebe las instrucciones.

Ejemplo de uso de API

La función de encuesta de fin de llamada debe usarse una vez finalizada la llamada. Los usuarios pueden valorar cualquier tipo de llamada VoIP, 1:1, de grupo, de reunión, saliente y entrante. Una vez finalizada la llamada de un usuario, su aplicación puede mostrar una interfaz de usuario al usuario final que le permita elegir una puntuación de calificación y, si es necesario, elegir los problemas que ha encontrado durante la llamada de nuestra lista predefinida.

Los siguientes fragmentos de código muestran un ejemplo de llamada uno a uno. Una vez finalizada la llamada, la aplicación puede mostrar una interfaz de encuesta y, cuando el usuario elija una puntuación, la aplicación debe llamar a la API de funciones para enviar la encuesta con las opciones del usuario.

Le recomendamos que use la escala de clasificación predeterminada, que es la clasificación de cinco estrellas (entre 1 y 5). Sin embargo, puede enviar una encuesta con una escala de valoración personalizada.

Iniciar una encuesta

Para crear un objeto CallSurvey, inicie una encuesta. Esto registra una intención de encuesta. En caso de que este objeto CallSurvey concreto no se envíe después, significa que el cliente final omitió o ignoró la encuesta.

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

Uso general

Al clasificar las llamadas, debe respetar los valores definidos en el campo de escalado. El valor lowerBound denota la peor experiencia posible, mientras que el valor upperBound significa la experiencia perfecta. Ambos valores son inclusivos.

OverallRating es una categoría obligatoria para todas las encuestas.

Para obtener más información sobre el uso sugerido de la encuesta, consulte Conceptos de la encuesta

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Solo llamada de valoración - sin escala personalizada

survey.OverallScore = new CallSurveyScore() { Score = 5 };

Calificar solo llamada - con escala personalizada y problemas

// 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;

Calificación general, audio y video con un problema de muestra

survey.OverallScore = new CallSurveyScore() { 
    Score = 5 
};
survey.AudioScore = new CallSurveyScore() { 
    Score = 4
};
survey.VideoScore = new CallSurveyScore() { 
    Score = 3
};

survey.videoIssues = VideoIssues.Freezes;

Enviar encuesta y controlar los errores que el SDK puede enviar

try
{
    CallSurveyResult result = await surveyCallFeature.SubmitSurveyAsync(survey);
    Console.WriteLine("Survey submitted" + result.SurveyId);
} catch (Exception ex)
{
   Console.WriteLine(ex.Message);
}

Buscar diferentes tipos de errores

Errores al enviar la encuesta:

La API submitSurvey puede devolver un error en los escenarios siguientes:

  • Se requiere la clasificación general de la encuesta.

  • Los límites CallSurveyRatingScale deben estar dentro de 0 y 100. LowerBound debe ser menor que UpperBound. LowScoreThreshold debe estar dentro de los límites.

  • Cualquiera de las puntuaciones debe respetar los límites definidos por CallSurveyRatingScale. Todos los valores del objeto CallSurveyRatingScale son inclusivos. Con la escala predeterminada, el valor de puntuación debe estar comprendido entre 1 y 5.

  • La encuesta no se puede enviar debido a un error de red o servicio.

Etiquetas de encuesta disponibles

Llamada general

Etiqueta Descripción
CannotJoin El cliente no pudo unirse a una llamada
CannotInvite El cliente no pudo agregar un nuevo participante a la llamada
HadToRejoin El cliente abandonó y se unió de nuevo a la llamada como solución alternativa para un problema
EndedUnexpectedly La llamada del cliente finalizó sin ninguna razón aparente
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de audio

Etiqueta Descripción
NoLocalAudio No hay audio en el equipo del cliente desde la llamada, incapacidad de escuchar a nadie en la llamada
NoRemoteAudio Falta audio de un participante específico
Echo Se percibe eco en la llamada
AudioNoise Audio recibido con ruido no deseado
LowVolume Audio demasiado bajo
AudioStoppedUnexpectedly Audio detenido sin ninguna razón clara (por ejemplo, nadie está silenciado)
DistortedSpeech La voz de un participante se distorsiona, diferente de su voz esperada
AudioInterruption El cliente experimenta interrupciones de audio, cortes de voz, etcétera.
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de vídeo

Etiqueta Descripción
NoVideoReceived El cliente no recibe vídeo de un participante
NoVideoSent El cliente inicia el vídeo, pero nadie de la llamada puede verlo
LowQuality Vídeo de baja calidad
Freezes El vídeo se congela
StoppedUnexpectedly El recurso compartido de pantalla se detiene sin ninguna razón clara (por ejemplo, la cámara está activada y la videollamada está activada)
DarkVideoReceived El vídeo se envía, pero el participante ve solo un cuadro oscuro (u otro color único)
AudioVideoOutOfSync El vídeo y el audio no parecen estar sincronizados
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Problemas de uso compartido de pantalla

Etiqueta Descripción
NoContentLocal El cliente no recibe la pantalla compartida de un participante que comparte
NoContentRemote El cliente está compartiendo pantalla, pero otros participantes no pueden verlo
CannotPresent No se puede iniciar la pantalla compartida
LowQuality Baja calidad en el vídeo de pantalla compartida, por ejemplo, no se puede leer
Freezes La pantalla compartida se bloquea durante la presentación
StoppedUnexpectedly La pantalla compartida se detiene sin ninguna razón clara (por ejemplo, el cliente no ha detenido la pantalla compartida)
LargeDelay Se percibe un retraso entre lo que se muestra y lo que se ve
OtherIssues Cualquier problema que no se ajuste a las descripciones anteriores

Opciones de personalización

Puede elegir recoger cada uno de los cuatro valores API o solo los que considere más importantes. Por ejemplo, puede elegir preguntar solo a los clientes sobre su experiencia general de llamadas en lugar de preguntarles sobre su experiencia de audio, video y uso compartido de pantalla. También puede personalizar los rangos de entrada para adaptarlos a sus necesidades. El intervalo de entrada predeterminado es de 1 a 5 para llamada general, audio, video y pantalla compartida. Sin embargo, cada valor API puede personalizarse desde un mínimo de 0 hasta un máximo de 100.

Nota:

El valor de corte indicado de una pregunta en la API es el umbral que Microsoft usa al analizar los datos de la encuesta. Cuando personalizas el valor de corte o el intervalo de entrada, Microsoft analiza los datos de la encuesta según la personalización.

Preguntas personalizadas

Además de usar la API de encuestas de fin de llamadas, puede crear sus propias preguntas de encuestas e incorporarlas a los resultados las encuestas de fin de llamadas.

Sin embargo, la carga útil de resultados de la operación SubmitSurvey proporciona datos que puede usar para correlacionar los datos de la encuesta de ACS con sus propios datos y almacenamiento personalizados. La clase CallSurveyResult tienen el campo SurveyId que denota un identificador único para la encuesta y CallId denota un identificador para la llamada donde se generó la encuesta. Guardar estos identificadores junto con los datos personalizados permite asociar datos de forma única.

Recopilación de datos de encuestas

Importante

Debe habilitar una configuración de diagnóstico en Azure Monitor para enviar los datos de registro de las encuestas a un área de trabajo de Log Analytics, Event Hubs o una cuenta de Azure Storage para recibir y analizar los datos de la encuesta. Si no envía los datos de la encuesta a una de estas opciones, los datos de la encuesta no se almacenarán y se perderán. Para habilitar estos registros en Communication Services, consulte: Registros de encuestas de fin de llamadas

Ver datos de encuestas con un área de trabajo de Log Analytics

Es necesario habilitar un área de trabajo de Log Analytics para almacenar los datos de registro de las encuestas y acceder a los resultados de las mismas. Para habilitar estos registros en Communication Services, consulte: Registros de encuestas de fin de llamadas.

Procedimientos recomendados

Estos son los flujos de encuesta recomendados y las preguntas sugeridas para su consideración. El desarrollo puede usar nuestra recomendación o usar flujos e indicaciones de preguntas personalizados para su interfaz visual.

Pregunta 1: ¿Cómo perciben los usuarios la calidad general de sus llamadas? Le recomendamos que comience la encuesta preguntando únicamente por la calidad general de los participantes. Si separa la primera pregunta de la segunda, le resultará útil recopilar solo las respuestas sobre problemas de audio, video y pantalla compartida si un participante en la encuesta indica que ha experimentado problemas de calidad en la llamada.

  • Pregunta sugerida: "¿Qué tal la calidad de la llamada?"
  • Valores de la pregunta API: llamada general

Pregunta 2: ¿El usuario tuvo algún problema de audio, video o pantalla compartida durante la llamada? Si un participante en la encuesta respondió a la pregunta 1 con una puntuación igual o inferior al valor de corte para la llamada general, presente la segunda pregunta.

  • Pregunta sugerida: "¿Qué podría haber sido mejor?"
  • Valores de la pregunta API: Audio, video y pantalla compartida

Instrucciones de encuesta

  • Evite el agotamiento de la encuesta, no encueste a todos los participantes de la llamada.
  • El orden de las preguntas es importante. Le recomendamos que aleatorice la secuencia de etiquetas opcionales en la pregunta 2 por si los encuestados centran la mayoría de sus comentarios en la primera pregunta que ven visualmente.
  • Considere la posibilidad de usar encuestas para recursos de Azure Communication Services independientes en experimentos controlados para identificar los impactos de la versión.

Pasos siguientes