במסמך הזה מוסברת הסכימה של רשומת המטא-נתונים של תמליל הצ'אט. זהו קובץ ה-JSON שנוצר על ידי Contact Center AI Platform (CCAI Platform) לתמליל צ'אט שהושלם. רשומת המטא-נתונים של תמליל הצ'אט נוצרת על ידי ייצוא JSON של היסטוריית הצ'אט, ואפשר להעביר אותה באמצעות העלאות של תמלילים ב-CRM וקובצי תמלילים באחסון חיצוני, בהתאם להגדרות של המכונה שלכם. אתם יכולים להשתמש בסכימה הזו כדי לנתח את קובץ ה-JSON של התמליל, לאמת את המטענים הייעודיים (payloads) שהתקבלו או למפות את הודעות התמליל למערכות במורד הזרם.
הרמה הבסיסית (root) של הסכימה
רשומת המטא-נתונים של תמליל הצ'אט היא אובייקט JSON יחיד שמייצג פריט מידע אחד של תמליל צ'אט. השדות ברמה הבסיסית (root) מזהים את התקשורת, את גרסת הפורמט של התמליל ואת קבוצת הרשומות של התמליל לפי הסדר.
מזהי תקשורת comm_type ו-comm_id
ביחד, comm_type ו-comm_id מזהים את התקשורת שרשומת התמליל הזו מייצגת.
comm_typeהוא המזהה של סוג התקשורת. הערך הוא בדרך כללchat. הערך יכול להיותcallבשיחת טלפון שכוללת תוכן משולב של תמליל SMS.
comm_idהוא המזהה של הצ'אט או השיחה שמיוצגים בתמליל.
גרסת הפורמט transcript_version
מזהה את הגרסה של פורמט התמליל ב-JSON. בשילובים צריך להשתמש בשדה הזה לניתוח עם תאימות קדימה, ולהתעלם משדות לא מזוהים.
דיסקרימינטור של ערך – entries[].type ו-entries[].body.type
כל פריט ב-entries מייצג הודעה או אירוע בתמליל. השדה type ברמת הרשומה משקף את סוג גוף ההודעה. האובייקט המקונן body נושא את המטען הייעודי (payload) שהצורה שלו משתנה בהתאם לסוג – לדוגמה, text, markdown, photo, noti או action.
סכימת מטא-נתונים של תמליל צ'אט
הסכימה הזו מתארת את מבנה הנתונים של תמלילי צ'אטים. בקטעים הבאים מתוארים רכיבי הליבה.
מידע בסיסי על התמליל
המאפיינים הבאים מספקים את המידע הבסיסי על התמליל עצמו:
comm_type(מחרוזת): סוג התקשורת שהתמליל מייצג. ערכים אפשריים:chat, call. הערךcallמציין שיחת טלפון עם תוכן משולב של תמליל SMS.
comm_id(מספר שלם): המזהה הייחודי של התקשורת שמיוצגת על ידי התמליל.transcript_version(מחרוזת): גרסת פורמט ה-JSON של התמליל. הערך הנוכחי הוא"1.0". מידע נוסף זמין במאמר ניהול גרסאות והוצאה משימוש.assigned_at(מחרוזת, תאריך-שעה): חותמת הזמן של הקצאת הצ'אט.
timezone(מחרוזת): אזור הזמן של הקשר התמליל, למשל"America/Los_Angeles".
רשומות בתמליל
entries(מערך): רשימה מסודרת של רשומות תמליל. כל רשומה מייצגת הודעה, התראה או פעולה אחת בשיחה.
timestamp(מספר שלם): חותמת זמן של ראשית זמן יוניקס (Unix epoch), בשניות, כשהמערכת יצרה את הרשומה.
type(מחרוזת): סוג גוף ההודעה. הערך הזה משקף אתbody.type. בקטע הגדרות מפורטים סוגי המרכבים הנתמכים.
body(אובייקט): המטען הייעודי (payload) של הרשומה. הצורה שלו תלויה בערך שלtype/body.type.
role(מחרוזת): התפקיד של המשתתף או רכיב המערכת שיצרו את הרשומה. ערכים אפשריים:end_user, agent, manager, virtual_agent, external_agent, task_virtual_agent, system.user_data(אובייקט): מטא-נתונים של השולח. ברשומותagent,manager,virtual_agent,external_agentו-task_virtual_agent, האובייקט הזה מכיל את נתוני התצוגה של השולח. ברשומות שלend_userו-system, האובייקט הזה ריק.
name(מחרוזת; מופיע רק כשיש מטא-נתונים של השולח): השם המוצג של השולח.
id(מספר שלם; מופיע רק כשיש מטא-נתונים של השולח): המזהה של השולח.
avatar_url(מחרוזת, URI; מופיע רק כשהמטא-נתונים של השולח זמינים): כתובת ה-URL של תמונת הדמות של השולח.
גוף הודעות ה-SMS
text(אובייקט): גוף הודעת ה-SMS בטקסט פשוט.type(מחרוזת): תמידtext.
content(מחרוזת): טקסט ההודעה.lang(מחרוזת; מופיע רק כשיש מטא-נתונים של שפה): קוד השפה שמשויך להודעה.
text_template(אובייקט): גוף הודעת ה-SMS בתבנית.type(מחרוזת): תמידtext_template.
content(מחרוזת): טקסט התבנית.
markdown(אובייקט): גוף ההודעה בפורמט Markdown.type(מחרוזת): תמידmarkdown.
content(מחרוזת): תוכן ב-Markdown.lang(מחרוזת; מופיע רק כשיש מטא-נתונים של שפה): קוד השפה שמשויך להודעה.
markdown_template(אובייקט): גוף ההודעה בפורמט Markdown.type(מחרוזת): תמידmarkdown_template.
content(מחרוזת): תוכן התבנית של Markdown.
גופי הודעות של מדיה וקבצים
photo(אובייקט): גוף ההודעה של התמונה או צילום המסך.type(מחרוזת): תמידphoto.
media_id(מספר שלם): המזהה של קובץ המדיה של התמונה השמורה.
video(אובייקט): גוף הודעת הווידאו.type(מחרוזת): תמידvideo.media_id(מספר שלם; קיים כשהמערכת שומרת את הסרטון כמדיה של פלטפורמת CCAI): מזהה של מדיה של הסרטון השמור.
title(מחרוזת; מופיע כשאובייקט של סרטון מוטמע מייצג את הסרטון): שם הסרטון.
video(אובייקט; מופיע כשאובייקט של סרטון מוטמע מייצג את הסרטון): פרטי הסרטון.
url(מחרוזת, URI): כתובת ה-URL של הסרטון.
text(מחרוזת): טקסט חלופי או כתובת URL לגיבוי של הסרטון.
image(אובייקט): גוף הודעת התמונה.type(מחרוזת): תמידimage.
title(מחרוזת; מוצגת כששולח ההודעה מספק אותה): שם התמונה.
image(אובייקט): פרטי התמונה.url(מחרוזת, URI): כתובת ה-URL של התמונה.
text(מחרוזת): טקסט חלופי או כתובת URL חלופית לתמונה.
document(אובייקט): גוף ההודעה של המסמך.type(מחרוזת): תמידdocument.media_id(מספר שלם; קיים כשהמערכת שומרת את המסמך כמדיה של פלטפורמת CCAI): מזהה המדיה של המסמך השמור.title(מחרוזת; מופיעה כשאובייקט מסמך מוטמע מייצג את המסמך): כותרת המסמך.
document(אובייקט; מופיע כשאובייקט מסמך מוטמע מייצג את המסמך): פרטי המסמך.
url(מחרוזת, URI): כתובת ה-URL של המסמך.
text(מחרוזת): טקסט חלופי או כתובת URL חלופית למסמך.
audio(אובייקט): גוף ההודעה הקולית.type(מחרוזת): תמידaudio.
media_id(מספר שלם; קיים כשהמערכת שומרת את האודיו כמדיה של פלטפורמת CCAI): המזהה של מדיה האודיו השמורה.
title(מחרוזת; מופיעה כשאובייקט אודיו מוטמע מייצג את קובץ האודיו): שם קובץ האודיו.
audio(אובייקט; מופיע כשאובייקט אודיו מוטמע מייצג את קובץ האודיו): פרטי האודיו.
url(מחרוזת, URI): כתובת ה-URL של קובץ האודיו.
text(מחרוזת): טקסט חלופי או כתובת URL לגיבוי של קובץ האודיו.
גוף הודעה אינטראקטיבי
inline_button(אובייקט): גוף ההודעה של הכפתור בשורה.type(מחרוזת): תמידinline_button.
title(מחרוזת): הכותרת שתוצג מעל הכפתורים.
buttons(מערך): רשימה של הגדרות לחצנים.
title(מחרוזת): תווית הכפתור.
action(מחרוזת): הפעולה שמשויכת לכפתור.
link(מחרוזת, URI; מופיע רק בתשובות מהירות בסגנון קישור): כתובת ה-URL שמשויכת ללחצן.
sticky_button(אובייקט): גוף ההודעה של הכפתור הקבוע.type(מחרוזת): תמידsticky_button.
title(מחרוזת): הכותרת שתוצג מעל הכפתורים.
buttons(מערך): רשימה של הגדרות לחצנים.
title(מחרוזת): תווית הכפתור.
action(מחרוזת): הפעולה שמשויכת לכפתור.
link(מחרוזת, URI; מופיע רק בתשובות מהירות בסגנון קישור): כתובת ה-URL שמשויכת ללחצן.
content_card(אובייקט): גוף ההודעה של כרטיס התוכן.type(מחרוזת): תמידcontent_card.
cards(מערך): רשימה של כרטיסי תוכן.title(מחרוזת): כותרת הכרטיס.
body(מחרוזת; מופיע רק כשמגדירים את גוף הטקסט של הכרטיס): גוף הטקסט של הכרטיס.
form_complete(אובייקט): גוף ההודעה על השלמת הטופס שהלקוח שולח כשהצרכן משלים, מבטל או נכשל במילוי הטופס.type(מחרוזת): תמידform_complete.
signature(מחרוזת; מופיעה רק כשאירוע ההשלמה מכיל חתימה): חתימה למטען הייעודי (payload) של השלמת הטופס.
data(אובייקט): פרטים על מילוי הטופס.
status(מחרוזת): סטטוס השלמה. ערכים אפשריים:success, error, cancelled.smart_action_id(מספר שלם): המזהה של הפעולה החכמה שמשויכת לטופס.timestamp(מחרוזת, תאריך ושעה): חותמת הזמן של האירוע של מילוי הטופס. השדה הזה שונה מהשדהtimestampברמת הרשומה, שהוא מספר שלם של חותמת זמן של ראשית זמן יוניקס (Unix epoch) בשניות.
details(אובייקט; מופיע רק כשהמטען הייעודי מספק פרטים נוספים על ההשלמה): פרטים נוספים על הסטטוס.
error_code(מחרוזת; מופיע רק בשגיאות עם קוד): קוד השגיאה שמשויך לתוצאת ההשלמה.
message(מחרוזת): פרטי סטטוס קריאים לאנשים.
גופי הודעות שנוצרו בשרת וגופי הודעות שעוברים דרך השרת
server_message(אובייקט): גוף ההודעה שנוצר על ידי השרת. התמליל כולל רשומות שלserver_messageרק אם מפעילים בחשבון את תוכן התמליל של הנציג הווירטואלי למשימות. אחרת, התמליל לא כולל את הרשומות האלה. משתמשים באובייקט הזה כשהתמליל מפנה להודעה ששמורה בצד השרת.type(מחרוזת): תמידserver_message.
message_id(מספר שלם): המזהה של הודעת השרת השמורה.visibility(מחרוזת או null): הגדרת החשיפה של הודעת השרת השמורה.
passthrough(אובייקט): מטען ייעודי (payload) מותאם אישית שהמערכת מעבירה דרך פלטפורמת CCAI לשילוב של נציג וירטואלי או CCaaS. השילוב מגדיר אתcontent, שלא נכלל בסכימה של פלטפורמת CCAI. צריך להתייחס אליו כאל אטום.type(מחרוזת): תמידpassthrough.
content(מחרוזת או אובייקט): מטען ייעודי (payload) שמוגדר על ידי השילוב. המבנה שלו משתנה בהתאם לשילוב, ופלטפורמת CCAI לא מפרשת אותו.
גוף ההודעה של הפעולה
action(אובייקט): פעולה שנציג וירטואלי או צ'אט בוט מבקשים לבצע. השדהactionקובע את צורת המטען הייעודי (payload) של הפעולה.type(מחרוזת): תמידaction.
action(מחרוזת): סוג הפעולה. הערכים האפשריים כוללים אתescalation,deflectionו-end.escalation_reason(מחרוזת; מופיעה רק כש-actionהואescalation): הסיבה להעברת השיחה לטיפול ברמה גבוהה יותר.
menu_id(מספר שלם; מופיע רק כש-actionהואescalation): מזהה התפריט שאליו השיחה צריכה לעבור.language(מחרוזת; מופיע רק כש-actionהואescalation): קוד השפה של תור היעד.deflection_type(מחרוזת; מופיע רק כש-actionהואdeflection): סוג ההסטה המבוקשת.
sip_parameters(אובייקט או null; מופיע רק כש-actionהואdeflection): פרמטרים של SIP להעברה כחלק מההסטה.
גוף ההודעה של ההתראות
noti(אובייקט): גוף ההודעה של ההתראה. ההתראות מתארות אירועים במערכת שהתרחשו במהלך הצ'אט.type(מחרוזת): תמידnoti.
event(מחרוזת): שם האירוע של ההתראה.
agent(אובייקט; קיים רק באירועים שמשויכים לנציג אנושי): הנציג שמשויך לאירוע.
id(מספר שלם): מזהה הסוכן.
email(מחרוזת, אימייל): כתובת האימייל של הסוכן.
name(מחרוזת): השם המוצג של הסוכן.
from_agent(אובייקט; מופיע רק באירועי העברה עם נציג מקור): נציג המקור של האירוע.
id(מספר שלם): מזהה הסוכן.
email(מחרוזת, אימייל): כתובת האימייל של הסוכן.
name(מחרוזת): השם המוצג של הסוכן.
to_agent(אובייקט; מופיע רק באירועי העברה או הסלמה עם נציג אנושי ביעד): הנציג האנושי ביעד של האירוע.
id(מספר שלם): מזהה הסוכן.
email(מחרוזת, אימייל): כתובת האימייל של הסוכן.
name(מחרוזת): השם המוצג של הסוכן.
from_virtual_agent(אובייקט; מופיע רק באירועי העברה מנציג וירטואלי): הנציג הווירטואלי שממנו הועבר האירוע.
id(מספר שלם): מזהה הנציג הווירטואלי.
name(מחרוזת): השם המוצג של הנציג הווירטואלי.
avatar_url(מחרוזת, URI או null): כתובת ה-URL של תמונת הדמות של הנציג הווירטואלי.
to_virtual_agent(אובייקט; מופיע רק באירועי העברה לנציג וירטואלי): הנציג הווירטואלי שאליו מועבר האירוע.
id(מספר שלם): מזהה הנציג הווירטואלי.
name(מחרוזת): השם המוצג של הנציג הווירטואלי.
avatar_url(מחרוזת, URI או null): כתובת ה-URL של תמונת הדמות של הנציג הווירטואלי.
target(מחרוזת; מופיע רק באירועי העברה): סוג היעד של ההעברה. הערכים האפשריים כוללים אתmenuו-agent.
status(מחרוזת; מופיע רק באירועים שכוללים סטטוס צ'אט): סטטוס הצ'אט שמשויך לאירוע.
timeout(בוליאני; מופיע רק באירועים שקשורים לזמן קצוב לתפוגה): אם האירוע נגרם בגלל זמן קצוב לתפוגה.
memberIdentity(מחרוזת; מופיעה רק באירועים של הצטרפות או עזיבה של משתתפים): הזהות של המשתתף.memberName(מחרוזת; מופיעה רק באירועים של הצטרפות או עזיבה של משתתפים): השם המוצג של המשתתף.name(מחרוזת; מופיעה רק באירועים מסוג virtual-agent או task-va): השם המוצג שמשויך לאירוע.
reason(מחרוזת; מופיעה רק באירועי השלמה של task-va): הסיבה לסיום הסשן של task-va.
escalation_reason(מחרוזת; מופיע רק באירועי העברה לטיפול ברמה גבוהה יותר): הסיבה להעברה לטיפול ברמה גבוהה יותר.
deflection(אובייקט; מוצג רק באירועי הסטה): פרטי ההסטה.
detail(אובייקט; מופיע רק באירועי התראות בהתאמה אישית): פרטי האירוע בהתאמה אישית.key(מחרוזת): מפתח אירוע מותאם אישית.
data(אובייקט): המטען הייעודי (payload) של האירוע בהתאמה אישית.
שמות של אירועי התראות
השדה event מזהה את אירוע ההתראה. ספק הצ'אט, שמשמש כמקור האמת היחיד, שומר את כל אירועי ההתראות ברשימה הבאה ב-JSON של התמליל. הרשימה מקבצת את האירועים האלה לפי משפחה.
בקשות לפעולות חכמות
verificationRequestedphotoRequestedvideoRequestedscreenshotRequestedtextRequestedcobrowseRequestedFromAgent
תוצאות של פעולות חכמות
- הסתיים:
photoFinished,videoFinished,screenshotFinished,textFinished - בוטלה:
photoCanceled,videoCanceled,screenshotCanceled,textCanceled - נכשל:
photoFailed,videoFailed,screenshotFailed,textFailed,verificationFailed
אימות
endUserVerified
גלישה משותפת
cobrowseRequestedFromEndUsercobrowseCodeGeneratedcobrowseStartedcobrowseEndedcobrowseFailed
Forms
formRequestedformSentformCompleted
העברות
transferStartedtransferAcceptedtransferFailed
העברת פניות מנציג וירטואלי לנציג אנושי
escalationStartedescalationAcceptedescalationDeflectedescalationFailed
נציג וירטואלי למשימות
taskVaStartedtaskVaFinished
חברות
agentJoinedmemberJoinedmemberLeft
מחזור החיים של הסשן
chatEndedchatEndedWithPostSessionchatDismissedchatReactivatedcheckInRequiredcheckInTimedOuttranscriptRequestedtranscriptUpdated
בהתאמה אישית
custom
ברשומות שבהן הערך של comm_type מוגדר כ-call, יכול להיות שיופיעו אירועים נוספים של התראות על תמלילי שיחות. האירועים האלה משויכים לטיפול בתמלילים של שיחות או של Agent Assist, ולא למשפחות האירועים הרגילות של Chat.
הגדרות
סכימות המשנה הבאות מופיעות במסמך המטא-נתונים של תמליל הצ'אט. בקטע הזה אנחנו מגדירים כל סכימת משנה פעם אחת. קבוצות מאפיינים שמפנות אליהן מצביעות חזרה לקטע הזה, במקום להגדיר מחדש את הצורה שלהן בתוך השורה.
רשומה (אובייקט)
מייצג הודעה, התראה או פעולה אחת בתמליל. לכל רשומה יש timestamp של ראשית זמן יוניקס (Unix epoch), type ברמה העליונה, אובייקט body שהסוג שלו תואם לצורה הזו, role של השולח ואובייקט user_data. רשימת השדות המלאה מופיעה בקטע רשומות תמליל.
user_data (אובייקט)
מתאר את השולח של רשומה בתמליל כשהמטא-נתונים של השולח זמינים. רשומות של סוכן, מנהל, נציג וירטואלי, סוכן חיצוני ונציג וירטואלי למשימות יכולות לכלול את name, id ו-avatar_url. רשומות של צרכנים ומערכות מכילות אובייקט ריק.
גוף ההודעה (אובייקט, oneOf)
האובייקט body בכל רשומה משתמש בערך של body.type כדי לבחור אחת מהצורות הנתמכות של גוף ההודעה. סוגי הגופים הנתמכים כוללים גופי טקסט, גופי מדיה או קבצים, גופים אינטראקטיביים, גופים שנוצרו על ידי השרת, גופי פעולה וגופי התראות. הרשימה המלאה של הגרסאות המתועדות מופיעה בקטעים גוף הודעת ה-SMS עד גוף הודעת ההתראה.
תפקיד המשתתף (מחרוזת, enum)
מזהה את קטגוריית השולח של רשומה בתמליל.
ערכים מותרים
end_user– הצרכן.
agent– נציג אנושי.
manager– משתתף עם הרשאת ניהול.
virtual_agent– נציג וירטואלי.
external_agent– משתתף שהוא סוכן חיצוני.
task_virtual_agent– נציג וירטואלי למשימות.
system– רשומה שנוצרה על ידי המערכת.
ניהול גרסאות והוצאה משימוש
מסמך המטא-נתונים של תמליל הצ'אט תומך בפיתוח סכימה שתואמת לדורות קודמים. המערכת עשויה להוסיף שדות חדשים וגרסאות חדשות של גוף ההודעה עם הזמן, והשילובים צריכים להתעלם ממפתחות לא מזוהים כדי להבטיח שהפונקציונליות תמשיך לפעול.
גרסת הפורמט הנוכחית
transcript_version(מחרוזת) – הערך הנוכחי:"1.0". השילובים צריכים לנתח את התמליל על סמך השדות שקיימים במטען הייעודי (payload), ולא להיכשל אם בגרסאות עתידיות יתווספו שדות חדשים או סוגים חדשים של גוף ההודעה.
סוגים לא ידועים של גוף ההודעה
אם רשומה בתמליל מכילה type או body.type לא מזוהים, צריך לשמור את הרשומה הגולמית אם אפשר, ולהמשיך לנתח את שאר התמליל. המערכת עשויה להוסיף סוגים חדשים של גוף הודעה בלי לשנות את המשמעות של השדות הקיימים.
שדות שיצאו משימוש
במסמך הזה לא מפורטים שדות שהוצאו משימוש ברשומת המטא-נתונים של תמליל הצ'אט.