カスタマー エクスペリエンス インサイトには、会話処理を強化する 2 つのルールベースの機能が導入されています。
- 自動ラベル付けルール: 定義された条件に基づいて、会話に Key-Value ラベルを自動的に適用します。
- 相関ルール: 関連する会話セグメントをリンクして、完全な顧客インタラクション ビューを形成する方法を定義します。
どちらのルールタイプも、Common Expression Language(CEL)を使用して、柔軟で動的なルール定義を提供します。CEL は、自動ラベル付けルールと関連付けルールの両方にとって不可欠です。これらのルールは、API または CX Insights コンソールで構成できます。
自動ラベル付けルール
自動ラベル付けルールでは、インポート時にカスタムの Key-Value ラベルを含む会話のみが自動的に拡充されます。これらのラベルにより、フィルタリング、分類、他の分析やワークフローとの統合が改善されます。自動ラベル付けルールでは、次の操作を行うことができます。
- 会話をトピック、顧客タイプ、プロダクト、結果で分類します。
- 会話のメタデータまたは Dialogflow パラメータ(
callId、isAuthenticated、intentの名前など)から主要なデータポイントを抽出し、ラベルに変換します。 high_escalation_riskなど、特別な注意が必要な会話にフラグを設定します。
ラベル
各自動ラベル付けルールはラベルを定義し、順序付けされた条件メッセージを含んでいます。各ラベルは次の CEL 式を使用します。
- 条件: 会話が true か false かを評価します。空の条件はデフォルトで true になります。
- 値: 条件が true の場合、ラベルの文字列値を生成します。
最初に一致した LabelingCondition によって、ラベルの値が決まります。
デフォルト ルール
CX Insights では、次のラベルにデフォルトのルールが自動的に適用されます。
sessionEscalated
このラベルは、Dialogflow とデフォルトのエスカレーション シグナルを組み合わせて、会話をエスカレーションしたのがエンドユーザーかエージェントかを識別します。このラベルの値は、構成可能なダッシュボードのエスカレーション率指標に反映されます。カスタム エスカレーション ツール呼び出しを使用する場合は、このラベルを上書きする独自のルールを構成できます。
sessionContained
このラベルは、エスカレーションが発生しなかった場合を示します。値が true の場合、Quality AI の会話結果をエスカレーションすることはできません。このラベルを上書きする独自のルールを構成できます。
isRepeatedCallerConversation
このラベルは、ユーザーが 24 時間以内にコールバックする頻度を計算します。また、userIdentifier ラベルを使用して、コールバックが同じユーザーからのものかどうかを判断します。このラベルを上書きする独自のルールを構成できます。
userIdentifier
このラベルは、同じユーザーが指定された時間内にコールバックするかどうかを判断します。これを行うために、Dialogflow と Customer Experience Agent Studio の session_params、または Agent Assist の CreateParticipant リクエストのいずれかの obfuscated_external_user_id 変数を使用します。ユーザーの識別に異なるセッション パラメータ変数を使用する場合は、get_session_params() を使用してこのラベルを上書きする必要があります。
lastTransferSubAgentNames
このラベルは、会話がエスカレーションされる前の最終的な Customer Experience Agent Studio サブエージェントの名前を示します。デフォルト値は get_last_subagent([entry_subagent]) を使用します。これは、指定されたサブエージェントがエスカレーションを処理することを前提としています。特定のエスカレーション エージェントがいる場合は、独自のルールを構成して、デフォルト値を get_last_subagent([escalation_agent_name]) で上書きする必要があります。
ルールの設定
API または CX Insights コンソールを使用して、独自の自動ラベル付けルールを構成することもできます。
API
Createオペレーションを使用してAutoLabelingRuleを構成します。リクエストの本文の例:{ "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 }リクエストが
auto_labeling_rule.jsonに保存されている場合の curl コマンド: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"ルールに
projects/[project-id]/locations/[location-id]/autoLabelingRules/[auto_labeling_rule]の形式で名前を付けます。[auto_labeling_rule]ID は、カスタムルールのlabel_keyです。
自動ラベル付けルールでは、次のオペレーションも使用できます。自動ラベル付けルールでは、会話ごとに最大 100 個のラベルを適用でき、エントリごとに最大 256 文字まで入力できます。
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。更新するフィールドに応じて、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。 ペイロードには、テストするルールと、ルールが評価されるサンプル会話を含める必要があります。例:{ "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 } }
コンソール
- CX Insights コンソールに移動してログインし、プロジェクトを選択します。CX Insights コンソール
- 設定設定 > [自動ラベル付けルール] をクリックします。
- Monaco エディタで CEL 式を入力します。
- [保存] をクリックします。
CEL の例
- エージェント 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'" } - 否定的なセンチメントを報告します。
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 パラメータを抽出します。
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()" }
分析ルールフィルタで自動ラベルを使用する
自動ラベル付けルールでは、メインの分析ルールで処理する会話を制御するラベルを適用できます。分析ルールの conversation_filter フィールドは、ラベルマップを使用してラベルを参照できます。
例:
// 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
相関ルール
相関ルールは、カスタマー エクスペリエンス インサイトが関連する会話セグメントを特定してリンクする方法を定義します。会話セグメントは、取り込まれた会話の 1 つの部分(Dialogflow セッションや単一のエージェント インタラクションなど)を表します。完全な会話は、1 つ以上のセグメントで構成される完全なリンクされた会話を表します。デフォルトでは、新しい会話はすべてセグメントとして開始されます。相関ルールを使用すると、複数のエージェント、チャネル、セッションにまたがる場合でも、顧客のインタラクションの完全な履歴を作成できます。
相関ルールは、カスタマー サービスの会話分析に次のメリットをもたらします。
- 統合された文字起こし: チャットボット セッションの後にライブ エージェントによる通話が行われた場合など、複数のソースからの発言を組み合わせた 1 つの時系列の文字起こしを表示します。
- クロスチャネル分析: チャットや音声など、さまざまなチャネルでのやり取りをリンクして、会話の全過程における感情の傾向やトピックの進行状況を分析します。
- 指標の精度: 個々の部分だけでなく、インタラクション全体について、発送準備時間や解決率などの指標を計算します。
- エージェントのコンテキスト: 以前の自動化されたやり取りの完全な履歴を人間のエージェントに提供します。
関連付けプロセス
相関ルールが複数の会話セグメントに一致すると、CX Insights はそれらをグループ化します。CX Insights は、独自の会話 ID を持つ会話全体を表す新しいエントリを作成します。CX Insights は、会話全体の相関 ID をセグメントをリンクする共通キーに設定し、そのタイプを FULL に設定します。CX Insights は、元のセグメントの相関 ID を共通キーに設定し、そのタイプを SEGMENT に設定します。セグメントが他のセグメントと相関していない場合、CX Insights はそのセグメントに SEGMENT と FULL の両方の相関タイプを付与します。
メッセージをリンクする
相関ルールは、さまざまなソースとチャネルの関連する会話セグメントをリンクします。CX Insights は、次の手順で会話セグメントをリンクします。
- 結合キーでグループ化: CX Insights は CEL 結合キー式を評価して、会話から共通の識別子(
callIdなど)を抽出します。同じ結合キーを共有する会話は、リンクの候補となります。結合キーは具体的である必要があります。キーが 20 件を超える会話と一致する場合、パフォーマンスの問題を防ぐために相関関係が拒否されることがあります。 - 制約で絞り込む: CEL 制約式は、候補間でペアごとに評価されるオプションのブール値チェックです。この式は、キーを共有する 2 つのセグメントを実際にリンクする必要があるかどうかを確認するのに役立ちます。このチェックは双方向であるため、セグメント A がセグメント B にリンクされ、セグメント B がセグメント A にリンクされている場合も含まれます。
- 推移的リンク: リンクは推移的です。会話 A が B にリンクされ、B が C にリンクされている場合、A、B、C は 1 つの
FULL会話グループに統合されます。
統合された会話には、最大 5 つのセグメントを含めることができます。
相関ルールを構成する
相関ルールは、API または CX Insights コンソールを使用して構成できます。
API
- 次のコードを実行して
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" - ルールに
projects/{project-id}/locations/{location-id}/correlationConfigの形式で名前を付けます。 - 結果は
Conversation.CorrelationInfoフィールドに表示されます。
相関ルールでは、次のいずれかのオペレーションを使用できます。
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。updated_corr_config.jsonに保存されている場合のリクエスト本文の例:{ "fullConversationConfig": { "correlationRules": [ { "joinKeyExpression": "conversation.labels.uui", "active": true } ] } }TestCorrelationConfig。ペイロードでは、テストする相関ルールに加えて、サンプル会話の詳細を指定する必要があります。例:{ "correlationConfig": { "fullConversationConfig": { "correlationRules": [ { "joinKeyExpression": "conversation.agent_id", "active": true } ] } }, "filter": "agent_id="agent_007"", "maxSampleCount": 100 }
コンソール
- CX Insights コンソールに移動してログインし、プロジェクトを選択します。CX Insights コンソール
- [設定][設定] > [相関構成] をクリックします。
- [保存] をクリックします。
管理者は、CorrelationConfig 内で CorrelationRule エントリを定義して管理できます。会話を選択して、相関ルールをテストできます。テスト結果がデータセットに追加され、審査されます。
CEL の例
Dialogflow から callId でリンクする:
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 ユーティリティ関数
CX Insights には、CEL 式で使用して会話を評価できるユーティリティ関数がいくつか用意されています。
| 関数の署名 | 説明 |
|---|---|
get_label(string key) |
現在の会話から、指定された key に関連付けられたラベルの文字列値を返します。 |
exists_call_back_conversation( |
指定された filter と一致する「コールバック」会話が存在する場合、true を返します。デフォルトの未来ウィンドウ(24 時間)内で、同じユーザー ID(難読化されたユーザー ID または事前定義されたユーザー ID ラベル)を持つ会話を検索します。指定された filter がこの条件に追加されます。 |
has_same_caller_conversation_in_n_hours(has_same_caller_conversation_in_n_hours( |
指定された hours(将来の場合は正、過去の場合は負)の範囲内に同じ発信者/ユーザーからの会話がある場合は、true を返します。オプションの filter を指定して、検索をさらに制限できます。 |
get_same_caller_conversations_in_n_hours(get_same_caller_conversations_in_n_hours( |
指定された hours 内の同じ発信者/ユーザーからの会話のリストを返します。必要に応じて filter を指定できます。 |
get_session_params(string key) |
指定された key に関連付けられたセッション パラメータ(Dialogflow または CES から)の文字列値を取得します。実行時のアノテーションと CES ターン アノテーションを日付の新しい順に検索します。見つからない場合は空の文字列を返します。 |
get_last_subagent()get_last_subagent(list excludes) |
会話に関与した最後のサブエージェントの表示名を返します。excludes リストに記載されているサブエージェント(通常、エスカレーションを専門的に処理するサブエージェントを含む)を、唯一のサブエージェントである場合を除き、必要に応じて除外できます。 |
get_last_subagent_id()get_last_subagent_id(list excludes) |
会話に関与した最後のサブエージェントの ID を返します。excludes リストに記載されているサブエージェント(通常、エスカレーションを専門的に処理するサブエージェントを含む)を、唯一のサブエージェントである場合を除き、必要に応じて除外できます。 |
list.first_element_or_empty_string() |
文字列のリストで使用できます。リストの最初の要素が文字列の場合はその要素を返し、それ以外の場合(またはリストが空の場合)は空の文字列を返します。 |
セグメントと会話レベルの分析
CX Insights では、すべての機能についてセグメント単位と会話単位の両方の分析など、さまざまな粒度で会話を分析できます。コンソールの [会話ハブ] ページと [品質 AI] ページでは、会話レベルとセグメント レベルのデータが比較され、リンクされた会話のマルチセグメント構造が示されます。
特定の分析レベルを対象にするには、分析ルールで次のフィルタを使用します。
セグメント レベルのビュー
このビューの目的は、1 人のエージェントのターンなど、インタラクションの特定の部分を分析することです。correlation_info.correlation_types:SEGMENT パラメータを使用して、セグメント レベルのビューをフィルタします。
スレッド表示
このビューを使用すると、リンクされた会話とスタンドアロンの会話のどちらで構成されているかに関係なく、カスタマー ジャーニー全体を分析できます。correlation_info.correlation_types:FULL パラメータを使用して、スレッド表示をフィルタします。