Customer Experience Insights propose deux fonctionnalités basées sur des règles pour améliorer le traitement des conversations :
- Règles d'étiquetage automatique : appliquez automatiquement des libellés clé-valeur aux conversations en fonction de conditions définies.
- Règles de corrélation : définissez comment associer des segments de conversation connexes pour former des vues complètes des interactions client.
Les deux types de règles utilisent le Common Expression Language (CEL) pour fournir des définitions de règles flexibles et dynamiques. CEL est fondamental pour les règles d'étiquetage automatique et de corrélation. Vous pouvez configurer ces règles avec l'API ou la console CX Insights.
Règles d'étiquetage automatique
Les règles d'étiquetage automatique n'enrichissent automatiquement que les conversations avec des libellés clé-valeur personnalisés lors de l'importation. Ces libellés améliorent le filtrage, la catégorisation et l'intégration avec d'autres analyses et workflows. Vous pouvez effectuer les actions suivantes avec les règles d'étiquetage automatique :
- Catégorisez les conversations par thème, type de client, produit ou résultat.
- Extrayez des points de données clés des métadonnées de conversation ou des paramètres Dialogflow, tels que les noms
callId,isAuthenticatedetintent, dans des libellés. - Signalez les conversations qui nécessitent une attention particulière, comme
high_escalation_risk.
Étiquettes
Chaque règle d'étiquetage automatique définit un libellé et contient des messages de condition ordonnés. Chaque libellé utilise les expressions CEL suivantes :
- Condition : évalue si une conversation est vraie ou fausse. Une condition vide est définie sur "true" par défaut.
- Valeur : génère la valeur de chaîne pour un libellé si la condition est vraie.
La première valeur LabelingCondition correspondante détermine la valeur du libellé.
Règles par défaut
CX Insights applique automatiquement des règles par défaut pour les libellés suivants.
sessionEscalated
Ce libellé combine les signaux d'escalade Dialogflow et par défaut pour identifier si l'utilisateur final ou l'agent a escaladé la conversation. La valeur de ce libellé alimente la métrique sur le taux d'escalade dans un tableau de bord configurable. Vous pouvez configurer votre propre règle pour remplacer ce libellé si vous utilisez un appel d'outil d'escalade personnalisé.
sessionContained
Ce libellé indique qu'aucune escalade n'a eu lieu. Lorsque la valeur est true, le résultat de la conversation Quality AI ne peut pas être escaladé. Vous pouvez configurer votre propre règle pour remplacer ce libellé.
isRepeatedCallerConversation
Ce libellé calcule la fréquence à laquelle un utilisateur rappelle dans les 24 heures. Il s'appuie sur le libellé userIdentifier pour déterminer si un rappel provient du même utilisateur. Vous pouvez configurer votre propre règle pour remplacer ce libellé.
userIdentifier
Ce libellé permet de déterminer si le même utilisateur rappelle dans un délai spécifié. Pour ce faire, il utilise la variable obfuscated_external_user_id de session_params dans Dialogflow et Customer Experience Agent Studio, ou la requête CreateParticipant dans Agent Assist. Si vous utilisez différentes variables de paramètre de session pour identifier les utilisateurs, vous devez utiliser get_session_params() pour remplacer ce libellé.\
lastTransferSubAgentNames
Ce libellé indique le nom du sous-agent Customer Experience Agent Studio final avant qu'une conversation ne soit transférée. La valeur par défaut utilise get_last_subagent([entry_subagent]), ce qui suppose que votre sous-agent nommé gère l'escalade. Si vous avez un agent d'escalade spécifique, vous devez configurer votre propre règle pour remplacer la valeur par défaut par get_last_subagent([escalation_agent_name]).
Configurer les règles
Vous pouvez également configurer vos propres règles d'étiquetage automatique avec l'API ou la console CX Insights.
API
Utilisez l'opération
Createpour configurer unAutoLabelingRule. Exemple de corps de requête :{ "displayName": "$DISPLAY_NAME", "labelKey": "$UNIQUE_KEY_NAME", "labelKeyType": LABEL_KEY_TYPE_CUSTOM "conditions": [ { "condition": "conversation.turn_count > 10 && conversation.duration > "60s"", "value": "'long_call'" }, { "condition": "conversation.agent_id == "agent_007"", "value": "'special_agent'" } ], "active": true }Commande Curl, si la requête est enregistrée dans
auto_labeling_rule.json:curl-X POST
-H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
-d @auto_labeling_rule.json
"https://$ENDPOINT/v1/projects/$PROJECT/locations/$LOCATION/autoLabelingRules?auto_labeling_rule_id=$RULE_ID"Donnez un nom à votre règle au format suivant :
projects/[project-id]/locations/[location-id]/autoLabelingRules/[auto_labeling_rule]. L'ID[auto_labeling_rule]correspond àlabel_keypour les règles personnalisées.
Vous pouvez également utiliser l'une des opérations suivantes avec les règles d'étiquetage automatique. Une règle d'étiquetage automatique peut comporter jusqu'à 100 libellés par conversation, avec un maximum de 256 caractères par entrée.
Get.curl -X GET
-H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
-H "Content-Type: application/json; charset=utf-8" \ "https://$ENDPOINT/v1/projects/$PROJECT/locations/$LOCATION/autoLabelingRules/$RULE_ID"List.curl -X GET
-H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
-H "Content-Type: application/json; charset=utf-8" \ "https://$ENDPOINT/v1/projects/$PROJECT/locations/$LOCATION/autoLabelingRules"Update. Indiquez leupdate_masken fonction des champs à mettre à jour.curl -X PATCH
-H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
-d @update_payload.json \ "https://$ENDPOINT/v1/projects/$PROJECT/locations/$LOCATION/autoLabelingRules/$RULE_ID?update_mask=displayName,active"TestAutoLabelingRule. Votre charge utile doit contenir la règle à tester et un exemple de conversation sur lequel la règle sera évaluée. Exemple :{ "conversation": { "agentId": "agent_007", "turnCount": 15, "duration": "75s" /# Add other conversation fields relevant to the rule }, "autoLabelingRule": { "displayName": "Test Rule", "labelKey": "test_category", "conditions": [ { "condition": "conversation.turn_count > 10 && conversation.duration > "60s"", "value": "'long_call_test'" } ], "active": true } }
Console
- Accédez à la console CX Insights, connectez-vous et sélectionnez votre projet. Console CX Insights
- Cliquez sur ParamètresParamètres > Règles d'étiquetage automatique.
- Saisissez des expressions CEL avec un éditeur Monaco.
- Cliquez sur Enregistrer.
Exemples CEL
- Libellé par ID d'agent :
label_key: "agent_category" conditions { condition: "conversation.agent_id == '007'" value: "'special_agent'" } conditions { condition: "conversation.agent_id.startsWith('team_a')" value: "'tier_1_support'" } conditions { condition: "" // Default value: "'standard'" } - Signaler un sentiment négatif :
label_key: "needs_review" conditions { // This example assumes sentiment scores are present in the conversation's latest_analysis condition: "has(conversation.latest_analysis.analysis_result.call_analysis_metadata.sentiments) && conversation.latest_analysis. analysis_result.call_analysis_metadata.sentiments.exists(s, s. sentiment_data.score < -0.5)" value: "'true'" } - Extrayez un paramètre Dialogflow :
label_key: "df_session_outcome" conditions { condition: "" // Always try to extract value: "conversation.runtime_annotations.map(a, a.dialogflow_interaction.detect_intent_response_v3.query_result.parameters).filter(p, has(p.outcome)).map(p, p.outcome).first_element_or_empty_string()" }
Utiliser des libellés automatiques dans les filtres de règles d'analyse
Les règles d'étiquetage automatique peuvent appliquer des libellés qui contrôlent les conversations traitées par les règles d'analyse principales. Le champ conversation_filter d'une règle d'analyse peut référencer des libellés à l'aide du mappage des libellés.
Exemple :
// AnalysisRule to run detailed analysis on conversations labeled 'needs_review: true'
display_name: "Detailed Analysis for Reviewed Conversations"
conversation_filter: "labels.needs_review = \"true\""
annotator_selector: {
run_summarization_annotator: true
// ... other annotators
}
analysis_percentage: 1.0
active: true
Règles de corrélation
Les règles de corrélation définissent comment les insights sur l'expérience client identifient et associent les segments de conversation associés. Un segment de conversation représente une partie d'une conversation telle qu'elle a été ingérée, comme une session Dialogflow ou une seule interaction avec un agent. Une conversation complète représente une conversation complète et associée, composée d'un ou de plusieurs segments. Par défaut, toutes les nouvelles conversations commencent sous forme de segments. Les règles de corrélation vous aident à créer un historique complet des interactions d'un client, même lorsqu'elles s'étendent sur plusieurs agents, canaux ou sessions.
Les règles de corrélation offrent les avantages suivants pour l'analyse des conversations du service client.
- Transcription unifiée : affichez une transcription unique et chronologique qui combine les énoncés de plusieurs sources, comme une session de chatbot suivie d'un appel avec un agent en direct.
- Analyse cross-canal : associez les interactions sur différents canaux, comme le chat et la voix, pour analyser les tendances des sentiments et la progression des thèmes tout au long d'un parcours de conversation complet.
- Précision des métriques : calculez des métriques comme le temps de traitement total ou le taux de résolution pour l'intégralité de l'interaction plutôt que pour des parties individuelles.
- Contexte pour les agents : fournissez aux agents humains l'historique complet des interactions automatisées précédentes.
Processus de corrélation
Lorsque des règles de corrélation correspondent à plusieurs segments de conversation, CX Insights les regroupe. CX Insights crée ensuite une entrée pour représenter l'intégralité de la conversation, avec son propre ID de conversation unique. CX Insights définit l'ID de corrélation d'une conversation complète sur la clé commune qui relie les segments, et son type sur FULL. CX Insights définit les ID de corrélation des segments d'origine sur la clé commune et leurs types sur SEGMENT. Si un segment n'est corrélé à aucun autre segment, CX Insights lui attribue les deux types de corrélation : SEGMENT et FULL.
Associer des messages
Les règles de corrélation associent des segments de conversation associés provenant de différentes sources et différents canaux. CX Insights suit les étapes suivantes pour associer les segments de conversation :
- Critère de regroupement par clé de jointure : CX Insights évalue une expression CEL de clé de jointure pour extraire un identifiant commun de la conversation, tel que
callId. Les conversations qui partagent la même clé de participation peuvent être associées. Les clés de jointure doivent être spécifiques. Si une clé correspond à plus de 20 conversations, la corrélation peut être refusée pour éviter des problèmes de performances. - Affiner avec des contraintes : l'expression de contrainte CEL est une vérification booléenne facultative évaluée par paires entre les candidats. Cette expression permet de confirmer si deux segments partageant une clé doivent réellement être associés. Cette vérification est bidirectionnelle. Elle peut donc inclure le segment A associé au segment B et le segment B associé au segment A.
- Lien transitif : l'association est transitive. Si la conversation A est associée à la conversation B, et que la conversation B est associée à la conversation C, alors les conversations A, B et C sont fusionnées en un seul groupe de conversations
FULL.
Une conversation fusionnée peut contenir jusqu'à cinq segments.
Configurer des règles de corrélation
Vous pouvez configurer des règles de corrélation à l'aide de l'API ou de la console CX Insights.
API
- Exécutez le code suivant pour configurer un
CorrelationConfig.curl -X PATCH
-H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
-d @update_corr_config.json
"https://$ENDPOINT/v1/projects/$PROJECT/locations/$LOCATION/correlationConfig?update_mask=fullConversationConfig" - Donnez un nom à votre règle au format suivant :
projects/{project-id}/locations/{location-id}/correlationConfig. - Affichez le résultat dans le champ
Conversation.CorrelationInfo.
Vous pouvez utiliser l'une des opérations suivantes avec les règles de corrélation.
GetCorrelationConfig.curl-X GET
-H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
"https://$ENDPOINT/v1/projects/$PROJECT/locations/$LOCATION/correlationConfig"UpdateCorrelationConfig. Exemple de corps de requête, s'il est enregistré dans unupdated_corr_config.json:{ "fullConversationConfig": { "correlationRules": [ { "joinKeyExpression": "conversation.labels.uui", "active": true } ] } }TestCorrelationConfig. Votre charge utile doit spécifier les détails de l'exemple de conversation en plus de la règle de corrélation à tester. Exemple :{ "correlationConfig": { "fullConversationConfig": { "correlationRules": [ { "joinKeyExpression": "conversation.agent_id", "active": true } ] } }, "filter": "agent_id="agent_007"", "maxSampleCount": 100 }
Console
- Accédez à la console CX Insights, connectez-vous et sélectionnez votre projet. Console CX Insights
- Cliquez sur ParamètresParamètres > Configuration de la corrélation.
- Cliquez sur Enregistrer.
Les administrateurs peuvent définir et gérer les entrées CorrelationRule dans CorrelationConfig. Vous pouvez tester vos règles de corrélation en sélectionnant des conversations. Les résultats des tests sont ajoutés à un ensemble de données pour examen.
Exemple de CEL
Association par callId depuis Dialogflow :
join_key_expression:
// Extracts 'callId' from Dialogflow parameters, falls back to conversation name.
default(conversation.runtime_annotations.map(a,
a.dialogflow_interaction.detect_intent_response_v3.query_result.parameters)
.filter(p, has(p.callId))
.map(p, p.callId)
.first_element_or_empty_string(), conversation.name)
Fonctions utilitaires CEL
CX Insights fournit plusieurs fonctions utilitaires que vous pouvez utiliser dans les expressions CEL pour évaluer les conversations.
| Signature de la fonction | Description |
|---|---|
get_label(string key) |
Renvoie la valeur de chaîne du libellé associé à l'key donné de la conversation actuelle. |
exists_call_back_conversation( |
Renvoie true si une conversation de rappel existe et correspond à la valeur filter fournie. Il recherche les conversations avec le même ID utilisateur (ID utilisateur obscurci ou libellé d'ID utilisateur prédéfini) dans une fenêtre future par défaut (24 heures). Le filter fourni est ajouté à ce critère. |
has_same_caller_conversation_in_n_hours(has_same_caller_conversation_in_n_hours( |
Renvoie true si des conversations du même appelant/utilisateur ont eu lieu au cours du nombre spécifié de hours (positif pour l'avenir, négatif pour le passé). Un filter facultatif peut être fourni pour limiter davantage la recherche. |
get_same_caller_conversations_in_n_hours(get_same_caller_conversations_in_n_hours( |
Renvoie une liste de conversations du même appelant/utilisateur au cours du nombre spécifié de hours. Vous pouvez fournir un filter facultatif. |
get_session_params(string key) |
Récupère la valeur de chaîne d'un paramètre de session (à partir de Dialogflow ou CES) associé au key donné. Il effectue une recherche dans les annotations d'exécution et les annotations de tour CES dans l'ordre chronologique inverse. Renvoie une chaîne vide si la valeur est introuvable. |
get_last_subagent()get_last_subagent(list excludes) |
Renvoie le nom à afficher du dernier sous-agent impliqué dans la conversation. Peut éventuellement exclure les sous-agents listés dans la liste excludes (qui inclut généralement le sous-agent chargé spécifiquement de l'escalade), sauf s'il s'agit du seul sous-agent. |
get_last_subagent_id()get_last_subagent_id(list excludes) |
Renvoie l'ID du dernier sous-agent impliqué dans la conversation. Peut éventuellement exclure les sous-agents listés dans la liste excludes (qui inclut généralement le sous-agent chargé spécifiquement de l'escalade), sauf s'il s'agit du seul sous-agent. |
list.first_element_or_empty_string() |
Disponible sur les listes de chaînes. Renvoie le premier élément de la liste s'il s'agit d'une chaîne. Sinon (ou si la liste est vide), renvoie une chaîne vide. |
Analyse au niveau des segments et des conversations
CX Insights vous permet d'analyser les conversations à différents niveaux de précision, y compris une analyse par segment et par conversation pour toutes les fonctionnalités. Les pages Conversation Hub et Quality AI de la console comparent les données au niveau des conversations et des segments, ce qui indique la structure multisegment des conversations associées.
Pour cibler des niveaux d'analyse spécifiques, utilisez les filtres suivants avec une règle d'analyse.
Vue au niveau du segment
L'objectif de cette vue est d'analyser des parties spécifiques d'une interaction, comme le tour d'un agent. Utilisez le paramètre correlation_info.correlation_types:SEGMENT pour filtrer la vue au niveau du segment.
Mode Conversation
Utilisez cette vue pour analyser l'intégralité du parcours client, qu'il s'agisse de conversations associées ou autonomes. Utilisez le paramètre correlation_info.correlation_types:FULL pour filtrer le mode Conversation complet.