Regole di etichettatura automatica e correlazione

Customer Experience Insights introduce due funzionalità basate su regole per migliorare l'elaborazione delle conversazioni:

  • Regole di etichettatura automatica: applica automaticamente le coppie chiave-valore alle conversazioni in base alle condizioni definite.
  • Regole di correlazione: definisci come collegare i segmenti di conversazione correlati per formare visualizzazioni complete dell'interazione con il cliente.

Entrambi i tipi di regole utilizzano il Common Expression Language (CEL) per fornire definizioni di regole flessibili e dinamiche. CEL è fondamentale sia per le regole di etichettatura automatica sia per quelle di correlazione. Puoi configurare queste regole con l'API o la console CX Insights.

Regole di etichettatura automatica

Le regole di etichettatura automatica arricchiscono automaticamente solo le conversazioni con etichette coppia chiave-valore personalizzate durante l'importazione. Queste etichette migliorano il filtraggio, la categorizzazione e l'integrazione con altre analisi e flussi di lavoro. Puoi eseguire le seguenti azioni con le regole di etichettatura automatica:

  • Categorizzare le conversazioni per argomento, tipo di cliente, prodotto o risultato.
  • Estrarre i punti dati chiave dai metadati delle conversazioni o dai parametri di Dialogflow, come i nomi di callId, isAuthenticated e intent, nelle etichette.
  • Contrassegnare le conversazioni che richiedono un'attenzione specifica, ad esempio high_escalation_risk.

Etichette

Ogni regola di etichettatura automatica definisce un'etichetta e contiene messaggi di condizione ordinati. Ogni etichetta utilizza le seguenti espressioni CEL:

  • Condizione: valuta se una conversazione è vera o falsa. Per impostazione predefinita, una condizione vuota è vera.
  • Valore: produce il valore stringa per un'etichetta se la condizione è vera.

La prima LabelingCondition corrispondente determina il valore dell'etichetta.

Configura le regole

Segui questi passaggi per configurare le regole di etichettatura automatica utilizzando l'API o la console CX Insights.

API

  1. Utilizza l'operazione Create per configurare un AutoLabelingRule. Esempio di corpo della richiesta:

    {
      "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
    }

    Comando curl, se la richiesta è salvata in 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"

  2. Assegna un nome alla regola nel seguente formato: projects/[project-id]/locations/[location-id]/autoLabelingRules/[auto_labeling_rule]. L'ID [auto_labeling_rule] è la label_key per le regole personalizzate.

Puoi anche utilizzare una delle seguenti operazioni con le regole di etichettatura automatica. Una regola di etichettatura automatica può avere un massimo di 100 etichette per conversazione con un massimo di 256 caratteri per voce.

  • 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. A seconda dei campi da aggiornare, specifica update_mask.
    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. Il payload deve contenere la regola da testare e una conversazione di esempio su cui verrà valutata la regola. Esempio:
    {
    "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

  1. Vai alla console CX Insights, accedi e seleziona il tuo progetto. Console CX Insights
  2. Fai clic su ImpostazioniImpostazioni > Regole di etichettatura automatica.
  3. Inserisci le espressioni CEL con un editor Monaco.
  4. Fai clic su Salva.

Esempi di CEL

  • Etichetta per ID agente:
    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'"
    }
  • Contrassegna il sentiment negativo:
    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'"
    }
  • Estrai un parametro di 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()"
    }

Utilizza le etichette automatiche nei filtri delle regole di analisi

Le regole di etichettatura automatica possono applicare etichette che controllano le conversazioni elaborate dalle regole di analisi principali. Il campo conversation_filter in una regola di analisi può fare riferimento alle etichette utilizzando la mappa delle etichette.

Esempio:

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

Regole di correlazione

Le regole di correlazione definiscono il modo in cui Customer Experience Insights identifica e collega i segmenti di conversazione correlati. Un segmento di conversazione rappresenta una singola parte di una conversazione, così come è stata acquisita, ad esempio una sessione di Dialogflow o una singola interazione dell'agente. Una conversazione completa rappresenta una conversazione completa e collegata composta da uno o più segmenti. Per impostazione predefinita, tutte le nuove conversazioni iniziano come segmenti. Le regole di correlazione ti aiutano a creare una cronologia completa dell'interazione di un cliente, anche quando si estende a più agenti, canali o sessioni.

Le regole di correlazione offrono i seguenti vantaggi per l'analisi delle conversazioni di assistenza clienti.

  • Trascrizione unificata: visualizza una singola trascrizione cronologica che combina le espressioni provenienti da più fonti, ad esempio una sessione di chatbot seguita da una chiamata di un agente live.
  • Analisi cross-channel: collega le interazioni su diversi canali, come chat e voce, per analizzare le tendenze del sentiment e la progressione degli argomenti durante l'intero percorso della conversazione.
  • Accuratezza delle metriche: calcola metriche come il tempo di elaborazione totale o la percentuale di risoluzione per l'intera interazione anziché solo per le singole parti.
  • Contesto per gli agenti: fornisci agli agenti umani la cronologia completa delle interazioni automatizzate precedenti.

Procedura di correlazione

Quando le regole di correlazione corrispondono a più segmenti di conversazione, CX Insights li raggruppa. CX Insights crea quindi una nuova voce per rappresentare la conversazione completa con un ID conversazione univoco. CX Insights imposta l'ID di correlazione di una conversazione completa sulla chiave comune che collega i segmenti e il relativo tipo su FULL. CX Insights imposta gli ID di correlazione dei segmenti originali sulla chiave comune e i relativi tipi su SEGMENT. Se un segmento non è correlato ad altri segmenti, CX Insights gli assegna i tipi di correlazione SEGMENT e FULL.

Le regole di correlazione collegano i segmenti di conversazione correlati provenienti da diverse fonti e canali. CX Insights segue questi passaggi per collegare i segmenti di conversazione:

  1. Raggruppa per chiave di join: CX Insights valuta un'espressione della chiave di join CEL per estrarre un identificatore comune dalla conversazione, ad esempio callId. Le conversazioni che condividono la stessa chiave di join sono potenziali candidate per il collegamento. Le chiavi di join devono essere specifiche. Se una chiave corrisponde a più di 20 conversazioni, la correlazione potrebbe essere rifiutata per evitare problemi di prestazioni.
  2. Perfeziona con i vincoli: l'espressione del vincolo CEL è un controllo booleano facoltativo valutato a coppie tra i candidati. Questa espressione aiuta a confermare se due segmenti che condividono una chiave devono essere effettivamente collegati. Questo controllo è bidirezionale, quindi potrebbe includere il segmento A collegato al segmento B e il segmento B collegato al segmento A.
  3. Link transitivo: il collegamento è transitivo. Se la conversazione A è collegata a B e B è collegata a C, A, B e C vengono unite in un singolo gruppo di conversazioni FULL.

Una conversazione unita può contenere un massimo di cinque segmenti.

Configura le regole di correlazione

Puoi configurare le regole di correlazione utilizzando l'API o la console CX Insights.

API

  1. Esegui il seguente codice per configurare 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"
  2. Assegna un nome alla regola nel seguente formato: projects/{project-id}/locations/{location-id}/correlationConfig.
  3. Visualizza il risultato nel campo Conversation.CorrelationInfo.

Puoi utilizzare una delle seguenti operazioni con le regole di correlazione.

  • 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. Corpo della richiesta di esempio, se salvato in un file updated_corr_config.json:
    {
    "fullConversationConfig": {
    "correlationRules": [
      {
        "joinKeyExpression": "conversation.labels.uui",
        "active": true
      }
    ]
    }
    }
  • TestCorrelationConfig. Il payload deve specificare i dettagli della conversazione di esempio oltre alla regola di correlazione da testare. Esempio:
    {
    "correlationConfig": {
    "fullConversationConfig": {
      "correlationRules": [
       {
          "joinKeyExpression": "conversation.agent_id",
         "active": true
        }
      ]
    }
    },
    "filter": "agent_id="agent_007"",
    "maxSampleCount": 100
    }

Console

  1. Vai alla console CX Insights, accedi e seleziona il tuo progetto. Console CX Insights
  2. Fai clic su ImpostazioniImpostazioni > Configurazione correlazione.
  3. Fai clic su Salva.

Gli amministratori possono definire e gestire le voci CorrelationRule all'interno di CorrelationConfig. Puoi testare le regole di correlazione selezionando le conversazioni. I risultati dei test vengono aggiunti a un set di dati per la revisione.

Esempio di CEL

Collega per callId da 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)

Funzioni di utilità CEL

CX Insights fornisce diverse funzioni di utilità che puoi utilizzare nelle espressioni CEL per valutare le conversazioni.

Firma della funzione Descrizione
get_label(string key) Restituisce il valore stringa dell'etichetta associata alla key specificata dalla conversazione corrente.
exists_call_back_conversation(
  string filter)
Restituisce true se esiste una conversazione di "richiamata" che corrisponde al filter fornito. Cerca le conversazioni con lo stesso ID utente (ID utente offuscato o etichetta ID utente predefinita) in una finestra futura predefinita (24 ore). Il filter fornito viene aggiunto a questi criteri.
has_same_caller_conversation_in_n_hours(
  int hours)


has_same_caller_conversation_in_n_hours(
  int hours, string filter)
Restituisce true se sono presenti conversazioni dello stesso chiamante/utente entro il numero specificato di hours (positivo per il futuro, negativo per il passato). È possibile fornire un filter facoltativo per limitare ulteriormente la ricerca.
get_same_caller_conversations_in_n_hours(
  int hours)


get_same_caller_conversations_in_n_hours(
  int hours, string filter)
Restituisce un elenco di conversazioni dello stesso chiamante/utente entro il numero specificato di hours. È possibile fornire un filter facoltativo.
get_session_params(string key) Recupera il valore stringa di un parametro di sessione (da Dialogflow o CES) associato alla key specificata. Cerca le annotazioni di runtime e le annotazioni di turno CES in ordine cronologico inverso. Restituisce una stringa vuota se non viene trovato.
get_last_subagent()

get_last_subagent(list excludes)
Restituisce il nome visualizzato dell'ultimo subagente coinvolto nella conversazione. Può escludere facoltativamente i subagenti elencati nell'elenco excludes (che in genere include il subagente che gestisce specificamente l'escalation), a meno che non sia l'unico subagente.
get_last_subagent_id()

get_last_subagent_id(list excludes)
Restituisce l'ID dell'ultimo subagente coinvolto nella conversazione. Può escludere facoltativamente i subagenti elencati nell'elenco excludes (che in genere include il subagente che gestisce specificamente l'escalation), a meno che non sia l'unico subagente.
list.first_element_or_empty_string() Disponibile negli elenchi di stringhe. Restituisce il primo elemento dell'elenco se è una stringa; in caso contrario (o se è vuoto), restituisce una stringa vuota.

Analisi a livello di segmento e conversazione

Con CX Insights puoi analizzare le conversazioni a diverse granularità, inclusa l'analisi per segmento e per conversazione per tutte le funzionalità. Le pagine Hub conversazioni e Qualità AI nella console confrontano i dati a livello di conversazione e segmento, indicando la struttura multisegmento delle conversazioni collegate.

Per scegliere come target livelli di analisi specifici, utilizza i seguenti filtri con una regola di analisi.

Visualizzazione a livello di segmento

L'obiettivo di questa visualizzazione è analizzare parti specifiche di un'interazione, ad esempio il turno di un singolo agente. Utilizza il parametro correlation_info.correlation_types:SEGMENT per filtrare la visualizzazione a livello di segmento.

Visualizzazione per conversazione completa

Utilizza questa visualizzazione per analizzare l'intero customer journey, sia che si tratti di conversazioni collegate o autonome. Utilizza il parametro correlation_info.correlation_types:FULL per filtrare la visualizzazione per conversazione completa.