Reglas de correlación y etiquetado automático

Customer Experience Insights presenta dos funciones basadas en reglas para mejorar el procesamiento de conversaciones:

  • Reglas de etiquetado automático: Aplica automáticamente etiquetas de pares clave-valor a las conversaciones según las condiciones definidas.
  • Reglas de correlación: Definen cómo vincular segmentos de conversación relacionados para formar vistas completas de la interacción con el cliente.

Ambos tipos de reglas usan Common Expression Language (CEL) para proporcionar definiciones de reglas flexibles y dinámicas. CEL es fundamental para las reglas de correlación y el etiquetado automático. Puedes configurar estas reglas con la API o la consola de CX Insights.

Reglas de etiquetado automático

Las reglas de etiquetado automático enriquecen automáticamente las conversaciones con etiquetas personalizadas de par clave-valor durante la importación. Estas etiquetas mejoran el filtrado, la categorización y la integración con otros análisis y flujos de trabajo. Puedes realizar las siguientes acciones con las reglas de etiquetado automático:

  • Categoriza las conversaciones por tema, tipo de cliente, producto o resultado.
  • Extrae puntos de datos clave de los metadatos de la conversación o los parámetros de Dialogflow, como los nombres de callId, isAuthenticated y intent, en etiquetas.
  • Marcar conversaciones que requieren atención específica, como high_escalation_risk

Etiquetas

Cada regla de etiquetado automático define una etiqueta y contiene mensajes de condición ordenados. Cada etiqueta usa las siguientes expresiones en CEL:

  • Condición: Evalúa si una conversación es verdadera o falsa. Una condición vacía se establece de forma predeterminada como verdadera.
  • Valor: Produce el valor de cadena de una etiqueta si la condición es verdadera.

El primer LabelingCondition que coincide determina el valor de la etiqueta.

Configura las reglas

Sigue estos pasos para configurar reglas de etiquetado automático con la API o la consola de CX Insights.

API

  1. Usa la operación Create para configurar un AutoLabelingRule. Ejemplo de cuerpo de la solicitud:

    {
      "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, si la solicitud se guarda en 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. Asigna un nombre a tu regla con el siguiente formato: projects/[project-id]/locations/[location-id]/autoLabelingRules/[auto_labeling_rule]. El ID de [auto_labeling_rule] es el label_key para las reglas personalizadas.

También puedes usar cualquiera de las siguientes operaciones con las reglas de etiquetado automático. Una regla de etiquetado automático puede tener un máximo de 100 etiquetas por conversación y un máximo de 256 caracteres por entrada.

  • 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. Según los campos que se deban actualizar, especifica el 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. Tu carga útil debe contener la regla que se probará y una conversación de muestra en la que se evaluará la regla. Ejemplo:
    {
    "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. Navega a la consola de CX Insights, accede y selecciona tu proyecto. Consola de CX Insights
  2. Haz clic en ConfiguraciónConfiguración > Reglas de etiquetado automático.
  3. Ingresa expresiones CEL con un editor de Monaco.
  4. Haz clic en Guardar.

Ejemplos de CEL

  • Etiqueta por ID de 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'"
    }
  • Marcar opiniones negativas:
    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'"
    }
  • Para extraer un parámetro de Dialogflow, haz lo siguiente:
    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()"
    }

Usa etiquetas automáticas en los filtros de reglas de análisis

Las reglas de etiquetado automático pueden aplicar etiquetas que controlan qué conversaciones procesan las reglas de análisis principales. El campo conversation_filter en una regla de análisis puede hacer referencia a etiquetas con el mapa de etiquetas.

Ejemplo:

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

Reglas de correlación

Las reglas de correlación definen cómo Customer Experience Insights identifica y vincula los segmentos de conversación relacionados. Un segmento de conversación representa una sola parte de una conversación, tal como se incorporó, como una sesión de Dialogflow o una sola interacción del agente. Una conversación completa representa una conversación completa y vinculada compuesta por uno o más segmentos. De forma predeterminada, todas las conversaciones nuevas comienzan como segmentos. Las reglas de correlación te ayudan a crear un historial completo de la interacción de un cliente, incluso cuando abarca varios agentes, canales o sesiones.

Las reglas de correlación proporcionan los siguientes beneficios para el análisis de conversaciones de atención al cliente.

  • Transcripción unificada: Consulta una sola transcripción cronológica que combina expresiones de varias fuentes, como una sesión de chatbot seguida de una llamada con un agente en vivo.
  • Análisis en múltiples canales: Vincula las interacciones en diferentes canales, como el chat y la voz, para analizar las tendencias de opiniones y la progresión de temas a lo largo de todo el recorrido de una conversación.
  • Precisión de las métricas: Calcula métricas como el tiempo total de atención o la tasa de resolución para la interacción completa, en lugar de solo para las partes individuales.
  • Contexto para los agentes: Proporciona a los agentes humanos el historial completo de las interacciones automatizadas anteriores.

Proceso de correlación

Cuando las reglas de correlación coinciden con varios segmentos de conversación, CX Insights los agrupa. Luego, CX Insights crea una entrada nueva para representar la conversación completa con su propio ID de conversación único. CX Insights establece el ID de correlación de una conversación completa en la clave común que vincula los segmentos y su tipo en FULL. CX Insights establece los IDs de correlación de los segmentos originales en la clave común y sus tipos en SEGMENT. Si un segmento no se correlaciona con ningún otro, CX Insights le asigna los tipos de correlación SEGMENT y FULL.

Las reglas de correlación vinculan segmentos de conversaciones relacionados de diferentes fuentes y canales. CX Insights sigue estos pasos para vincular segmentos de conversación:

  1. Agrupar por clave de unión: CX Insights evalúa una expresión de clave de unión de CEL para extraer un identificador común de la conversación, como callId. Las conversaciones que comparten la misma clave de unión son candidatas potenciales para la vinculación. Las claves de unión deben ser específicas. Si una clave coincide con más de 20 conversaciones, es posible que se rechace la correlación para evitar problemas de rendimiento.
  2. Refine with constraints: La expresión de restricción CEL es una verificación booleana opcional que se evalúa por pares entre los candidatos. Esta expresión ayuda a confirmar si dos segmentos que comparten una clave realmente deberían estar vinculados. Esta verificación es bidireccional, por lo que podría incluir el segmento A vinculado al segmento B y el segmento B vinculado al segmento A.
  3. Vínculo transitivo: La vinculación es transitiva. Si la conversación A está vinculada a B, y B está vinculada a C, entonces A, B y C se combinan en un solo grupo de conversaciones FULL.

Una conversación combinada puede contener un máximo de cinco segmentos.

Configura reglas de correlación

Puedes configurar reglas de correlación con la API o la consola de CX Insights.

API

  1. Ejecuta el siguiente código para configurar 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. Asigna un nombre a tu regla con el siguiente formato: projects/{project-id}/locations/{location-id}/correlationConfig.
  3. Consulta el resultado en el campo Conversation.CorrelationInfo.

Puedes usar cualquiera de las siguientes operaciones con reglas de correlación.

  • 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. Cuerpo de la solicitud de muestra, si se guarda en un updated_corr_config.json:
    {
    "fullConversationConfig": {
    "correlationRules": [
      {
        "joinKeyExpression": "conversation.labels.uui",
        "active": true
      }
    ]
    }
    }
  • TestCorrelationConfig. Tu carga útil debe especificar los detalles de la conversación de muestra, además de la regla de correlación que se probará. Ejemplo:
    {
    "correlationConfig": {
    "fullConversationConfig": {
      "correlationRules": [
       {
          "joinKeyExpression": "conversation.agent_id",
         "active": true
        }
      ]
    }
    },
    "filter": "agent_id="agent_007"",
    "maxSampleCount": 100
    }

Console

  1. Navega a la consola de CX Insights, accede y selecciona tu proyecto. Consola de CX Insights
  2. Haz clic en settingsConfiguración > Configuración de correlación.
  3. Haz clic en Guardar.

Los administradores pueden definir y administrar las entradas de CorrelationRule dentro de CorrelationConfig. Puedes probar tus reglas de correlación seleccionando conversaciones. Los resultados de las pruebas se agregan a un conjunto de datos para su revisión.

Ejemplo de CEL

Vínculo por callId desde 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)

Funciones de utilidad de CEL

CX Insights proporciona varias funciones de utilidad que puedes usar en expresiones de CEL para evaluar conversaciones.

Firma de la función Descripción
get_label(string key) Devuelve el valor de cadena de la etiqueta asociada al key determinado de la conversación actual.
exists_call_back_conversation(
  string filter)
Devuelve true si existe una conversación de "devolución de llamada" que coincide con el filter proporcionado. Busca conversaciones con el mismo ID de usuario (ID de usuario ofuscado o etiqueta de ID de usuario predefinida) dentro de un período futuro predeterminado (24 horas). El filter proporcionado se agrega a este criterio.
has_same_caller_conversation_in_n_hours(
  int hours)


has_same_caller_conversation_in_n_hours(
  int hours, string filter)
Devuelve true si hay conversaciones del mismo llamador o usuario dentro de la cantidad especificada de hours (positiva para el futuro y negativa para el pasado). Se puede proporcionar un filter opcional para restringir aún más la búsqueda.
get_same_caller_conversations_in_n_hours(
  int hours)


get_same_caller_conversations_in_n_hours(
  int hours, string filter)
Devuelve una lista de conversaciones del mismo usuario o llamador dentro de la cantidad especificada de hours. Se puede proporcionar un filter opcional.
get_session_params(string key) Recupera el valor de cadena de un parámetro de sesión (de Dialogflow o CES) asociado con el key determinado. Realiza búsquedas en las anotaciones de tiempo de ejecución y las anotaciones de turnos de CES en orden cronológico inverso. Devuelve una cadena vacía si no se encuentra.
get_last_subagent()

get_last_subagent(list excludes)
Devuelve el nombre visible del último subagente que participó en la conversación. De forma opcional, puede excluir a los subagentes que se indican en la lista excludes (que suele incluir al subagente que se encarga específicamente de la derivación), a menos que sea el único subagente.
get_last_subagent_id()

get_last_subagent_id(list excludes)
Devuelve el ID del último subagente que participó en la conversación. De forma opcional, puede excluir a los subagentes que se enumeran en la lista excludes (que suele incluir al subagente que se encarga específicamente de la derivación), a menos que sea el único subagente.
list.first_element_or_empty_string() Disponible en listas de cadenas. Devuelve el primer elemento de la lista si es una cadena; de lo contrario (o si está vacía), devuelve una cadena vacía.

Análisis a nivel de segmento y conversación

Con CX Insights, puedes analizar conversaciones con diferentes niveles de detalle, incluido el análisis por segmento y por conversación para todas las funciones. Las páginas Conversation Hub y Quality AI de la consola comparan los datos a nivel de la conversación y del segmento, lo que indica la estructura de varios segmentos de las conversaciones vinculadas.

Para segmentar niveles de análisis específicos, usa los siguientes filtros con una regla de análisis.

Vista a nivel del segmento

El objetivo de esta vista es analizar partes específicas de una interacción, como el turno de un solo agente. Usa el parámetro correlation_info.correlation_types:SEGMENT para filtrar la vista a nivel del segmento.

Vista de conversación completa

Utiliza esta vista para analizar el recorrido del cliente completo, ya sea que consista en conversaciones vinculadas o independientes. Usa el parámetro correlation_info.correlation_types:FULL para filtrar la vista de conversación completa.