ערכת ה-SDK ללא ממשק משתמש מספקת אירועים שאפשר להאזין להם כדי לטפל בפעולות או בעדכונים ספציפיים באפליקציה.
const handleReady = () => {
console.log("**** client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
אירועים כלליים
אלה האירועים הכלליים של ה-SDK
ready
נשלח כשהלקוח מוכן לתקשורת.
client.on("ready", () => {
})
authenticated
נשלח כשהלקוח אומת באמצעות הטוקן של המשתמש.
client.on("authenticated", () => {
})
כל האירועים הזמינים
ה-SDK מספק אירועים שונים שאפשר להאזין להם כדי לטפל בפעולות או בעדכונים ספציפיים באפליקציה.
אפשר להוסיף ולהסיר רכיבי event listener באמצעות השיטות .on ו-.off.
const handleReady = () => {
console.log(" client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
זו רשימה מקיפה של כל האירועים הזמינים:
אירועים גלובליים
| שם האירוע | תיאור |
|---|---|
ready |
נשלח כשהלקוח מוכן לתקשורת |
אירועים שיצאו משימוש
ה-SDK ממשיך להפיק את האירועים הבאים לצורך תאימות לדורות קודמים. אל תשתמשו בהם בשילובים חדשים.
| שם האירוע | תיאור | הדרכה |
|---|---|---|
authenticated |
נשלח כשהלקוח אומת באמצעות האסימון של המשתמש | הוצא משימוש ויוסר בהמשך. שילובים קיימים יכולים להמשיך לקבל את הנתונים האלה עד שהם יוסרו. |
chat.connected |
נשלח כשהצ'אט מחובר לספק. | הוצאה משימוש, משתמשים ב-chat.connectedMessages, שמספק גם את המטען הייעודי (payload) של ההודעות הראשוניות. |
אירועים ב-Chat
| שם האירוע | תיאור |
|---|---|
chat.ongoing |
מתרחש כשיש שיחת צ'אט פעילה. |
chat.updated |
מופעל כשמופע הצ'אט מתעדכן. |
chat.message |
מופעל כשיש הודעה חדשה. |
chat.memberJoined |
מופעל כשמשתתף חדש מצטרף לשיחה. |
chat.memberLeft |
מופעל כשמשתתף עוזב את השיחה. |
chat.typingStarted |
מופעל כשמשתמש מתחיל להקליד. |
chat.typingEnded |
נשלח כשמשתמש סיים להקליד. |
chat.connectedMessages |
נשלח כשה-SDK מחובר לשיחה עם ספק. |
chat.disconnected |
נשלח כשהצ'אט מתנתק מהספק. |
chat.dismissed |
נשלח כשסטטוס הצ'אט משתנה ל-dismissed. |
chat.timeout |
נשלח כשהצ'אט מסתיים בגלל "זמן קצוב לתפוגה". |
chat.ended |
נשלח כשהצ'אט מסתיים. |
chat.destroyed |
נשלח כשמתבצעת קריאה ל-destroyChat. |
chat.checkInRequested |
נשלח כשאפשר לעשות צ'ק-אין לצ'אט. |
chat.checkInTimedOut |
נשלח כשהזמן שהוקצב לצ'אט לבדיקת בטיחות הסתיים |
אירועי גלישה משותפת
| שם האירוע | תיאור |
|---|---|
cobrowse.request |
נשלח כשמשתמש הקצה או הנציג מבקשים גלישה משותפת |
cobrowse.loaded |
נשלח כשטוענים סשן של גלישה משותפת |
cobrowse.updated |
נשלח כשסשן הגלישה המשותפת מתעדכן |
cobrowse.ended |
נשלח כשסשן הגלישה המשותפת מסתיים |
דוגמאות לשימוש
client.on("ready", () => {
// Client is ready
})
client.on("chat.message", message => {
console.log(message)
})
client.on("chat.connectedMessages", async ({ chat, messages }) => {
// Handle chat and messages
})
client.on("cobrowse.request", ({ from }) => {
console.log("Cobrowse requested by", from)
})
הגדרת נתונים בהתאמה אישית
האפשרות custom_data מאפשרת להעביר נתונים שרירותיים של צמדי מפתח/ערך ל-Web SDK.
Usage
כשיוצרים צ'אט, אפשר לספק נתונים בהתאמה אישית כאובייקט (לא חתום) או כמחרוזת (חתומה):
interface ChatRequest {
lang?: string;
trigger_id?: string;
ticket_id?: string;
email?: string;
greeting?: string;
cobrowsable?: boolean;
custom_data?: {
signed?: string;
unsigned?: Record<string, any>;
};
}
דוגמה
מקרה לדוגמה:
const custom_data = {
unsigned: {
version: {
label: 'Version',
value: '1.0.0'
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}
העברה לצ'אט בוט חיצוני
במקרים מסוימים, יכול להיות שתרצו לשמור את ההיסטוריה והאינטראקציות מספקי צ'אט אחרים. כדי לעשות את זה, אפשר להשתמש ב-custom_data object.
מקרה לדוגמה:
cconst custom_data = {
unsigned: {
external_chat_transfer: {
greeting_override: "Please hold while we connect you with a human agent.",
agent: {
name: "Agent Name",
avatar: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
},
transcript: [
{
sender: "agent",
timestamp: "2021-03-15 12:00:00Z",
content: [
{
type: "text",
text: "Hello! How can I help you today?"
},
{
type: "buttons",
buttons: [
{
label: "Create New Order",
selected: false
},
{
label: "Check Order Status",
selected: true
},
{
label: "Check Account Balance",
selected: false
},
]
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:15Z",
content: [
{
type: "text",
text: "Check Order Status"
}
]
},
{
sender: "agent",
timestamp: "2021-03-15 12:00:16Z",
content: [
{
type: "text",
text: "I can help you with that, what's your order number?"
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:20Z",
content: [
{
type: "media",
media: {
type: "image",
url: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
}
}
]
}
]
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}