Customer Experience Insights には、会話処理を強化するためのルールベースの機能が 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 によって、ラベルの値が決まります。
ルールの設定
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 インサイト コンソールに移動してログインし、プロジェクトを選択します。 CX インサイト コンソール
- 設定設定アイコン > [自動ラベル付けルール] をクリックします。
- 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
相関ルール
相関関係ルールは、Customer Experience Insights が関連する会話セグメントを特定してリンクする方法を定義します。会話セグメントは、取り込まれた会話の 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 インサイト コンソールに移動してログインし、プロジェクトを選択します。 CX インサイト コンソール
- 設定設定 > [相関構成] をクリックします。
- [保存] をクリックします。
管理者は、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 インサイトには、会話を評価するために 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 パラメータを使用して、会話全体のビューをフィルタします。