Les insights sur l'expérience client vous permettent d'importer des conversations depuis Agent Assist pour les analyser. Ce document vous explique comment calculer plusieurs métriques conversationnelles importantes sur les données importées d'Assistance pour les agents.
Prérequis
Utilisez Agent Assist pour générer des données conversationnelles à l'aide des fonctionnalités Réponse suggérée ou Synthèse.
Activez l'intégration de l'environnement d'exécution de Dialogflow dans Customer Experience Insights.
Exportez vos données CX Insights vers BigQuery.
Taux de déclenchement
Le taux de déclenchement décrit la fréquence à laquelle un type d'annotation apparaît dans une conversation.
Taux de déclenchement au niveau de la phrase
Un taux de déclenchement au niveau de la phrase s'applique aux annotations qui peuvent apparaître au moins une fois par phrase.
| Nom de l'annotation | Type d'annotation | Critères |
|---|---|---|
| Suggestion d'article | 'ARTICLE_SUGGESTION' |
Au moins une requête SuggestArticles est envoyée pour chaque message de la conversation. |
| Assistance pour les questions fréquentes | 'FAQ' |
Au moins une requête SuggestFaqAnswers ou AnalyzeContent est envoyée pour chaque message de la conversation. |
| Réponse suggérée | 'SMART_REPLY' |
Au moins une requête SuggestSmartReplies ou AnalyzeContent est envoyée pour chaque message de la conversation. |

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;
Taux de déclenchement au niveau de la conversation
Un taux de déclenchement au niveau de la conversation s'applique aux annotations qui peuvent apparaître au maximum une fois par conversation.
| Nom de l'annotation | Type d'annotation | Critères |
|---|
| Assistance basée sur les connaissances génératives (ABCG) | 'KNOWLEDGE_SEARCH' | Au moins une requête SearchKnowledge est envoyée pour chaque message de la conversation. |
| Assistance proactive basée sur les connaissances génératives | 'KNOWLEDGE_SEARCH' | Au moins une requête SearchKnowledge ou AnalyzeContent est envoyée pour chaque message de la conversation. |
| Synthèse | 'CONVERSATION_SUMMARIZATION' | Au moins une demande SuggestConversationSummary est envoyée pour chaque conversation. |

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;
Taux de clics
Le taux de clics décrit la fréquence à laquelle les agents du centre d'appels cliquent sur les annotations qui leur sont suggérées.
Taux de clics au niveau de la phrase
Un taux de clics au niveau de la phrase s'applique aux annotations sur lesquelles les agents du centre d'appels peuvent cliquer plusieurs fois par phrase.
| Nom de l'annotation | Type d'annotation | Critères |
|---|---|---|
| Suggestion d'article | 'ARTICLE_SUGGESTION' |
Au moins une requête SuggestArticles est envoyée pour chaque message de la conversation. |
| Assistance pour les questions fréquentes | 'FAQ' |
Au moins une requête SuggestFaqAnswers ou AnalyzeContent est envoyée pour chaque message de la conversation. |
| Réponse suggérée | 'SMART_REPLY' |
Au moins une requête SuggestSmartReplies ou AnalyzeContent est envoyée pour chaque message de la conversation. |

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;
Taux de clics au niveau de la conversation
Le taux de clics au niveau de la conversation s'applique aux annotations sur lesquelles les agents du centre d'appels peuvent cliquer plusieurs fois par conversation. Les agents d'appels doivent envoyer de manière proactive une demande qui crée une annotation au niveau de la conversation.
| Nom de l'annotation | Type d'annotation | Critères |
|---|---|---|
| Assistance basée sur les connaissances génératives (GKA) | 'KNOWLEDGE_SEARCH' |
Au moins une requête SearchKnowledge est envoyée pour chaque message de la conversation. |
| Assistance proactive basée sur les connaissances génératives | 'KNOWLEDGE_SEARCH' |
Au moins une requête SearchKnowledge ou AnalyzeContent est envoyée pour chaque message de la conversation. |
Métriques spécifiques aux fonctionnalités
Cette section répertorie les métriques spécifiques à chaque fonctionnalité.
Assistance base de connaissances générative
L'assistance basée sur les connaissances génératives (GKA, Generative Knowledge Assist) fournit des réponses aux questions d'un agent en s'appuyant sur les informations contenues dans les documents que vous fournissez. Si l'agent ne trouve pas de réponse, GKA suggère une question similaire et fournit la réponse. Cette fonctionnalité génère les métriques de recherche de connaissances suivantes :
| Nom de la métrique | Définition | Calcul |
|---|---|---|
| Nombre de résultats | Nombre total de réponses fournies à un agent unique pour toutes les conversations. | |
| Ratio de la source de requête de l'agent | Proportion de questions de l'agent par rapport au nombre total de questions. | Calculez le nombre de questions des agents divisé par le nombre total de questions. |
| Ratio de sources de requêtes suggérées | Proportion de questions suggérées par rapport au nombre total de questions. | Calculez le nombre de questions suggérées divisé par le nombre total de questions. |
| Taux de clics sur l'URI | Proportion de réponses dans lesquelles au moins un URI a été cliqué par rapport au nombre total de réponses. | Calculez le nombre de réponses pour lesquelles un agent a cliqué sur l'URI, divisé par le nombre total de réponses. |
| Ratio de commentaires positifs | Proportion de commentaires positifs sur les réponses par rapport au nombre total de réponses. | Calculez le nombre de réponses ayant reçu des commentaires positifs, puis divisez-le par le nombre total de réponses. |
| Ratio de commentaires négatifs | Proportion de commentaires négatifs sur les réponses par rapport au nombre total de réponses. | Calculez le nombre de réponses ayant reçu des commentaires négatifs, puis divisez-le par le nombre total de réponses. |
Assistance proactive basée sur l'IA générative
L'assistance proactive basée sur les connaissances génératives suggère des questions en fonction du contexte de la conversation en cours et fournit des réponses basées sur les informations contenues dans les documents que vous fournissez. L'assistance proactive basée sur l'IA générative ne nécessite aucune interaction avec un agent. Cette fonctionnalité génère les métriques d'aide à la connaissance suivantes :
| Nom de la métrique | Définition | Calcul |
|---|---|---|
| Nombre de résultats | Nombre total de suggestions fournies à un agent pour toutes les conversations. | |
| Taux de clics sur l'URI | Proportion de suggestions pour lesquelles au moins un URI a été cliqué par rapport au nombre total de suggestions fournies. | Calculer le nombre de suggestions pour lesquelles un agent a cliqué sur l'URI, divisé par le nombre total de suggestions fournies. |
| Ratio de commentaires positifs | Proportion de commentaires positifs sur les suggestions par rapport au nombre total de suggestions. | Calculez le nombre de suggestions ayant reçu des commentaires positifs, divisé par le nombre total de suggestions. |
| Ratio de commentaires négatifs | Proportion de commentaires négatifs sur les suggestions par rapport au nombre total de suggestions. | Calculer le nombre de suggestions ayant reçu des commentaires négatifs, divisé par le nombre total de suggestions. |
Réponse suggérée
Cette section liste les métriques spécifiques aux réponses suggérées.
Taux de clics effectif (CTR effectif)
Le taux de clics effectif reflète plus précisément la fréquence à laquelle les agents du centre d'appels cliquent sur les annotations de réponses intelligentes que la métrique de taux de clics standard. La requête suivante récupère la réponse de chaque agent ainsi que les annotations de réponses intelligentes qui ont été créées et sur lesquelles l'agent a cliqué pour cette réponse. Il comptabilise ensuite le nombre de fois où l'agent a rédigé sa réponse à l'aide de suggestions de réponses intelligentes, puis divise ce nombre par le nombre total de réponses de l'agent.

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;
Modifier le taux
Les agents peuvent choisir d'utiliser les réponses intelligentes suggérées telles quelles ou de les modifier avant de les envoyer aux clients. Le calcul du taux de modification des réponses suggérées peut vous indiquer la fréquence à laquelle elles sont modifiées. La requête suivante récupère chaque réponse suggérée intelligente et la réponse de l'agent qui suit immédiatement cette réponse suggérée intelligente. Il compte ensuite le nombre de fois où la réponse de l'agent ne contient pas la réponse suggérée correspondante, puis divise ce nombre par le nombre total de réponses suggérées.

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;
Synthèse
Cette section répertorie les métriques spécifiques à la summarization.
- Le type
GENERATOR_SUGGESTION_RESULTcontient tous les résultats du générateur, y compris les résumés. - Le type
CONVERSATION_SUMMARIZATION_SUGGESTIONcontiendra les anciens récapitulatifs.
Résumé du générateur
Exemple de requête pour accéder au récapitulatif du générateur et aux modifications apportées par l'agent au récapitulatif au format 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 ;
Distance d'édition
La distance d'édition de la synthèse est une mesure de l'écart entre les résumés modifiés par l'agent et les résumés suggérés. Cette métrique correspond au temps passé par l'agent à modifier les résumés suggérés.
Interrogez les résumés et leurs versions révisées (le cas échéant).
Étant donné que les agents d'appels peuvent envoyer des révisions de résumés sans définir le booléen
clickedsurtrue, les résumés de requêtes sont acceptés, quel que soit leur étatclicked. Si le récapitulatif de l'agent est nul, cela signifie que l'agent n'a pas modifié le récapitulatif suggéré ou que le récapitulatif modifié n'a pas été envoyé à Agent Assist via la méthode de feedback préférée.Comparez les résumés suggérés avec ceux révisés par les agents à l'aide de vos algorithmes de distance d'édition préférés pour calculer la distance d'édition de la synthèse. Par exemple, la distance de Levenshtein avec une pénalité égale pour l'insertion, la suppression et la substitution.

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';
Modifier le taux
Vous pouvez calculer le taux de modification pour la synthèse en divisant la distance d'édition par la longueur de la chaîne de la synthèse modifiée. Cette métrique reflète la part du résumé qui a été modifiée par l'agent. Il n'y a pas de limite supérieure à ce taux de modification, mais lorsque la valeur est supérieure ou égale à 1, cela signifie que les résumés générés sont de mauvaise qualité et que la fonctionnalité doit probablement être désactivée.
Modifier le pourcentage
Le pourcentage de modifications mesure le pourcentage du nombre total de résumés suggérés qui ont été modifiés par les agents au lieu d'être utilisés tels quels. Il est calculé en divisant le nombre de résumés modifiés par un agent par le nombre de résumés suggérés. Cette métrique est un bon indicateur de la qualité du modèle lorsque la valeur est proche de 0. Toutefois, lorsqu'il est proche de 1, cela ne signifie pas nécessairement que la qualité du modèle est mauvaise, car la modification peut être mineure et elle sera tout de même comptabilisée comme une modification du résumé suggéré.

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;