כדי לשפר את עיבוד השיחות, הוספנו ל-Customer Experience Insights שתי תכונות מבוססות-כללים:
- כללי תיוג אוטומטי: אפשר להחיל באופן אוטומטי תוויות של זוגות מפתח/ערך על שיחות על סמך תנאים מוגדרים.
- כללי קורלציה: הגדרה של אופן הקישור בין פלחי שיחה קשורים כדי ליצור תצוגות מלאות של אינטראקציות עם לקוחות.
שני סוגי הכללים משתמשים ב-Common Expression Language (CEL) כדי לספק הגדרות גמישות ודינמיות של כללים. שפת CEL היא הבסיס לכללים של תיוג אוטומטי ושל קורלציה. אפשר להגדיר את הכללים האלה באמצעות ה-API או מסוף CX Insights.
כללי תיוג אוטומטי
כללי תיוג אוטומטי מעשירים באופן אוטומטי את השיחות בתוויות מותאמות אישית של מפתח/ערך במהלך הייבוא. התוויות האלה משפרות את הסינון, הסיווג והשילוב עם ניתוחים ותהליכי עבודה אחרים. אפשר לבצע את הפעולות הבאות באמצעות כללים להוספת תוויות אוטומטית:
- סיווג שיחות לפי נושא, סוג לקוח, מוצר או תוצאה.
- לחלץ לתוויות נקודות נתונים מרכזיות ממטא-נתונים של שיחות או מפרמטרים של Dialogflow, כמו שמות של
callId,isAuthenticatedו-intent. - סימון שיחות שדורשות התייחסות ספציפית, כמו
high_escalation_risk.
תוויות
כל כלל של הוספת תוויות אוטומטית מגדיר תווית ומכיל הודעות תנאי מסודרות. כל תווית משתמשת בביטויי CEL הבאים:
- תנאי: הערכה של שיחה כ-True או כ-False. תנאי ריק מקבל כברירת מחדל את הערך True.
- Value: מחזירה את ערך המחרוזת של התווית אם התנאי מתקיים.
הערך של התווית נקבע לפי הערך הראשון של 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 }פקודת Curl, אם הבקשה נשמרה ב-
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"נותנים לכלל שם בפורמט הבא:
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. מטען הייעודי (payload) צריך לכלול את הכלל לבדיקה ושיחה לדוגמה שעל פיה הכלל יוערך. דוגמה:{ "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
- לוחצים על הגדרותהגדרות > כללים להוספת תוויות אוטומטית.
- מזינים ביטויי CEL באמצעות עורך Monaco.
- לוחצים על Save.
דוגמאות לשימוש ב-CEL
- הוספת תווית לפי מזהה הסוכן:
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 מזהה ומקשר בין פלחים קשורים בשיחה. קטע שיחה מייצג חלק אחד של שיחה, כפי שהוא נקלט, כמו סשן ב-Dialogflow או אינטראקציה אחת עם נציג. שיחה מלאה מייצגת שיחה שלמה ומקושרת שמורכבת מפלח אחד או יותר. כברירת מחדל, כל השיחות החדשות מתחילות כפלחים. כללי קורלציה עוזרים ליצור היסטוריה מלאה של אינטראקציה עם לקוח, גם אם היא מתפרסת על פני כמה נציגים, ערוצים או סשנים.
כללי קורלציה מספקים את היתרונות הבאים לניתוח שיחות עם שירות לקוחות.
- תמליל מאוחד: אפשר לראות תמליל אחד כרונולוגי שמשלב אמירות מכמה מקורות, כמו סשן צ'אטבוט שאחריו שיחה עם נציג שירות.
- ניתוח בין ערוצים: קישור אינטראקציות בערוצים שונים, כמו צ'אט וקול, כדי לנתח מגמות של סנטימנט והתקדמות של נושאים לאורך מסלול שלם של שיחה.
- דיוק המדדים: חשוב לחשב מדדים כמו זמן הטיפול הכולל או שיעור הפתרון של האינטראקציה המלאה, ולא רק של חלקים בודדים.
- הקשר לנציגים: מספקים לנציגים אנושיים את ההיסטוריה המלאה של האינטראקציות האוטומטיות הקודמות.
תהליך המתאם
אם כללי הקורלציה תואמים לכמה פלחים בשיחה, CX Insights מקבץ אותם יחד. לאחר מכן, המערכת של CX Insights יוצרת רשומה חדשה שמייצגת את השיחה המלאה עם מזהה שיחה ייחודי משלה. ב-CX Insights, מזהה המתאם של שיחה מלאה מוגדר כמפתח משותף שמקשר בין הפלחים, והסוג שלו מוגדר כ-FULL. ב-CX Insights, מזהי המתאם של הפלחים המקוריים מוגדרים כמפתח המשותף, והסוגים שלהם מוגדרים כ-SEGMENT. אם פלח לא קשור לפלחים אחרים, ב-CX Insights הוא מקבל את שני סוגי המתאם: SEGMENT ו-FULL.
קישור הודעות
כללי קורלציה מקשרים בין פלחי שיחה קשורים ממקורות ומערוצים שונים. כדי לקשר בין פלחי שיחה, CX Insights פועל לפי השלבים הבאים:
- קיבוץ לפי מפתח צירוף: CX Insights מעריך ביטוי של מפתח צירוף ב-CEL כדי לחלץ מזהה משותף מהשיחה, כמו
callId. שיחות שמשתמשות באותו מפתח הצטרפות הן מועמדות פוטנציאליות לקישור. מפתחות האיחוד צריכים להיות ספציפיים. אם מפתח תואם ליותר מ-20 שיחות, יכול להיות שהמתאם יידחה כדי למנוע בעיות בביצועים. - שיפור באמצעות אילוצים: ביטוי האילוץ של CEL הוא בדיקה בוליאנית אופציונלית שמוערכת בזוגות בין מועמדים. הביטוי הזה עוזר לוודא שצריך לקשר בין שני פלחים שמשתפים מפתח. הבדיקה הזו היא דו-כיוונית, ולכן היא יכולה לכלול את פלח A שמקושר לפלח B ואת פלח B שמקושר לפלח A.
- קישור טרנזיטיבי: הקישור הוא טרנזיטיבי. אם שיחה א' מקושרת לשיחה ב', ושיחה ב' מקושרת לשיחה ג', אז שיחות א', ב' ו-ג' ימוזגו לקבוצת שיחה אחת
FULL.
שיחה שמוזגה יכולה להכיל עד חמישה פלחים.
הגדרת כללי קורלציה
אפשר להגדיר כללי קורלציה באמצעות ה-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. במטען הייעודי (payload) צריך לציין את פרטי שיחת הדוגמה בנוסף לכלל המתאם שרוצים לבדוק. דוגמה:{ "correlationConfig": { "fullConversationConfig": { "correlationRules": [ { "joinKeyExpression": "conversation.agent_id", "active": true } ] } }, "filter": "agent_id="agent_007"", "maxSampleCount": 100 }
המסוף
- מנווטים אל מסוף CX Insights, נכנסים לחשבון ובוחרים את הפרויקט. מסוף CX Insights
- לוחצים על הגדרותהגדרות > הגדרת קורלציה.
- לוחצים על Save.
אדמינים יכולים להגדיר ולנהל רשומות של CorrelationRule בתוך CorrelationConfig. אתם יכולים לבדוק את כללי המתאם על ידי בחירת שיחות. תוצאות הבדיקה מתווספות למערך נתונים לבדיקה.
דוגמה ל-CEL
קישור על ידי callId מ-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
ב-CX Insights יש כמה פונקציות שימושיות שאפשר להשתמש בהן בביטויי CEL כדי להעריך שיחות.
| חתימת פונקציה | תיאור |
|---|---|
get_label(string key) |
הפונקציה מחזירה את ערך המחרוזת של התווית שמשויכת ל-key הנתון מהשיחה הנוכחית. |
exists_call_back_conversation( |
הפונקציה מחזירה את הערך true אם קיימת שיחה מסוג 'חזרה לשיחה' שתואמת לערך filter שצוין. החיפוש מתבצע בשיחות עם אותו מזהה משתמש (מזהה משתמש שעבר ערפול או תווית מוגדרת מראש של מזהה משתמש) בחלון זמן עתידי שמוגדר כברירת מחדל (24 שעות). הערך filter שצוין מצורף לקריטריון הזה. |
has_same_caller_conversation_in_n_hours(has_same_caller_conversation_in_n_hours( |
הפונקציה מחזירה true אם יש שיחות מאותו מתקשר או משתמש בטווח של hours (חיובי לעתיד, שלילי לעבר). אפשר לספק filter אופציונלי כדי להגביל עוד יותר את החיפוש. |
get_same_caller_conversations_in_n_hours(get_same_caller_conversations_in_n_hours( |
הפונקציה מחזירה רשימה של שיחות מאותו מתקשר או משתמש, במסגרת מספר הימים שצוין hours. אפשר לספק filter אופציונלי. |
get_session_params(string key) |
הפונקציה מאחזרת את ערך המחרוזת של פרמטר של סשן (מ-Dialogflow או מ-CES) שמשויך ל-key הנתון. החיפוש מתבצע בהערות בזמן ריצה ובהערות של תפניות ב-CES בסדר כרונולוגי הפוך. אם לא נמצאה התאמה, הפונקציה מחזירה מחרוזת ריקה. |
get_last_subagent()get_last_subagent(list excludes) |
הפונקציה מחזירה את השם המוצג של הנציג המשני האחרון שהיה מעורב בשיחה. אפשר להחריג סוכני משנה שמופיעים ברשימה excludes (שכוללת בדרך כלל את סוכן המשנה שמטפל בהעלאת רמת הטיפול), אלא אם זה סוכן המשנה היחיד. |
get_last_subagent_id()get_last_subagent_id(list excludes) |
הפונקציה מחזירה את המזהה של הסוכן המשני האחרון שהיה מעורב בשיחה. אפשר להחריג סוכני משנה שמופיעים ברשימה excludes (שכוללת בדרך כלל את סוכן המשנה שמטפל בהעלאת רמת הטיפול), אלא אם זה סוכן המשנה היחיד. |
list.first_element_or_empty_string() |
אפשר להשתמש בהן ברשימות של מחרוזות. הפונקציה מחזירה את הרכיב הראשון ברשימה אם הוא מחרוזת. אחרת (או אם הרשימה ריקה), היא מחזירה מחרוזת ריקה. |
ניתוח ברמת הפלח והשיחה
בעזרת CX Insights, אתם יכולים לנתח שיחות ברמות גרנולריות שונות, כולל ניתוח לפי פלח וניתוח לפי שיחה לכל התכונות. בדפים Conversation Hub ו-Quality AI במסוף מוצגת השוואה בין נתונים ברמת השיחה והפלח, שמצביעה על מבנה רב-פלחים של שיחות מקושרות.
כדי לטרגט רמות ספציפיות של ניתוח, משתמשים במסננים הבאים עם כלל ניתוח.
תצוגה ברמת הפלח
המטרה של התצוגה הזו היא לנתח חלקים ספציפיים באינטראקציה, כמו תור של סוכן יחיד. אפשר להשתמש בפרמטר correlation_info.correlation_types:SEGMENT כדי לסנן את התצוגה ברמת הפלח.
תצוגת שיחה מלאה
בתצוגה הזו אפשר לנתח את המסלול המלא להמרת הלקוח, בין אם הוא מורכב משיחות מקושרות או משיחות עצמאיות. משתמשים בפרמטר correlation_info.correlation_types:FULL כדי לסנן את תצוגת השיחה המלאה.