ה-SDK של headless web מספק אירועים שאפשר להאזין להם כדי לטפל בפעולות או בעדכונים ספציפיים באפליקציה. אפשר להוסיף ולהסיר מאזינים לאירועים באמצעות השיטות .on ו-.off.
const handleReady = () => {
console.log("**** client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
אירועים כלליים
אלה אירועים כלליים של ה-SDK
ready
האירוע מופעל כשהלקוח מוכן לתקשורת.
client.on("ready", () => {
})
authenticated
האירוע מופעל כשהלקוח מאומת באמצעות האסימון של המשתמש.
client.on("authenticated", () => {
})
אירועים ב-Chat
אלה אירועים ספציפיים לסשנים של צ'אט.
chat.ongoing
האירוע הזה מתרחש כשיש צ'אט פעיל.
client.on("chat.ongoing", (chat) => {
console.log(chat)
})
chat.updated
האירוע מופעל כשמופע הצ'אט מתעדכן.
client.on("chat.updated", (chat) => {
// the `chat` property on `client` has updated
console.log(chat)
})
chat.message
האירוע מופעל כשמתקבלת הודעה חדשה.
client.on("chat.message", message => {
console.log(message)
})
סוג ההודעה:
interface MessageResponse {
$index: number;
$sid: string;
$timestamp: Date;
$userType: string;
$userId: number;
type: string;
content?: string;
event?: string;
file?: File;
// extra parameters
[key: string]: unknown;
}
chat.memberJoined
האירוע מופעל כשמשתמש חדש מצטרף לשיחה.
client.on("chat.memberJoined", (identity) => {
console.log(identity)
})
chat.memberLeft
האירוע מופעל כשמשתתף עוזב את השיחה.
client.on("chat.memberLeft", (identity) => {
console.log(identity)
})
chat.connected
האירוע מופעל כשהצ'אט מחובר לספק השיחה.
client.on("chat.connected", () => {
console.log("connected")
})
במקרים נדירים, יכול להיות שיהיו בעיות של זמן אחזור שיגרמו לשליחת הודעה בצ'אט לפני שה-SDK יצטרף לצ'אט. במקרים כאלה, אפשר להשתמש ב-fetchMessages כדי לקבל את כל ההודעות הקיימות בשיחה אחרי שהצ'אט מתחבר. דוגמת קוד:
client.on("chat.connected", async () = {
const messages = await
client.fetchMessages()
})
chat.disconnected
האירוע הזה מופעל כשהצ'אט מתנתק מספק השיחות.
client.on("chat.disconnected", () => {
console.log("disconnected")
})
chat.dismissed
האירוע מופעל כשסטטוס הצ'אט משתנה ל-dismissed.
client.on("chat.dismissed", () => {
console.log("dismissed")
})
chat.timeout
מופעל כשהצ'אט מסתיים, והסיבה היא timeout.
client.on("chat.timeout", () => {
console.log("timeout")
})
chat.ended
האירוע מופעל כשהצ'אט מסתיים.
client.on("chat.ended", () => {
console.log("ended")
})
chat.destroyed
האירוע הזה מופעל כשמתקשרים אל destroyChat.
client.on("chat.destroyed", () => {
console.log("destroyed")
})
chat.checkInRequested
מופעל כשניתן לבצע צ'ק-אין לשיחה.
chat.checkInTimedOut
האירוע הזה מופעל כשחלף הזמן שהוקצב לצ'אט.
אירועי הקלדה
כשאנשי תמיכה מתחילים להקליד, מתאם הצ'אט שולח אות שגורם לשליחת האירוע typingStarted אל ה-SDK של האתר ללא ראש. כשהסוכן מפסיק להקליד, נשלח אות אחרי שלוש שניות שמוביל לשליחת אירוע typingEndedל-SDK של האינטרנט ללא ראש. אי אפשר להגדיר את פרק הזמן הקצוב לתפוגה של שלוש שניות.
chat.typingStarted
האירוע מופעל כשמשתתף מתחיל להקליד.
client.on("chat.typingStarted", (identity) => {
console.log(identity)
})
chat.typingEnded
מופעל כשמשתמש מפסיק להקליד.
client.on("chat.typingEnded", (identity) => {
console.log(identity)
})
אירועים של צ'אט
בצ'אט, המשתמשים מתבקשים לאשר שהם מוכנים לפני שהם מועברים לנציג. בקטע הזה מתועדות השיטות של ה-SDK האינטרנטי ללא ראש להטמעה של צ'אט עם נציג. מידע נוסף זמין במאמר בנושא הצטרפות לשיחה.
checkIn
שולח לשרת אות אישור שמציין שמשתמש הקצה נמצא ומוכן להתחבר לנציג במהלך חלון הצ'ק-אין. העדכון של check_in_status בצ'אט מתבצע באופן מקומי אחרי שהשרת מאשר את הפעולה. תשתמש בזה בתשובה לאירוע chat.checkInRequested.
חתימת שיטה
checkIn(): Promise<CheckInResponse>
הערך המוחזר
מחזירה אובייקט CheckInResponse.
ממשקים
interface CheckInResponse {
chat_id: number;
check_in_status: CheckInStatus;
check_in_at?: string;
}
enum CheckInStatus {
CONFIRMED = 'confirmed',
EXITED = 'exited',
PENDING = 'pending',
REQUESTED = 'requested',
SKIPPED = 'skipped',
TIMED_OUT = 'timed_out',
}
דוגמה
try {
const response = await client.checkIn()
} catch (error) {
// handle error
}
exitCheckIn
הסרת המשתמש מתור ההמתנה לצ'ק-אין.
חתימת שיטה
exitCheckIn(): Promise<CheckInResponse>
הערך המוחזר
מחזירה אובייקט CheckInResponse.
ממשקים
interface CheckInResponse {
chat_id: number;
check_in_status: CheckInStatus;
check_in_at?: string;
}
enum CheckInStatus {
CONFIRMED = 'confirmed',
EXITED = 'exited',
PENDING = 'pending',
REQUESTED = 'requested',
SKIPPED = 'skipped',
TIMED_OUT = 'timed_out',
}
notifyCheckInState
הודעה על מצב החשיפה של תיבת הדו-שיח של הצ'ק-אין נשלחת אל ה-backend.
חתימת שיטה
notifyCheckInState(data: CheckInVisibilityStateRequest): Promise<void>
ממשקים
interface CheckInVisibilityStateRequest {
widget_minimized?: boolean;
tab_inactive?: boolean;
}
**Example**
try {
const visibilityState = {
widget_minimized: true,
tab_inactive: false,
}
await client.notifyCheckInState(visibilityState)
} catch (error) {
// handle error
}
rejoinChat
המשתמש יוחזר לתור אם הוא לא יאשר את הצ'ק-אין.
חתימת שיטה
rejoinChat(): Promise<CheckInResponse>
הערך המוחזר
מחזירה אובייקט CheckInResponse.
ממשקים
interface CheckInResponse {
chat_id: number;
check_in_status: CheckInStatus;
check_in_at?: string;
}
enum CheckInStatus {
CONFIRMED = 'confirmed',
EXITED = 'exited',
PENDING = 'pending',
REQUESTED = 'requested',
SKIPPED = 'skipped',
TIMED_OUT = 'timed_out',
}
דוגמה
try {
const response = await client.rejoinChat()
} catch (error) {
// handle error
trackCheckInEvent
אותות לשרת העורפי כשאירועי צ'ק-אין מופעלים על ידי ממשק המשתמש. ההגדרה הזו משמשת כשהדיאלוג של הצ'ק-אין מוצג למשתמש הקצה.
חתימת שיטה
trackCheckInEvent(): Promise<void>
דוגמה
try {
await client.trackCheckInEvent()
} catch (error) {
// handle error
אירועים של גלישה משותפת
אלה אירועים שספציפיים לגלישה משותפת:
cobrowse.request
האירוע מופעל כשמשתמש קצה או נציג שולחים בקשה להתחיל סשן של גלישה משותפת.
client.on("cobrowse.request", { from } => {
console.log("request by", from)
})
cobrowse.loaded
האירוע מופעל כשסשן של גלישה משותפת נטען.
client.on("cobrowse.loaded", session => {
console.log("cobrowse session", session)
})
cobrowse.updated
האירוע הזה מופעל כשמתבצע עדכון בסשן של גלישה משותפת.
client.on("cobrowse.updated", session => {
console.log("cobrowse session", session)
})
cobrowse.ended
האירוע מופעל כשסשן של גלישה משותפת מסתיים.
client.on("cobrowse.ended", session => {
console.log("cobrowse session", session)
})