Regeln für automatisches Labeling und Korrelation

Mit Customer Experience Insights werden zwei regelbasierte Funktionen eingeführt, um die Verarbeitung von Konversationen zu optimieren:

  • Regeln für automatisches Labeling:Schlüssel-Wert-Labels werden basierend auf definierten Bedingungen automatisch auf Unterhaltungen angewendet.
  • Korrelationsregeln:Hier legen Sie fest, wie zusammengehörige Gesprächssegmente verknüpft werden, um vollständige Ansichten der Kundeninteraktion zu erstellen.

Für beide Regeltypen wird die Common Expression Language (CEL) verwendet, um flexible und dynamische Regeldefinitionen zu ermöglichen. CEL ist sowohl für die automatische Kennzeichnung als auch für Korrelationsregeln von grundlegender Bedeutung. Sie können diese Regeln mit der API oder der CX Insights-Konsole konfigurieren.

Regeln für automatisches Labeling

Mit Regeln für das automatische Labeling werden beim Import nur Unterhaltungen mit benutzerdefinierten Schlüssel/Wert-Labels angereichert. Diese Labels verbessern die Filterung, Kategorisierung und Integration mit anderen Analysen und Workflows. Sie können mit Regeln für die automatische Kennzeichnung folgende Aktionen ausführen:

  • Unterhaltungen nach Thema, Kundentyp, Produkt oder Ergebnis kategorisieren.
  • Extrahieren Sie wichtige Datenpunkte aus Konversationsmetadaten oder Dialogflow-Parametern wie callId-, isAuthenticated- und intent-Namen in Labels.
  • Unterhaltungen, die besondere Aufmerksamkeit erfordern, z. B. high_escalation_risk, können Sie kennzeichnen.

Labels

Jede Regel für das automatische Labeling definiert ein Label und enthält geordnete Bedingungsnachrichten. Für jedes Label werden die folgenden CEL-Ausdrücke verwendet:

  • Bedingung: Hier wird ausgewertet, ob eine Konversation wahr oder falsch ist. Eine leere Bedingung wird standardmäßig als „true“ betrachtet.
  • Wert: Gibt den Stringwert für ein Label zurück, wenn die Bedingung zutrifft.

Der Wert des Labels wird durch das erste übereinstimmende LabelingCondition bestimmt.

Standardregeln

In CX Insights werden automatisch Standardregeln für die folgenden Labels angewendet.

sessionEscalated

Dieses Label kombiniert Dialogflow- und Standard-Eskalierungssignale, um festzustellen, ob der Endnutzer oder der Kundenservicemitarbeiter die Unterhaltung eskaliert hat. Der Wert dieses Labels wird für den Messwert „Escalation Rate“ in einem konfigurierbaren Dashboard verwendet. Sie können eine eigene Regel konfigurieren, um dieses Label zu überschreiben, wenn Sie einen benutzerdefinierten Eskalierungstool-Aufruf verwenden.

sessionContained

Dieses Label gibt an, dass keine Eskalierung erfolgt ist. Wenn der Wert true ist, kann das Ergebnis der Quality AI-Konversation nicht eskaliert werden. Sie können eine eigene Regel konfigurieren, um dieses Label zu überschreiben.

isRepeatedCallerConversation

Mit diesem Label wird berechnet, wie oft ein Nutzer innerhalb von 24 Stunden zurückruft. Dabei wird das Label userIdentifier verwendet, um festzustellen, ob ein Rückruf vom selben Nutzer stammt. Sie können eine eigene Regel konfigurieren, um dieses Label zu überschreiben.

userIdentifier

Dieses Label gibt an, ob derselbe Nutzer innerhalb einer bestimmten Anzahl von Stunden zurückruft. Dazu wird die Variable obfuscated_external_user_id entweder aus session_params in Dialogflow und Customer Experience Agent Studio oder aus der CreateParticipant-Anfrage in Agent Assist verwendet. Wenn Sie unterschiedliche Sitzungsparametervariablen für die Nutzeridentifizierung verwenden, müssen Sie dieses Label mit get_session_params() überschreiben.\

lastTransferSubAgentNames

Dieses Label enthält den Namen des endgültigen untergeordneten KI-Agenten von Customer Experience Agent Studio, bevor ein Nutzer eine Unterhaltung eskaliert. Der Standardwert verwendet get_last_subagent([entry_subagent]). Es wird davon ausgegangen, dass der benannte untergeordnete Kundenservicemitarbeiter die Eskalierung übernimmt. Wenn Sie einen bestimmten Eskalierungs-Kundenservicemitarbeiter haben, müssen Sie eine eigene Regel konfigurieren, um den Standardwert mit get_last_subagent([escalation_agent_name]) zu überschreiben.

Regeln konfigurieren

Sie können auch eigene Regeln für die automatische Kennzeichnung mit der API oder der CX Insights-Konsole konfigurieren.

API

  1. Verwenden Sie den Vorgang Create, um eine AutoLabelingRule zu konfigurieren. Beispiel für einen Anfragetext:

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

    Curl-Befehl, wenn die Anfrage in auto_labeling_rule.json gespeichert ist:

      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. Geben Sie Ihrer Regel einen Namen im folgenden Format: projects/[project-id]/locations/[location-id]/autoLabelingRules/[auto_labeling_rule]. Die [auto_labeling_rule]-ID ist die label_key für benutzerdefinierte Regeln.

Sie können auch die folgenden Vorgänge mit Regeln für die automatische Kennzeichnung verwenden. Eine automatische Labeling-Regel kann maximal 100 Labels pro Unterhaltung mit maximal 256 Zeichen pro Eintrag enthalten.

  • 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. Geben Sie je nach den zu aktualisierenden Feldern die update_mask an.
    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. Ihre Nutzlast sollte die zu testende Regel und eine Beispielunterhaltung enthalten, anhand derer die Regel bewertet wird. Beispiel:
    {
    "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. Rufen Sie die CX Insights-Konsole auf, melden Sie sich an und wählen Sie Ihr Projekt aus. CX Insights-Konsole
  2. Klicken Sie auf die EinstellungenEinstellungen > Regeln für die automatische Kennzeichnung.
  3. Geben Sie CEL-Ausdrücke mit einem Monaco-Editor ein.
  4. Klicken Sie auf Speichern.

CEL-Beispiele

  • Label nach KI-Agent-ID:
    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'"
    }
  • Negative Stimmung kennzeichnen:
    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'"
    }
  • Dialogflow-Parameter extrahieren:
    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()"
    }

Automatische Labels in Filtern für Analyseregeln verwenden

Mit Regeln für die automatische Kennzeichnung können Labels angewendet werden, mit denen gesteuert wird, welche Unterhaltungen von den Hauptanalyseregeln verarbeitet werden. Im Feld conversation_filter einer Analyseregel kann mit der Labelzuordnung auf Labels verwiesen werden.

Beispiel:

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

Korrelationsregeln

Mit Korrelationsregeln wird definiert, wie Customer Experience Insights zusammengehörige Gesprächssegmente identifiziert und verknüpft. Ein Unterhaltungssegment stellt einen einzelnen Teil einer Unterhaltung dar, wie er aufgenommen wurde, z. B. eine Dialogflow-Sitzung oder eine einzelne Agent-Interaktion. Eine vollständige Unterhaltung ist eine vollständige, verknüpfte Unterhaltung, die aus einem oder mehreren Segmenten besteht. Standardmäßig werden alle neuen Unterhaltungen als Segmente gestartet. Mithilfe von Korrelationsregeln können Sie einen vollständigen Verlauf der Kundeninteraktion erstellen, auch wenn diese mehrere Kundenservicemitarbeiter, Kanäle oder Sitzungen umfasst.

Korrelationsregeln bieten die folgenden Vorteile für die Analyse von Kundenservice-Unterhaltungen.

  • Einheitliches Transkript:Sie können ein einzelnes, chronologisches Transkript aufrufen, in dem Äußerungen aus mehreren Quellen kombiniert werden, z. B. aus einer Chatbot-Sitzung und einem anschließenden Anruf bei einem Kundenservicemitarbeiter.
  • Channelübergreifende Analyse:Verknüpfen Sie Interaktionen über verschiedene Kanäle wie Chat und Sprache hinweg, um Sentiment-Trends und die Entwicklung von Themen während eines gesamten Gesprächs zu analysieren.
  • Messwertgenauigkeit:Berechnen Sie Messwerte wie die gesamte Bearbeitungszeit oder die Lösungsrate für die gesamte Interaktion und nicht nur für einzelne Teile.
  • Kontext für Kundenservicemitarbeiter:Kundenservicemitarbeitern wird der vollständige Verlauf der bisherigen automatisierten Interaktionen zur Verfügung gestellt.

Korrelationsprozess

Wenn Korrelationsregeln mit mehreren Konversationssegmenten übereinstimmen, werden sie in CX Insights gruppiert. CX Insights erstellt dann einen neuen Eintrag für die gesamte Unterhaltung mit einer eigenen eindeutigen Unterhaltungs-ID. In CX Insights wird die Korrelations-ID einer vollständigen Unterhaltung auf den gemeinsamen Schlüssel gesetzt, der die Segmente verknüpft, und der Typ auf FULL. In CX Insights wird die Korrelations-ID der ursprünglichen Segmente auf den gemeinsamen Schlüssel und ihr Typ auf SEGMENT festgelegt. Wenn ein Segment mit keinem anderen Segment korreliert ist, werden ihm in CX Insights sowohl der Korrelationstyp SEGMENT als auch FULL zugewiesen.

Mit Korrelationsregeln werden zusammengehörige Gesprächssegmente aus verschiedenen Quellen und Kanälen verknüpft. So verknüpft CX Insights Konversationssegmente:

  1. Nach Join-Schlüssel gruppieren:CX Insights wertet einen CEL-Join-Schlüssel-Ausdruck aus, um einen gemeinsamen Identifier aus der Unterhaltung zu extrahieren, z. B. callId. Unterhaltungen mit demselben Join-Schlüssel sind potenzielle Kandidaten für die Verknüpfung. Join-Schlüssel müssen spezifisch sein. Wenn ein Schlüssel mit mehr als 20 Unterhaltungen übereinstimmt, wird die Korrelation möglicherweise abgelehnt, um Leistungsprobleme zu vermeiden.
  2. Mit Einschränkungen verfeinern:Der CEL-Einschränkungsausdruck ist eine optionale boolesche Prüfung, die paarweise zwischen Kandidaten ausgewertet wird. Mit diesem Ausdruck lässt sich bestätigen, ob zwei Segmente mit einem gemeinsamen Schlüssel tatsächlich verknüpft werden sollten. Diese Prüfung ist bidirektional. Sie kann also Segment A, das mit Segment B verknüpft ist, und Segment B, das mit Segment A verknüpft ist, umfassen.
  3. Transitive Verknüpfung:Die Verknüpfung ist transitiv. Wenn Unterhaltung A mit B und B mit C verknüpft ist, werden A, B und C in einer einzigen FULL-Unterhaltungsgruppe zusammengeführt.

Eine zusammengeführte Unterhaltung kann maximal fünf Segmente enthalten.

Korrelationsregeln konfigurieren

Sie können Korrelationsregeln entweder über die API oder die CX Insights-Konsole konfigurieren.

API

  1. Führen Sie den folgenden Code aus, um eine CorrelationConfig einzurichten.
    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. Geben Sie der Regel einen Namen im folgenden Format: projects/{project-id}/locations/{location-id}/correlationConfig.
  3. Sehen Sie sich das Ergebnis im Feld Conversation.CorrelationInfo an.

Sie können die folgenden Vorgänge mit Korrelationsregeln verwenden.

  • 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. Beispiel für einen Anfragetext, wenn er in einer updated_corr_config.json gespeichert ist:
    {
    "fullConversationConfig": {
    "correlationRules": [
      {
        "joinKeyExpression": "conversation.labels.uui",
        "active": true
      }
    ]
    }
    }
  • TestCorrelationConfig. Ihre Nutzlast sollte neben der zu testenden Korrelationsregel auch die Details der Beispielunterhaltung enthalten. Beispiel:
    {
    "correlationConfig": {
    "fullConversationConfig": {
      "correlationRules": [
       {
          "joinKeyExpression": "conversation.agent_id",
         "active": true
        }
      ]
    }
    },
    "filter": "agent_id="agent_007"",
    "maxSampleCount": 100
    }

Console

  1. Rufen Sie die CX Insights-Konsole auf, melden Sie sich an und wählen Sie Ihr Projekt aus. CX Insights-Konsole
  2. Klicken Sie auf die EinstellungenEinstellungen > Correlation Config (Konfiguration für die Korrelation).
  3. Klicken Sie auf Speichern.

Administratoren können CorrelationRule-Einträge in der CorrelationConfig definieren und verwalten. Sie können Ihre Korrelationsregeln testen, indem Sie Unterhaltungen auswählen. Die Testergebnisse werden einem Dataset zur Überprüfung hinzugefügt.

CEL-Beispiel

Link von callId aus 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)

CEL-Hilfsfunktionen

CX Insights bietet mehrere Hilfsfunktionen, die Sie in CEL-Ausdrücken verwenden können, um Unterhaltungen auszuwerten.

Funktionssignatur Beschreibung
get_label(string key) Gibt den Stringwert des Labels zurück, das mit dem angegebenen key aus der aktuellen Unterhaltung verknüpft ist.
exists_call_back_conversation(
  string filter)
Gibt true zurück, wenn eine „Rückruf“-Unterhaltung vorhanden ist, die mit dem angegebenen filter übereinstimmt. Es wird nach Unterhaltungen mit derselben Nutzer-ID (verschleierte Nutzer-ID oder vordefiniertes Nutzer-ID-Label) innerhalb eines standardmäßigen zukünftigen Zeitraums (24 Stunden) gesucht. Der angegebene filter wird an dieses Kriterium angehängt.
has_same_caller_conversation_in_n_hours(
  int hours)


has_same_caller_conversation_in_n_hours(
  int hours, string filter)
Gibt true zurück, wenn es innerhalb der angegebenen Anzahl von hours (positiv für die Zukunft, negativ für die Vergangenheit) Unterhaltungen vom selben Anrufer/Nutzer gibt. Optional kann ein filter angegeben werden, um die Suche weiter einzuschränken.
get_same_caller_conversations_in_n_hours(
  int hours)


get_same_caller_conversations_in_n_hours(
  int hours, string filter)
Gibt eine Liste von Unterhaltungen vom selben Anrufer/Nutzer innerhalb der angegebenen Anzahl von hours zurück. Optional kann ein filter angegeben werden.
get_session_params(string key) Ruft den Stringwert eines Sitzungsparameters (aus Dialogflow oder CES) ab, der mit dem angegebenen key verknüpft ist. Es wird in umgekehrter chronologischer Reihenfolge nach Laufzeit- und CES-Turn-Anmerkungen gesucht. Gibt einen leeren String zurück, wenn nichts gefunden wird.
get_last_subagent()

get_last_subagent(list excludes)
Gibt den Anzeigenamen des letzten untergeordneten Agents zurück, der an der Unterhaltung beteiligt war. Untergeordnete Vertreter, die in der Liste excludes aufgeführt sind (in der Regel der untergeordnete Vertreter, der sich speziell um die Eskalierung kümmert), können optional ausgeschlossen werden, sofern es sich nicht um den einzigen untergeordneten Vertreter handelt.
get_last_subagent_id()

get_last_subagent_id(list excludes)
Gibt die ID des letzten untergeordneten Agents zurück, der an der Unterhaltung beteiligt war. Untergeordnete Vertreter, die in der Liste excludes aufgeführt sind (in der Regel der untergeordnete Vertreter, der sich speziell um die Eskalierung kümmert), können optional ausgeschlossen werden, sofern es sich nicht um den einzigen untergeordneten Vertreter handelt.
list.first_element_or_empty_string() Verfügbar für Listen von Strings. Gibt das erste Element der Liste zurück, wenn es ein String ist. Andernfalls (oder wenn die Liste leer ist) wird ein leerer String zurückgegeben.

Analyse auf Segment- und Konversationsebene

Mit CX Insights können Sie Unterhaltungen mit unterschiedlicher Granularität analysieren, einschließlich Segment- und Unterhaltungsanalysen für alle Funktionen. Auf den Seiten Conversation Hub und Quality AI in der Konsole werden Daten auf Unterhaltungs- und Segmentebene verglichen, um die Multisegmentstruktur verknüpfter Unterhaltungen zu verdeutlichen.

Wenn Sie bestimmte Analyseebenen anvisieren möchten, verwenden Sie die folgenden Filter mit einer Analyseregel.

Ansicht auf Segmentebene

Ziel dieser Ansicht ist es, bestimmte Teile einer Interaktion zu analysieren, z. B. den Zug eines einzelnen Kundenservicemitarbeiters. Mit dem Parameter correlation_info.correlation_types:SEGMENT können Sie die Ansicht auf Segmentebene filtern.

Vollständige Konversationsansicht

In dieser Ansicht können Sie den gesamten Kundenlebenszyklus analysieren, unabhängig davon, ob er aus verknüpften oder eigenständigen Unterhaltungen besteht. Mit dem Parameter correlation_info.correlation_types:FULL können Sie die vollständige Konversationsansicht filtern.