היכולת 'אירועים של סשנים חיצוניים' מאפשרת הזרמת נתונים בזמן אמת מ-CCAI Platform למערכות חיצוניות באמצעות תגובות לפעולות מאתרים אחרים (webhooks). כך מקבלים תצוגה מיידית של מחזורי החיים של הסשנים לצורך דיווח בהתאמה אישית, עדכונים של רשומות CRM או תהליכי עבודה אוטומטיים אחרי אינטראקציות.
אירועים חיצוניים של סשן מספקים מנגנון מבוסס-דחיפה כדי להודיע לשרת שלכם בכל פעם שמשתנה סטטוס של צ'אט או שיחה קולית. אם מספקים נקודת קצה (endpoint) של API, פלטפורמת CCAI תפרסם נתוני אירועים בפורמט JSON בתשתית שלכם כשמתרחשים מעברים – לדוגמה, שיחה מחוברת, סוכן שהוקצה, סשן מנותק.
הגדרה של אירועים חיצוניים של סשנים
כדי להגדיר אירועים של סשנים חיצוניים, מבצעים את השלבים הבאים:
בפורטל של CCAI Platform, לוחצים על הגדרות > הגדרות למפתחים. אם תפריט ההגדרות לא מופיע, לוחצים על תפריט.
בחלונית ייצוא נתוני סשן, לוחצים על ניהול הגדרות ייצוא הנתונים. יופיע הדף ייצוא נתוני סשן.
עוברים לחלונית External Session Events (אירועים של סשנים חיצוניים) ולוחצים על המתג כדי להעביר אותו למצב מופעל.
מבצעים אחת מהפעולות הבאות או את שתיהן:
כדי להגדיר אירועים של סשן שיחה חיצוני:
מסמנים את התיבה Call events - Send call sessions event (אירועים שקשורים לשיחות – שליחת אירוע של סשן שיחה).
בשדה API Endpoint (נקודת קצה של API), מזינים את כתובת ה-URL המלאה של ה-API המטרה ב-HTTPS.
מזינים את שם המשתמש והסיסמה. הפלטפורמה משתמשת בהם לאימות בסיסי.
כדי להגדיר אירועים של סשן צ'אט עם גורמים מחוץ לארגון:
מסמנים את התיבה אירועים ב-Chat – שליחת אירוע של סשנים ב-Chat.
בשדה API Endpoint (נקודת קצה של API), מזינים את כתובת ה-URL המלאה של ה-API המטרה ב-HTTPS.
מזינים את שם המשתמש והסיסמה. הפלטפורמה משתמשת בהם לאימות בסיסי.
לוחצים על Save.
מחזור החיים של אירוע והלוגיקה של מצב האירוע
במהלך הסשן, פלטפורמת CCAI שולחת כמה עדכונים. כל עדכון מעשיר את אובייקט item במטא-נתונים נוספים כשהם הופכים לזמינים.
טבלת התקדמות המדינה
| סדר האירועים | מדינה | סטטוס המשתתף | נוספו נקודות נתונים מרכזיות |
|---|---|---|---|
| 1. התחלה | connected |
חיצוני: connected |
call_id, לקוח dn (מספר טלפון). |
| 2. ניתוב | connected |
חיצוני: connected |
queue_path_names, initiator (סוכן וירטואלי). |
| 3. הוקצה | connected |
נציג/ה: accepted |
השם והמזהה של הנציג בזמן אמת מתווספים. |
| 4. פעיל | connected |
נציג/ה: connected |
השידור הוקם (השיחה מתחילה). |
| 5. סיום | disconnected |
שניהם: disconnected |
חותמת הזמן ends_at מאוכלסת. |
| 6. סופית | disconnected |
נציג/ה: dispositionSubmitted |
אובייקט dispositions שמכיל קודי סיכום. |
הפניה לסכימת נתוני אירועים
האירועים נשלחים אל ה-webhook באובייקט. לכל אירוע webhook יש את אותה מבנה, שמוצג בטבלה הבאה:
אובייקט הבסיס
| שדה | סוג | תיאור |
|---|---|---|
count |
מספר שלם | מספר אובייקטי האירועים במטען הייעודי הנוכחי. |
events |
מערך | אוסף של אובייקטים של אירועים שמכילים פרטים על הסשן. |
שדות עיקריים של סשנים
-
event_id: מזהה UUID של ההתראה על האירוע. -
timestamp: חותמת זמן של מערכת Unix באלפיות השנייה של הזמן שבו האירוע נוצר. -
connected_atו-ends_at: חותמות זמן בפורמט ISO 8601 של משך הביקור. -
initiator: מזהה את הישות שטיפלה בשינוי הסטטוס, לדוגמהvirtual_agent_15אוagent_1. -
dispositions: אובייקט מוטמע שמכיל אתcode,custom_code_idוכל סוכןnote.
אבטחה
כל הבקשות נשלחות עם כותרת הרשאה רגילה:
Authorization: Basic <base64_encoded_credentials>
דרישות בנוגע להעברה
- שיטה:
POST - Content-Type:
application/json - פסק זמן: השרת צריך להגיב תוך חמש שניות.
- אישור: נקודת הקצה צריכה להחזיר קוד סטטוס
200 OK. יכול להיות שהפלטפורמה תשתמש בניסיונות חוזרים עם השהיה אקספוננציאלית אם מתקבל קוד שאינו 200.
דוגמאות למטענים ייעודיים
בהמשך מופיעות דוגמאות למטענים ייעודיים (payloads) שמתקבלים בהודעות אירועים ל-webhook.
שיחה פעילה (מדיה מחוברת)
{
"count": 1,
"events": [
{
"event_id": "fc066edb-d99f-4db4-ba04-fb5dfea0e86a",
"timestamp": 1767874769480,
"type": "CallState",
"item": {
"call_id": 1395,
"state": "connected",
"queue_path_names": "Test/Talk to Andrew/English",
"participants": [
{ "state": "connected", "type": "external", "dn": "+15555555555" },
{ "state": "connected", "type": "agent", "name": "Joe Smith", "agent_number": "528431" }
]
}
}
]
}
ההחלטה הסופית (עבודה בעקבות השיחה)
{
"count": 1,
"events": [
{
"event_id": "479798ff-b1ed-4a5c-a910-17a7edb3f283",
"timestamp": 1767874769480,
"type": "CallState",
"item": {
"call_id": 1395,
"state": "disconnected",
"participants": [
{
"type": "agent",
"state": "dispositionSubmitted",
"dispositions": {
"code": "Call completed",
"custom_code_id": "callComplete",
"note": "none"
}
}
]
}
}
]
}