Las Estadísticas de experiencia del cliente te permiten importar conversaciones de Agent Assist para analizarlas. En este documento, se explica el proceso para calcular varias métricas de conversación importantes sobre los datos importados de Agent Assist.
Requisitos previos
Usa Agent Assist para generar datos conversacionales con las funciones de respuesta inteligente o resumen.
Habilita la integración del entorno de ejecución de Dialogflow en Customer Experience Insights.
Exporta tus datos de CX Insights a BigQuery.
Tasa de activación
El porcentaje de activación describe la frecuencia con la que aparece un tipo de anotación en una conversación.
Tasa de activación a nivel de la oración
Se aplica un porcentaje de activación a nivel de la oración para las anotaciones que pueden aparecer al menos una vez por oración.
| Nombre de la anotación | Tipo de anotación | Criterios |
|---|---|---|
| Sugerencia de artículo | 'ARTICLE_SUGGESTION' |
Se envía al menos una solicitud de SuggestArticles por cada mensaje de la conversación. |
| Asistencia de preguntas frecuentes | 'FAQ' |
Se envía al menos una solicitud de SuggestFaqAnswers o AnalyzeContent para cada mensaje de la conversación. |
| Respuesta inteligente | 'SMART_REPLY' |
Se envía al menos una solicitud de SuggestSmartReplies o AnalyzeContent para cada mensaje de la conversación. |

WITH calculation AS ( SELECT COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' ) > 0 ) AS numSentencesAtLeastOneAnnotation, COUNT(*) AS numSentencesTotal FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen ) SELECT numSentencesAtLeastOneAnnotation, numSentencesTotal, numSentencesAtLeastOneAnnotation / numSentencesTotal AS triggerRate FROM calculation;
Tasa de activación a nivel de la conversación
Se aplica una tasa de activación a nivel de la conversación a las anotaciones que pueden aparecer como máximo una vez por conversación.
| Nombre de la anotación | Tipo de anotación | Criterios |
|---|
| Asistencia de conocimiento generativa (GKA) | 'KNOWLEDGE_SEARCH' | Se envía al menos una solicitud de SearchKnowledge por cada mensaje de la conversación. |
| Asistencia de conocimiento generativo proactiva | 'KNOWLEDGE_SEARCH' | Se envía al menos una solicitud de SearchKnowledge o AnalyzeContent para cada mensaje de la conversación. |
| Resumen | 'CONVERSATION_SUMMARIZATION' | Se envía al menos una solicitud de SuggestConversationSummary por cada conversación. |

WITH calculation AS ( SELECT COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sentences) AS sen, UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' ) > 0 ) AS numConversationsAtLeastOneAnnotation, COUNT(*) AS numConversationsTotal FROM BIGQUERY_TABLE ) SELECT numConversationsAtLeastOneAnnotation, numConversationsTotal, numConversationsAtLeastOneAnnotation / numConversationsTotal AS triggerRate FROM calculation;
Tasa de clics
La tasa de clics describe la frecuencia con la que los agentes de llamadas hacen clic en las anotaciones que se les sugieren.
Tasa de clics a nivel de la oración
La tasa de clics a nivel de la oración se aplica a las anotaciones en las que los agentes de llamadas pueden hacer clic varias veces por oración.
| Nombre de la anotación | Tipo de anotación | Criterios |
|---|---|---|
| Sugerencia de artículo | 'ARTICLE_SUGGESTION' |
Se envía al menos una solicitud de SuggestArticles por cada mensaje de la conversación. |
| Asistencia de preguntas frecuentes | 'FAQ' |
Se envía al menos una solicitud de SuggestFaqAnswers o AnalyzeContent para cada mensaje de la conversación. |
| Respuesta inteligente | 'SMART_REPLY' |
Se envía al menos una solicitud de SuggestSmartReplies o AnalyzeContent para cada mensaje de la conversación. |

WITH calculation AS ( SELECT COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' AND annotation.displayed = TRUE AND annotation.clicked = TRUE ) > 0 ) AS numSentencesAtLeastOneClickedAndDisplayedAnnotation, COUNTIF( ( SELECT COUNT(*) FROM UNNEST (sen.annotations) AS annotation WHERE annotation.type = 'ANNOTATION_TYPE' AND annotation.displayed = TRUE ) > 0 ) AS numSentencesAtLeastOneDisplayedAnnotation, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen ) SELECT numSentencesAtLeastOneClickedAndDisplayedAnnotation, numSentencesAtLeastOneDisplayedAnnotation, numSentencesAtLeastOneClickedAndDisplayedAnnotation / numSentencesAtLeastOneDisplayedAnnotation AS clickThroughRate FROM calculation;
Tasa de clics a nivel de la conversación
La tasa de clics a nivel de la conversación se aplica a las anotaciones en las que los agentes de llamadas pueden hacer clic varias veces por conversación. Los agentes de llamadas deben enviar de forma proactiva una solicitud que cree una anotación a nivel de la conversación.
| Nombre de la anotación | Tipo de anotación | Criterios |
|---|---|---|
| Asistencia de conocimiento generativo (GKA) | 'KNOWLEDGE_SEARCH' |
Se envía al menos una solicitud de SearchKnowledge por cada mensaje de la conversación. |
| Knowledge Assist proactivo y generativo | 'KNOWLEDGE_SEARCH' |
Se envía al menos una solicitud de SearchKnowledge o AnalyzeContent para cada mensaje de la conversación. |
Métricas específicas de la función
En esta sección, se enumeran las métricas específicas de cada función.
Asistente de conocimiento generativo
La asistencia de conocimiento generativo (GKA) proporciona respuestas a las preguntas de un agente en función de la información de los documentos que proporciones. Si el agente no encuentra una respuesta, GKA sugiere una pregunta similar y proporciona la respuesta. Esta función genera las siguientes métricas de la Búsqueda de conocimiento:
| Nombre de la métrica | Definición | Cálculo |
|---|---|---|
| Recuento de resultados | Es la cantidad total de respuestas proporcionadas a un solo agente para todas las conversaciones. | |
| Proporción de fuentes de consultas de agentes | Proporción de preguntas del agente en relación con la cantidad total de preguntas. | Calcula la cantidad de preguntas de los agentes y divídela por la cantidad total de preguntas. |
| Proporción de fuentes de consultas sugeridas | Proporción de preguntas sugeridas en relación con la cantidad total de preguntas. | Calcula la cantidad de preguntas sugeridas dividida por la cantidad total de preguntas. |
| Proporción de clics en el URI | Proporción de respuestas en las que se hizo clic en al menos un URI en relación con la cantidad total de respuestas. | Calcula la cantidad de respuestas para las que un agente hizo clic en el URI dividida por la cantidad total de respuestas. |
| Proporción de comentarios positivos | Proporción de comentarios positivos sobre las respuestas en relación con la cantidad total de respuestas. | Calcula la cantidad de respuestas que recibieron comentarios positivos dividida por la cantidad total de respuestas. |
| Proporción de comentarios negativos | Proporción de comentarios negativos sobre las respuestas en relación con la cantidad total de respuestas. | Calcula la cantidad de respuestas que recibieron comentarios negativos dividida por la cantidad total de respuestas. |
Knowledge Assist proactivo y generativo
La asistencia de conocimiento generativo proactiva sugiere las preguntas según el contexto de la conversación actual y proporciona las respuestas en función de la información de los documentos que proporcionas. Knowledge Assist proactivo y generativo no requiere interacción del agente. Esta función genera las siguientes métricas de asistencia basada en el conocimiento:
| Nombre de la métrica | Definición | Cálculo |
|---|---|---|
| Recuento de resultados | Es la cantidad total de sugerencias proporcionadas a un solo agente para todas las conversaciones. | |
| Proporción de clics en el URI | Proporción de sugerencias en las que se hizo clic en al menos un URI en relación con la cantidad total de sugerencias proporcionadas. | Calcula la cantidad de sugerencias para las que un agente hizo clic en el URI dividida por la cantidad total de sugerencias proporcionadas. |
| Proporción de comentarios positivos | Proporción de comentarios positivos sobre las sugerencias en relación con la cantidad total de sugerencias. | Calcula la cantidad de sugerencias que recibieron comentarios positivos dividida por la cantidad total de sugerencias. |
| Proporción de comentarios negativos | Proporción de comentarios negativos sobre las sugerencias en relación con la cantidad total de sugerencias. | Calcula la cantidad de sugerencias que recibieron comentarios negativos dividida por la cantidad total de sugerencias. |
Respuesta inteligente
En esta sección, se enumeran las métricas específicas de la respuesta inteligente.
Tasa de clics efectiva (CTR efectiva)
La tasa de clics efectiva refleja con mayor precisión la frecuencia con la que los agentes de asistencia al cliente hacen clic en las anotaciones de respuesta inteligente que la métrica de tasa de clics normal. La siguiente consulta recupera la respuesta de cada agente y las anotaciones de respuestas inteligentes que se hicieron solo para la respuesta de ese agente y en las que hizo clic el agente. Luego, cuenta la cantidad de veces que el agente redactó su respuesta con sugerencias de Respuesta inteligente y divide este número por el recuento total de respuestas del agente.

WITH calculation AS ( SELECT sen.sentence AS agentResponse, ( # Get a list of effective smart replies that map to each agent response. SELECT ARRAY_AGG(JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.reply")) FROM UNNEST (sentences) AS sen2, UNNEST (sen2.annotations) AS annotation WHERE annotation.type='SMART_REPLY' AND annotation.clicked=TRUE AND annotation.annotationRecord IS NOT NULL AND annotation.createTimeNanos >= ( # Get the timestamp of the agent response that immediately precedes # the current agent response. The timestamp of the effective smart # reply must be greater than this timestamp. SELECT MAX(sen3.createTimeNanos) FROM UNNEST(sentences) AS sen3 WHERE sen3.participantRole = 'HUMAN_AGENT' AND sen3.createTimeNanos < sen.createTimeNanos ) AND annotation.createTimeNanos <= sen.createTimeNanos ) AS effectiveSmartRepliesPerAgentResponse FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen WHERE sen.participantRole = 'HUMAN_AGENT' ) SELECT COUNTIF(ARRAY_LENGTH(effectiveSmartRepliesPerAgentResponse) > 0) / COUNT(agentResponse) AS effectiveCTR FROM calculation;
Editar tarifa
Los agentes pueden optar por usar las respuestas de respuesta inteligente sugeridas de forma literal o editarlas antes de enviarlas a los clientes. Calcular la tasa de edición de las respuestas de Respuesta inteligente puede mostrarte con qué frecuencia se editan las respuestas sugeridas. La siguiente consulta recupera cada respuesta inteligente sugerida y la respuesta del agente que sigue inmediatamente a esa respuesta inteligente. Luego, cuenta la cantidad de veces que la respuesta del agente no contiene su respuesta inteligente correspondiente y, luego, divide este número por el recuento total de respuestas inteligentes.

WITH calculation AS ( SELECT JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord), wide_number_mode=>'round'), "$.reply") AS smartReply, ( # Get the agent response that immediately follows the smart reply. SELECT sen2.sentence FROM UNNEST (sentences) AS sen2 WHERE sen2.createTimeNanos = ( SELECT MIN(sen3.createTimeNanos) FROM UNNEST (sentences) AS sen3 WHERE sen3.createTimeNanos > sen.createTimeNanos AND sen3.participantRole = 'HUMAN_AGENT' ) ) AS agentResponseThatFollows, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen, UNNEST (sen.annotations) AS annotation WHERE annotation.type='SMART_REPLY' AND annotation.clicked=TRUE AND annotation.annotationRecord IS NOT NULL ) SELECT COUNTIF(REGEXP_CONTAINS(agentResponseThatFollows, smartReply)) / COUNT(smartReply) AS editRate FROM calculation;
Resúmenes
En esta sección, se enumeran las métricas específicas de la generación de resúmenes.
- El tipo
GENERATOR_SUGGESTION_RESULTcontendrá todos los resultados del generador, incluidos los resúmenes. - El tipo
CONVERSATION_SUMMARIZATION_SUGGESTIONcontendrá resúmenes heredados.
Resumen del generador
Consulta de ejemplo para acceder al resumen del generador y a las ediciones del agente en el resumen como JSON:
SELECT IF (JSON_VALUE(annotation.annotationRecord) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.generatorSuggestion.summarySuggestion"), NULL) AS generator_summary, IF (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS feedback, FROM BIGQUERY_TABLE AS c, UNNEST(c.sentences) AS sentences, UNNEST(sentences.annotations) AS annotation WHERE annotation.type = 'GENERATOR_SUGGESTION_RESULT' AND JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.generatorSuggestion.summarySuggestion") IS NOT NULL LIMIT 10 ;
Distancia de edición
La distancia de edición del resumen es una medida de cuánto difieren los resúmenes editados por el agente de los resúmenes sugeridos. Esta métrica se correlaciona con la cantidad de tiempo que el agente dedicó a editar los resúmenes sugeridos.
Consultar las resúmenes y sus resúmenes revisados (si los hay)
Dado que los agentes de llamadas pueden enviar revisiones de resúmenes sin establecer el valor booleano
clickedentrue, se pueden consultar los resúmenes de las búsquedas, independientemente de su estadoclicked. Si el resumen del agente es nulo, significa que el agente no revisó el resumen sugerido o que el resumen revisado no se envió a Agent Assist a través de la ruta de comentarios preferida.Compara los resúmenes sugeridos con los resúmenes revisados de los agentes usando tus algoritmos de distancia de edición preferidos para calcular la distancia de edición de la summarización. Por ejemplo, la distancia de Levenshtein con la misma penalización para la inserción, la eliminación y la sustitución.

SELECT JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.text") AS suggestedSummary, IF (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS feedback, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen, UNNEST (sen.annotations) as annotation WHERE type='CONVERSATION_SUMMARIZATION_SUGGESTION';
Editar tarifa
Para calcular la tasa de edición del resumen, divide la distancia de edición por la longitud de la cadena del resumen editado. Esta métrica refleja qué parte del resumen editó el agente. Esta tasa de edición no tiene límite superior, pero cuando el valor es igual o superior a uno, significa que los resúmenes generados son malos y, probablemente, se debería inhabilitar la función.
Editar porcentaje
El porcentaje de edición es una medida del porcentaje de la cantidad total de resúmenes sugeridos que los agentes editaron en lugar de usarlos textualmente. Se calcula como la cantidad de resúmenes editados por el agente dividida por la cantidad de resúmenes sugeridos. Esta métrica es un buen indicador de la calidad del modelo cuando el valor está cerca de 0. Sin embargo, cuando se acerca a 1, no significa necesariamente que la calidad del modelo sea mala, ya que la edición podría ser menor y, aun así, se contaría como que se editó el resumen sugerido.

WITH summaryAndEdits AS ( SELECT JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.text") AS suggestedSummary, IF (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS editedSummary, FROM BIGQUERY_TABLE, UNNEST (sentences) AS sen, UNNEST (sen.annotations) AS annotation WHERE type='CONVERSATION_SUMMARIZATION_SUGGESTION' ) SELECT countif (suggestedSummary IS NOT NULL) AS totalSummaries, countif (editedSummary IS NOT NULL) AS editedSummaries, countif (editedSummary IS NOT NULL) / countif (suggestedSummary IS NOT NULL) AS editRate FROM summaryAndEdits;