בדף הזה מפורטות השיטות של ה-API שזמינות ל-SDK לאינטרנט ללא ממשק משתמש.
החברה והתפריטים
שיטות לטיפול בערכים ובתפריטים של החברה.
Methods
ה-SDK ללא ממשק משתמש מספק שיטות שונות שאפשר להפעיל במופע של הלקוח.
הנה כמה דוגמאות:
החברה והתפריטים
| שם השיטה | תיאור |
|---|---|
| getCompany | אחזור של פרטי החברה שהוגדרו. |
| getMenus | רשימה של כל התפריטים הזמינים לדייר נתון. |
| getWaitTimes | בתפריט אפשר לראות את זמני ההמתנה הנוכחיים בערוצים השונים. |
getCompany
אחזור פרטי החברה שהוגדרו למכונה המאומתת, כולל שם החברה, השפות הנתמכות והגדרות התכונות. השיטה הזו גם מגדירה את מזהה המכונה הפנימי (OPTIONS.tenant) כהשפעה משנית, ולכן בדרך כלל זו הקריאה הראשונה שמתבצעת אחרי יצירת לקוח.
חתימת השיטה
getCompany(): Promise<CompanyResponse>
הערך המוחזר
מחזירה אובייקט CompanyResponse.
ממשקים
interface CompanyResponse {
name: string;
subdomain: string;
support_email: string;
languages: LanguageOption[];
action_tracking: boolean;
email_transcripts: boolean;
message_preview: boolean;
email_enhancement: boolean;
display_history: boolean;
use_recording: boolean;
use_web: boolean;
cobrowse_domain?: string;
}
דוגמה לשימוש
try {
const company = await client.getCompany()
} catch (error) {
// handle error
}
getMenus
השיטה הזו משמשת להצגת רשימה של כל פריטי התפריט שזמינים למכונה. השדה MenuResponse.direct מציין אם התוצאה הגיעה ממפתח גישה ישירה (direct.key: true) או מגישה ישירה ברמת המשתמש (direct.user: true) – שניהם משפיעים על אופן הצגת התפריטים.
חתימת השיטה
getMenus(key?: string, lang?: string): Promise<MenuResponse>
הערך המוחזר
מחזירה אובייקט MenuResponse.
ממשקים
interface MenuResponse {
menus: MenuItem[];
direct: {
key: boolean;
user: boolean;
key_id: number | null;
};
}
interface MenuItem {
id: number;
name?: string;
enabled: boolean;
redirection?: {
option: string;
data: string;
};
children?: MenuItem[];
channels: MenuChannel[];
deflection?: {
enabled: boolean;
type: string;
};
hidden: boolean;
}
דוגמה לשימוש
try {
const data: MenuResponse = await client.getMenus("direct_menu_key")
console.log(data.menus)
console.log(data.direct)
} catch (error) {
// handle error
}
getWaitTimes
הפונקציה מאחזרת את זמן ההמתנה המשוער (בשניות) לערוצי הצ'אט והשיחות הקוליות של תפריט נתון.
חתימת השיטה
getWaitTimes(menuId: number | string, lang?: string): Promise<WaitTimeResponse | null>
הערך המוחזר
מחזירה אובייקט WaitTimeResponse או null.
ממשקים
interface WaitTimeResponse {
chat: number;
voice_call: number;
}
דוגמה לשימוש
try {
const data = await client.getWaitTimes(123)
} catch (error) {
// handle error
}
שיחות
| שם | תיאור |
|---|---|
createCall |
יוצרים שיחה מיידית או מתוזמנת. |
loadCall |
קבלת מידע ממזהה שיחה נתון. |
cancelCall |
ביטול השיחה עם מזהה השיחה שצוין. |
getTimeSlots |
קבלת משבצות זמן פנויות לשיחות מתוזמנות לתפריט נתון. |
fetchTimeSlotAvailability |
בודקים אם יש משבצות זמן פנויות בתפריט מסוים. |
createCall
יצירת שיחה חדשה לתפריט הנתון. השיחה יכולה להיות מיידית או מתוזמנת, בהתאם לשדה scheduled_at. סוג הקריאה (web_instant_call לעומת web_scheduled_call) נקבע באופן אוטומטי על סמך הנוכחות של scheduled_at. השדה reschedule_call_id נשלח ברמה העליונה של הבקשה, בנפרד מגוף הקריאה. הערך menu_id בתגובה מנורמל מהערך selected_menu.id של ה-API.
חתימת השיטה
createCall(menuId: number | string, data: CallRequest): Promise<CallResponse>
הערך המוחזר
מחזירה אובייקט CallResponse.
ממשקים
interface CallRequest {
phone_number: string;
lang?: string;
scheduled_at?: string;
ticket_id?: string;
email?: string;
recording_permission?: "recording_permission_not_asked" | "recording_permission_granted" | "recording_permission_denied";
custom_data?: {
signed?: string;
unsigned?: Record<string, any>;
};
reschedule_call_id?: number;
}
דוגמה לשימוש
try {
const call = await client.createCall(123, { phone_number: '+12345678' })
} catch (error) {
// handle error
}
loadCall
ה-method loadCall מאחזרת מידע על שיחה ספציפית, לפי המזהה שלה.
חתימת השיטה
loadCall(callId: number | string): Promise<CallResponse>
הערך המוחזר
מחזירה אובייקט CallResponse.
ממשקים
interface CallResponse {
id: number;
lang: string;
menu_id: number;
status: string;
type: string;
scheduled_at?: string;
recording_permitted: boolean;
survey_enabled: boolean;
created_at: string;
menus: {
id: number;
name: string;
}[];
}
דוגמה לשימוש
try {
const call = await client.loadCall(1234)
} catch (error) {
// handle error
}
cancelCall
ביטול שיחה קיימת לפי המזהה שלה. בדרך כלל משתמשים בזה כדי לבטל שיחה מתוזמנת שעדיין לא בוצעה.
חתימת השיטה
cancelCall(callId: number | string): Promise<CallResponse>
הערך המוחזר
מחזירה אובייקט CallResponse.
ממשקים
interface CallResponse {
id: number;
lang: string;
menu_id: number;
status: string;
type: string;
scheduled_at?: string;
recording_permitted: boolean;
survey_enabled: boolean;
created_at: string;
menus: {
id: number;
name: string;
}[];
}
דוגמה לשימוש
try {
const response = await client.cancelCall(1234)
} catch (error) {
// handle error
}
getTimeSlots
אחזור של משבצות זמן פנויות לשיחות מתוזמנות בתפריט נתון. כשמפעילים את הפונקציה עם אובייקט האפשרויות GetTimeSlotsRequest, אפשר לקבוע מחדש שיחה קיימת באמצעות rescheduleCallId. החתימה של המחרוזת lang שהוצאה משימוש עדיין נתמכת ומנתבת לאותה נקודת קצה, ורק lang מאוכלס. הפונקציה מחזירה מערך של מחרוזות של משבצות זמן.
חתימת השיטה
getTimeSlots(menuId: number | string, options?: GetTimeSlotsRequest): Promise<string[]>
הערך המוחזר
הפונקציה מחזירה מערך של מחרוזות (משבצות זמן).
ממשקים
interface GetTimeSlotsRequest {
lang?: string;
rescheduleCallId?: number; // ID of an existing call being rescheduled
}
דוגמה לשימוש
// New options-based signature (recommended)
try {
const slots = await client.getTimeSlots(123, {
lang: 'en',
rescheduleCallId: 98765, // optional: pass when rescheduling an existing call
})
} catch (error) {
// handle error
}
// Deprecated signature (still supported)
try {
const slots = await client.getTimeSlots(123, 'en')
} catch (error) {
// handle error
}
fetchTimeSlotAvailability
השיטה הזו בודקת אם יש משבצות זמן זמינות לתפריט נתון, בלי לאחזר את הרשימה המלאה של משבצות הזמן. הוא שימושי להצגה מותנית של אפשרויות תזמון בממשק המשתמש.
היקף
fetchTimeSlotAvailability רלוונטי רק לפגישות שנקבעו לשיחת טלפון (שיחה חוזרת). הוא לא מחזיר מידע על ערוצי צ'אט, אימייל או שיחה מיידית. התפריט שסופק צריך להיות מוגדר לתמיכה בשיחות טלפון מתוזמנות, עם שעות פעילות מוגדרות ולפחות נציג אחד בתור לתפריט הזה.
תרחישים נפוצים לדוגמה:
הצגת קריאה לפעולה של "קביעת שיחה חוזרת" רק כשיש משבצות זמן פנויות.
העברה לתהליך חלופי (למשל, אימייל, הודעה מחוץ לשעות הפעילות) כשאין משבצות פנויות, בלי לשלם על שיחת
getTimeSlotsמלאה.בדיקה מקדימה של פעולת תזמון מחדש לפני קריאה ל-
getTimeSlotsעםrescheduleCallId.
חתימת השיטה
fetchTimeSlotAvailability(menuId: number | string, lang?: string): Promise<boolean>
הערך המוחזר
הפונקציה מחזירה את הערך true אם יש משבצות זמן זמינות, ואת הערך false אם אין.
דוגמה לשימוש
try {
const isAvailable = await client.fetchTimeSlotAvailability(123, 'en')
if (isAvailable) {
// Show scheduling UI
}
} catch (error) {
// handle error
}
צ'אטים
| שם | תיאור |
|---|---|
createChat |
יצירת שיחה חדשה. |
loadChat |
אחזור של שיחה לפי מזהה השיחה שצוין. |
loadOngoingChat |
ניסיונות לטעון שיחת צ'אט פעילה. |
resumeChat |
המשך שיחה שנסגרה עם מזהה שיחה נתון. |
finishChat |
הגדרת הסטטוס של הצ'אט הנוכחי כ"הסתיים". |
destroyChat |
מפעיל את finishChat ומוחק את הצ'אט הנוכחי |
fetchMessages |
אחזור של הודעות קודמות – הפעולה מחזירה את הערך [] אם היא נכשלת. |
sendTextMessage |
שליחת הודעת SMS. |
sendFileMessage |
שליחת הודעה עם קובץ – הפונקציה מחזירה את הערך -1 אם ההעלאה נכשלת. |
sendPreviewMessage |
שליחת הודעה לתצוגה מקדימה. |
getChatDeflection |
אחזור ההגדרות של הפניית הצ'אט. |
sendChatTranscripts |
שליחת תמליל של הצ'אט לכתובות האימייל שצוינו. |
downloadChatTranscript |
הורדת תמליל הצ'אט. |
getPdfStatus |
מקבלת את סטטוס ה-PDF של תמליל. |
getChatSurvey |
מקבל את השאלות בסקר של הצ'אט. |
sendChatSurvey |
שליחת משוב משתמשים מהסקר. |
sendChatRate |
שליחת משוב על הצ'אט. |
escalateChat |
מעביר את הצ'אט מנציג וירטואלי לנציג אנושי. |
trackChatEscalation |
מעקב אחרי אירוע של העברת צ'אט לטיפול ברמה גבוהה יותר. |
trackChatEndUserEvent |
מעקב אחרי אירוע של משתמש קצה. |
getChatHistory |
אחזור ההיסטוריה של צ'אט נתון. |
שיחת עדכון בצ'אט
הודעת הצ'ק-אין מבקשת מהלקוח לאשר שהוא מוכן לפני שהוא מתחבר לנציג. בקטע הזה מתוארות השיטות של Headless Web SDK להטמעת החוויה הזו. במאמר צ'ק-אין ב-Chat מוסבר מה זה צ'ק-אין, איך מפעילים ומגדירים אותו (זמן המתנה, זמן קצוב לתפוגה, מיקום בתור, התנהגות בהצטרפות מחדש) ואיך מפיקים דוחות.
| שם | תיאור |
|---|---|
checkIn |
שליחת אות לשרת כדי לאשר שהמשתמש נמצא בתור. |
exitCheckIn |
הסרת המשתמש מתור הצ'ק-אין. |
notifyCheckInState |
הפונקציה מודיעה לקצה העורפי על מצב החשיפה של חלון העזר של הצ'ק-אין. |
rejoinChat |
המשתמש מוחזר לתור אם הוא לא מאשר את הצ'ק-אין. |
trackCheckInEvent |
שליחת אותות לקצה העורפי כשאירועי צ'ק-אין מופעלים על ידי ממשק המשתמש. |
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
שליחת אות לשרת שהלקוח בחר לעזוב את תור הצ'ק-אין.
מעדכן את check_in_status באופן מקומי. אחרי שמפעילים את ה-method הזו, הלקוח לא יקבל חיבור לנציג במחזור הצ'ק-אין הנוכחי.
חתימת השיטה
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',
}
דוגמה לשימוש
try {
const response = await client.exitCheckIn()
} catch (error) {
// handle error
}
notifyCheckInState
השרת מקבל מידע על מצב החשיפה הנוכחי של המודל של הצ'ק-אין – אם הווידג'ט ממוזער או שהכרטיסייה בדפדפן לא פעילה. השרת משתמש בנתון הזה כדי לקבל החלטות לגבי תזמון הצ'ק-אין. צריך להפעיל את הפונקציה הזו בכל פעם שהווידג'ט מוצג או מוסתר, או כשהמיקוד של מקש Tab משתנה בזמן שהאירוע chat.checkInRequested פעיל.
חתימת השיטה
notifyCheckInState(data: CheckInVisibilityStateRequest): Promise<void>
ממשקים
interface CheckInVisibilityStateRequest {
widget_minimized?: boolean;
tab_inactive?: boolean;
}
דוגמה לשימוש
try {
const visibilityState = {
widget_minimized: true,
tab_inactive: false,
}
await client.notifyCheckInState(visibilityState)
} catch (error) {
// handle error
}
rejoinChat
הלקוח חוזר לתור אם הוא לא אישר את הצ'ק-אין בפרק הזמן שהוקצב. מעדכן את check_in_status באופן מקומי. צריך להשתמש בה בתגובה לאירוע chat.checkInTimedOut אם הצרכן עדיין רוצה להתחבר.
חתימת השיטה
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
הודעה לשרת שהמודל של הצ'ק-אין הוצג לצרכן.
צריך להפעיל את הפונקציה הזו פעם אחת, מיד אחרי שמציגים את ממשק המשתמש של הצ'ק-אין בתגובה ל-chat.checkInRequested. השרת משתמש בנתונים האלה לניתוח תפעולי של שיעורי ההצגה של הצ'ק-אין. הקריאה ממתינה באופן פנימי ומחזירה Promise<void> שיכול להידחות, לכן צריך לעטוף אותה ב-try/catch (כמו בדוגמה הבאה).
חתימת השיטה
trackCheckInEvent(): Promise<void>
דוגמה לשימוש
try {
await client.trackCheckInEvent()
} catch (error) {
// handle error
}
getMessageAttachment
אחזור קובץ מצורף שעומד בדרישות ומשויך להודעת צ'אט ספציפית. האפליקציה מאחזרת רק אם ההודעה נשלחה על ידי מישהו שהוא לא משתמש קצה ($userType !== 'end_user') ואם סוג הקובץ המצורף נתמך (תמונה, סרטון, אודיו, מסמך). הפונקציה מחזירה את הערך null לכל הודעה שלא עומדת בשני התנאים, ולא רק להודעות בלי media_id. שומר את הקובץ שאוחזר במטמון המדיה המקומי של הצ'אט אחרי האחזור.
חתימת השיטה
getMessageAttachment(message: MessageResponse): Promise<File | null>
הערך המוחזר
הפונקציה מחזירה אובייקט File אם הוא נמצא, או null אם הוא לא רלוונטי.
דוגמה לשימוש
try {
const file = await client.getMessageAttachment(message)
} catch (error) {
// handle error
}
createChat
יצירת סשן צ'אט חדש לתפריט הנתון. אפשר גם לציין את השפה, הודעת פתיחה, מזהה טריגר, מזהה כרטיס ונתונים בהתאמה אישית שיישלחו עם הצ'אט.
אחרי הקריאה הראשונית ל-API, ה-method שולחת סקר לשרת עד ש-provider_channel_id הופך לזמין או עד שהצ'אט מבוטל או מסתיים. אם ערוץ של ספק הופך לזמין, השיטה יוזמת את החיבור לספק בזמן אמת. יכול להיות שהחיבור עדיין לא יושלם כשההבטחה תתממש – צריך להאזין לאירוע chat.connectedMessages כדי לדעת מתי החיבור ואחזור ההודעה הראשונית הושלמו.
חתימת השיטה
createChat(menuId: number | string, data: ChatRequest): Promise<Chat>
הערך המוחזר
הפונקציה מחזירה מופע של Chat.
ממשקים
interface ChatRequest {
lang?: string;
trigger_id?: string;
ticket_id?: string;
email?: string;
greeting?: string;
cobrowsable?: boolean;
custom_data?: {
signed?: string;
unsigned?: Record<string, any>;
};
}
דוגמה לשימוש
try {
const chat = await client.createChat(123, { lang: 'en' })
} catch (error) {
// handle error
}
loadChat
אחזור של שיחת צ'אט קיימת לפי המזהה שלה.
אם הצ'אט שנטען כבר לא פעיל, השיטה מנקה את מזהה הצ'אט השמור ואת ה-nonce של הגלישה המשותפת מהאחסון המקומי. הוא עושה את זה גם במקרה של שגיאה, כך שהמתקשרים לא צריכים לנקות את האחסון באופן ידני אחרי שהטעינה נכשלה.
חתימת השיטה
loadChat(chatId: number | string): Promise<Chat>
הערך המוחזר
הפונקציה מחזירה מופע של Chat.
דוגמה לשימוש
try {
const chat = await client.loadChat(1234)
} catch (error) {
// handle error
}
loadOngoingChat
מנסה לטעון את שיחת הצ'אט הפעילה, אם יש כזו. אם לא נמצא צ'אט פעיל, הפונקציה מחזירה את הערך null.
חתימת השיטה
loadOngoingChat(): Promise<Chat | null>
הערך המוחזר
הפונקציה מחזירה מופע של Chat אם נמצאה שיחה פעילה, או ערך null אם אין שיחה פעילה. אם השיחה לא נמשכת, ערכי האחסון יימחקו.
דוגמה לשימוש
try {
const chat = await client.loadOngoingChat()
} catch (error) {
// handle error
}
resumeChat
הפונקציה הזו מחדשת שיחה שנסגרה לפי המזהה שלה, ומאפשרת ללקוח להמשיך את השיחה.
אם ללקוח כבר יש הפניה לצ'אט עם אותו מזהה, השיטה מקצרת את התהליך: היא מתקנת את הסטטוס ל-queued במופע הקיים במקום לאחזר מופע חדש. אם המזהים לא תואמים, נוצר מופע חדש של Chat והוא נרשם.
חתימת השיטה
resumeChat(chatId: number | string): Promise<Chat>
הערך המוחזר
הפונקציה מחזירה מופע של Chat.
דוגמה לשימוש
try {
const chat = await client.resumeChat(1234)
} catch (error) {
// handle error
}
finishChat
הפרמטר הזה מגדיר את הסטטוס של שיחת הצ'אט הנוכחית כ"הסתיימה". הפעולה הזו מסיימת את הצ'אט מהצד של הלקוח.
אם הצ'אט מחובר לספק בזמן אמת וגם במצב סיום אחרי ה-PATCH, השיטה גם מתנתקת מהספק. אם המטרה היא רק לסיים את הצ'אט בצורה חלקה, לא צריך להפעיל את destroyChat.
חתימת השיטה
finishChat(): Promise<void>
דוגמה לשימוש
try {
await client.finishChat()
} catch (error) {
// handle error
}
destroyChat
מסיים ומשמיד את סשן הצ'אט הנוכחי, ומנקה את כל המצב הפנימי.
הפונקציה הזו קוראת ל-finishChat באופן פנימי, ואז מוחקת את המופע של הצ'אט. לפני סיום הצ'אט, ה-method משתיקה אותו (מבטלת אירועים נכנסים בזמן אמת) כדי למנוע עיבוד של הודעות במהלך הפירוק. מנקה את המזהה הפנימי של הכלי למעקב אחרי שהצ'אט נסגר.
חתימת השיטה
destroyChat(): Promise<void>
דוגמה לשימוש
try {
await client.destroyChat()
} catch (error) {
// handle error
}
fetchMessages
אחזור של היסטוריית ההודעות של הסשן הנוכחי בצ'אט מספק ה-real-time. צריך להפעיל אותה אחרי שהצ'אט מחובר. אם מפעילים אותה לפני שהצ'אט מחובר, היא מחזירה מערך ריק במקום להפעיל את הפונקציה. הוא מאחזר באופן אוטומטי כתובות URL של מסמכים לכל ההודעות מסוג document וממזג אותן בתשובה. בהודעות מסוג server_message, מאחזר את תוכן ההודעה של הנציג הווירטואלי של המשימה ומעצב אותו בתוך השורה. אם הפעולה נכשלת, הפונקציה מחזירה מערך ריק במקום להציג שגיאה.
חתימת השיטה
fetchMessages(): Promise<MessageResponse[]>
הערך המוחזר
מחזירה מערך של MessageResponse. אם הפעולה נכשלת, הפונקציה מחזירה מערך ריק.
ממשקים
interface MessageResponse {
$index: number;
$sid: string;
$timestamp: Date;
$userType: string;
$userId: number;
type: string;
content?: string;
event?: string;
file?: File;
media_id?: number;
groupMessageId?: number;
document?: {
url: string;
};
unredacted?: string;
buttons?: {
title: string;
}[];
message?: { messages: string[], type };
signature?: string,
form?: {
id: number,
form_type: string,
name: string,
title: string,
subtitle: string,
external_form_id: string,
smart_action_id: number,
image: string
}
// allow extra parameters
[key: string]: unknown;
}
דוגמה לשימוש
const messages = await client.fetchMessages()
sendTextMessage
שליחת הודעת טקסט בשיחת הצ'אט הנוכחית.
השיטה מסירה תוכן זדוני או רגיש מהתוכן הגולמי לפני השליחה, ומחזירה מוקדם (ללא פעולה) אם התוצאה ריקה. אם הצ'אט נמצא בתהליך של נציג וירטואלי למשימות (inTask), ההודעה מנותבת דרך נקודת הקצה של הנציג הווירטואלי למשימות במקום דרך הערוץ הרגיל. אם הצינזור בצד השרת מופעל, ההודעה נשלחת באמצעות נקודת קצה (endpoint) של השרת ולא ישירות דרך הספק בזמן אמת.
חתימת השיטה
sendTextMessage(rawContent: string): Promise<void>
דוגמה לשימוש
try {
await client.sendTextMessage("hello world")
} catch (error) {
// handle error
}
sendFileMessage
העלאת קובץ לסשן הצ'אט הנוכחי בתהליך של שלושה שלבים:
קבלת כתובת URL חתומה מראש לאחסון בענן מהשרת, העלאת הקובץ
ישירות לכתובת ה-URL הזו, ואז אישור ההעלאה בחזרה לשרת. נתיב ההעלאה נקבע אוטומטית לפי סוג ה-MIME של הקובץ: תמונות נשלחות כהודעות תמונה וסרטונים כהודעות וידאו. סוגי קבצים אחרים מנותבים לפי סוג ה-MIME שלהם. הפונקציה מחזירה את מזהה ההודעה אם היא נשלחה בהצלחה, או -1 אם היא נכשלה.
חתימת השיטה
sendFileMessage(file: File): Promise<number>
הערך המוחזר
הפונקציה מחזירה את מזהה ההודעה או את הערך -1 אם ההעלאה נכשלה. עם זאת, שליחת ההודעה הבאה עדיין יכולה להידחות (לדוגמה, ChatEndedError), לכן צריך לעטוף את הקריאה ב-try/catch בנוסף לבדיקה של -1.
דוגמה לשימוש
const input = document.querySelector('input[type="file"]')
const file = input.files[0]
try {
const id = await client.sendFileMessage(file)
if (id === -1) {
// handle upload failure
}
} catch (error) {
// handle message-send failure
}
sendPreviewMessage
שליחת הודעה מקדימה בשיחת הצ'אט הנוכחית. הודעות תצוגה מקדימה משמשות בדרך כלל כדי להראות לנציג מה הצרכן מקליד לפני שההודעה נשלחת. אם גם redaction_enabled וגם agent_incoming_ha_enabled מוגדרים כ-true במצב הצ'אט, התצוגה המקדימה נשלחת דרך נקודת קצה של השרת (POST /chats/{id}/redact_messages) ולא דרך הערוץ של ספק הנתונים בזמן אמת.
חתימת השיטה
sendPreviewMessage(content: string): Promise<void>
דוגמה לשימוש
try {
await client.sendPreviewMessage('preview content')
} catch (error) {
// handle error
}
getChatDeflection
מאחזר את הגדרת הסטת הצ'אט לסשן הצ'אט הנוכחי, כולל אם ההסטה מופעלת, סף זמן ההמתנה ואפשרויות ההסטה הזמינות.
הפונקציה מחזירה null אם לא הופעלה הפניית שיחות בצ'אט (השדה enabled בתגובת השרת הוא falsy). לפני קריאת התגובה, צריך לבדוק אם הערך הוא null.
חתימת השיטה
getChatDeflection(): Promise<ChatDeflectionResponse | null>
הערך המוחזר
הפונקציה מחזירה אובייקט ChatDeflectionResponse או null אם לא הופעלה הפניית משתמשים לצ'אט.
ממשקים
interface ChatDeflectionResponse {
enabled: boolean;
threshold: number;
email: boolean;
keep_waiting: boolean;
external_deflection_links: {
enabled: boolean;
ids: number[];
};
}
דוגמה לשימוש
try {
const deflection = await client.getChatDeflection()
} catch (error) {
// handle error
}
sendChatTranscripts
שליחת התמליל של הצ'אט הנוכחי לכתובות האימייל שצוינו.
חתימת השיטה
sendChatTranscripts(emails: string[]): Promise<void>
דוגמה לשימוש
try {
await client.sendChatTranscripts([
"name1@example.com",
"name2@example.com",
])
} catch (error) {
// handle error
}
downloadChatTranscript
הורדה של תמליל השיחה הנוכחית כקובץ PDF. מחזירה אובייקט תמליל שאפשר להשתמש בו עם getPdfStatus כדי לעקוב אחרי התקדמות היצירה.
חתימת השיטה
downloadChatTranscript(): Promise<GenerateTranscriptResponse>
הערך המוחזר
מחזירה את אובייקט התמליל.
ממשקים
interface GenerateTranscriptResponse {
status: string;
chat_transcript_id: number;
}
דוגמה לשימוש
try {
const resp = await client.downloadChatTranscript()
} catch (error) {
// handle error
}
getPdfStatus
בודק את סטטוס היצירה של קובץ PDF של תמליל צ'אט שהתבקש בעבר. משתמשים בערך chat_transcript_id שמוחזר על ידי downloadChatTranscript כדי לבדוק אם הפעולה הושלמה.
חתימת השיטה
getPdfStatus(id: number): Promise<RequestReturn>
הערך המוחזר
מחזירה את אובייקט הסטטוס של קובץ ה-PDF.
ממשקים
interface RequestReturn {
//...
headers,
data: PdfStatusResponse,
}
interface PdfStatusResponse {
status: string;
body?: File;
failed_reason?: string;
}
דוגמה לשימוש
const response = await client.getPdfStatus(pdfId)
// check header for status
const status = response.headers['x-transcript-status'];
// otherwise use status on data
const data = response.data
console.log(data.status)
getChatSurvey
אחזור של שאלות הסקר שאחרי הצ'אט שהוגדרו לסשן הצ'אט הנוכחי. הסקר מוצג לצרכנים אחרי שהצ'אט מסתיים.
חתימת השיטה
getChatSurvey(): Promise<ChatSurveyResponse | null>
הערך המוחזר
הפונקציה מחזירה אובייקט ChatSurveyResponse או ערך null.
ממשקים
interface QuestionItem {
id: number;
type: "csat" | "star" | "free-form" | "scale" | "enumeration";
display_text: string;
name?: string;
is_csat?: boolean;
position?: number;
valid_answers?: {
key: string;
value: string;
}[]
}
interface ChatSurveyResponse {
id?: number;
lang?: string;
sign_off_display_text: string;
questions: QuestionItem[];
}
דוגמה לשימוש
try {
const data = await client.getChatSurvey()
if (data) {
console.log(data.questions)
}
} catch (error) {
// handle error
}
sendChatSurvey
שליחת התשובות של הצרכן לסקר שאחרי הצ'אט. כל תשובה מקושרת למזהה השאלה.
חתימת השיטה
sendChatSurvey(answers: SurveyAnswers): Promise<void>
ממשקים
interface SurveyAnswers {
[question_id: string]: number | string;
}
דוגמה לשימוש
try {
await client.sendChatSurvey({
123: "a",
231: "b",
})
} catch (error) {
// handle error
}
sendChatRate
שליחת הדירוג והמשוב האופציונלי של הצרכן לגבי סשן הצ'אט. משמש כשסוג המשוב אחרי הצ'אט הוא דירוג ולא סקר מלא.
חתימת השיטה
sendChatRate(data: RateRequest): Promise<void>
ממשקים
interface RateRequest {
rating: number;
feedback?: string;
}
דוגמה לשימוש
try {
await client.sendChatRate({
rating: 5,
feedback: "Very good service",
})
} catch (error) {
// handle error
}
escalateChat
העברת הצ'אט הנוכחי מנציג וירטואלי לנציג אנושי.
חתימת השיטה
escalateChat(data?: EscalateRequest): Promise<void>
ממשקים
interface EscalateRequest {
force_escalate: boolean;
menu_id: number;
lang: string;
}
דוגמה לשימוש
try {
// Escalate to a specific menu in a given language
await client.escalateChat({
force_escalate: true,
menu_id: 123,
lang: 'en',
})
} catch (error) {
// handle error
}
// Or, escalate without arguments to use defaults
try {
await client.escalateChat()
} catch (error) {
// handle error
}
trackChatEscalation
מעקב אחרי אירוע של העברת צ'אט לטיפול ברמה גבוהה יותר, תיעוד של מזהה ההעברה והערוץ שאליו הועבר הצ'אט.
חתימת השיטה
trackChatEscalation(escalationId: number, channel: string): Promise<void>
דוגמה לשימוש
try {
await client.trackChatEscalation(escalationId, channel)
} catch (error) {
// handle error
}
trackChatEndUserEvent
מעקב אחרי אירוע מותאם אישית של משתמש קצה במהלך הסשן בצ'אט, שאפשר להשתמש בו לניתוח נתונים או להפעלת תהליכי עבודה בקצה העורפי. אם האובייקט data לא כולל את end_user_name ויש שם זמין בפרופיל המשתמש המאומת, הוא מאוכלס באופן אוטומטי לפני שהבקשה נשלחת.
חתימת השיטה
trackChatEndUserEvent(data: ChatEndUserEventRequest): Promise<void>
הערך המוחזר
מחזירה void.
ממשקים
interface ChatEndUserEventRequest {
event: {
name: string;
payload: Record<string, string>;
};
end_user_name?: string;
}
דוגמה לשימוש
try {
await client.trackChatEndUserEvent({
event: {
name: 'add_to_cart',
payload: {
product_id: 'sku-1234',
quantity: '2',
},
},
// end_user_name is auto-populated from the authenticated user
// profile if omitted
})
} catch (error) {
// handle error
}
getChatHistory
אחזור של היסטוריית הצ'אט של הצרכן, כולל תוכן ההודעות והמטא-נתונים. התוצאות מחולקות לדפים. בדף 1 מוחזרות עד 2 שיחות, ובדפים הבאים מוחזרת שיחה אחת בכל דף. העימוד האסימטרי הזה הוא מכוון ומאפשר לקריאה הראשונה לטעון מראש את ההקשר של ההיסטוריה הסמוכה.
חתימת השיטה
getChatHistory(page?: number): Promise<ChatHistoryResponse | null>
הערך המוחזר
מחזירה אובייקט ChatHistoryResponse או null.
ממשקים
interface ChatHistoryItem {
comm_id: number;
assigned_at: string;
comm_type: string;
timezone: string;
entries: MessageResponse[];
[key: string]: unknown;
}
interface ChatHistoryResponse {
chats: ChatHistoryItem[];
missing_chat_ids: number[];
pagination: {
next_page: number;
per_page: number;
}
}
דוגמה לשימוש
try {
const data = await client.getChatHistory(1) // page defaults to 1 if omitted
console.log(data)
} catch (error) {
console.log(error)
}
אימיילים
| שם | תיאור |
|---|---|
createEmail |
שליחת אימייל לערוץ האימייל של מזהה תפריט נתון. |
getProhibitedFileTypes |
לבדוק אילו סוגי קבצים אסור לצרף לאימיילים. |
createEmail
שליחת הודעת אימייל לערוץ האימייל שמשויך לתפריט הנתון. הצרכן יכול לכלול שם, כתובת אימייל, גוף הודעה וקבצים מצורפים אופציונליים.
חתימת השיטה
createEmail(menuId: number | string, data: EmailRequest): Promise<EmailResponse>
הערך המוחזר
הפונקציה מחזירה אובייקט EmailResponse אם הפעולה נכשלה או הצליחה.
ממשקים
interface EmailRequest {
name?: string;
email: string;
content: string;
lang?: string;
files?: File[];
recaptcha?: string;
}
interface EmailResponse {
id: number;
type: string;
status: string;
fail_reason: string;
attachment_count: number;
}
דוגמה לשימוש
try {
await client.createEmail(123, {
lang: "en",
name: "User name",
email: "name@example.com",
content: "description of the question",
files: input.files,
})
} catch (error) {
console.log(error.message)
}
getProhibitedFileTypes
אחזור רשימת סוגי הקבצים שאסור לצרף לאימיילים, כפי שהוגדרו על ידי האדמין.
חתימת השיטה
getProhibitedFileTypes(): Promise<FileTypeItem[]>
הערך המוחזר
מחזירה מערך של FileTypeItem.
ממשקים
interface FileTypeItem {
extension: string;
description: string;
}
דוגמה לשימוש
try {
const types = await client.getProhibitedFileTypes()
} catch (error) {
// handle error
}
שיתוף המסך
| שם | תיאור |
|---|---|
createCobrowseCode |
יצירת קוד לגלישה משותפת. |
startCobrowse |
לבקש סשן גלישה משותפת. |
restoreCobrowseSession |
משחזר סשן גלישה משותפת אחרי שפותחים מחדש את חלון הדפדפן. |
createCobrowseCode
יוצרת קוד ייחודי לסשן גלישה משותפת (שיתוף מסך) שאפשר לשתף עם נציג כדי להתחיל סשן. מפעיל את לקוח הגלישה המשותפת אם הוא עדיין לא הופעל. עושה שימוש חוזר בכל צופן חד-פעמי (nonce) קיים מהאחסון במקום ליצור מספר חדש בכל קריאה, כך שאפשר לאחזר את אותו קוד סשן בטעינות דפים שונות.
חתימת השיטה
createCobrowseCode(lang?: string, customData?: Record<string, string>): Promise<string>
הערך המוחזר
מחזירה מחרוזת של קוד גלישה משותפת או מחרוזת ריקה ('') במקרה של כישלון.
דוגמה לשימוש
const code = await client.createCobrowseCode()
// 123456
startCobrowse
בקשה להתחלת סשן של גלישה משותפת (שיתוף מסך) מהצד של משתמש הקצה במהלך צ'אט פעיל.
חתימת השיטה
startCobrowse(from?: string): Promise<void>
דוגמה לשימוש
try {
await client.startCobrowse()
} catch (error) {
// handle error
}
restoreCobrowseSession
ניסיונות לשחזר סשן גלישה משותפת שהיה פעיל בעבר אחרי שחלון הדפדפן נפתח מחדש או שהווידג'ט נטען מחדש.
חתימת השיטה
restoreCobrowseSession(): Promise<void>
הערך המוחזר
האפליקציה מחזירה את הערך Promise<void>. השיטה הזו לא מבצעת פעולה (מחזירה מיד ללא שגיאה) אם הגלישה המשותפת לא מופעלת באפשרויות הלקוח או אם אין סשן קודם של גלישה משותפת באחסון.
דוגמה לשימוש
// Safe to call unconditionally - will no-op if cobrowse is not enabled
// or if no previous session exists
await client.restoreCobrowseSession()
נציג וירטואלי אחרי סשן
| שם | תיאור |
|---|---|
updatePostSession |
הגדרת הסטטוס של שיחת צ'אט פעילה אחרי שהיא מסתיימת. |
updatePostSession
השיטה הזו משמשת לעדכון הסטטוס של הנציג הווירטואלי אחרי הסשן בצ'אט שמתנהל.
מעדכן את הסטטוס של הנציג הווירטואלי אחרי הסשן של הצ'אט הפעיל. אפשר להשתמש בזה כדי לאותת על מוכנות, התקדמות או השלמה של תהליך של נציג וירטואלי אחרי סשן.
הפונקציה מחזירה מיד ערך של no-op אם
postSessionStatusהואFINISHEDאוWAITING– המעברים האלה מטופלים באופן פנימי.יש לו לוגיקה פנימית של ניסיון חוזר, במיוחד לסטטוס
IN_PROGRESSבתגובה של400, כך שהמתקשרים לא צריכים להטמיע ניסיון חוזר משלהם במקרה כזה.
חתימת השיטה
updatePostSession(postSessionStatus: PostSessionStatus, optInSelection?: boolean): Promise<void>
ממשקים
enum PostSessionStatus {
READY = 'ready',
IN_PROGRESS = 'in_progress',
WAITING = 'waiting',
FINISHED = 'finished',
}
דוגמה לשימוש
try {
// Without opt-in selection
await client.updatePostSession(PostSessionStatus.READY)
// With opt-in selection
await client.updatePostSession(PostSessionStatus.READY, true)
} catch (error) {
// handle error (e.g., show a notification to the user)
}
ממשק קשור
interface ChatResponse {
//...
post_session_required?: boolean;
post_session_opt_in_required?: boolean;
post_session_transfer_status?: string;
}
post_session_required– נדרש סשן לאחר שיחת צ'אט.
post_session_opt_in_required– האם ההצטרפות מופעלת.
post_session_transfer_status– אחד מהערכים של PostSessionStatus.
ניפוי באגים
| שם | תיאור |
|---|---|
getLogs |
אחזור של יומני ניפוי באגים פנימיים מה-SDK. |
printLogs |
הדפסת יומני ניפוי באגים פנימיים במסוף הדפדפן. |
getLogs
מאחזר את יומני ניפוי הבאגים הפנימיים שנאספו על ידי ה-SDK, כולל יומנים ברמת הגשר וברמת הבסיס. המידע הזה שימושי לפתרון בעיות בשילוב.
חתימת השיטה
getLogs(): Promise<{ bridgeLogs: LogHistoryData[], rootLogs: LogHistoryData[] }>
הערך המוחזר
הפונקציה מחזירה אובייקט שמכיל שני מערכים של LogHistoryData.
ממשקים
interface LogHistoryData {
date: string;
channel: string;
level: string;
args: any[];
}
רמת הפירוט
כל רשומה של LogHistoryData מתעדת אירוע יומן אחד:
date– חותמת זמן של האירוע בפורמט ISO 8601.
channel– מודול ה-SDK שהפיק את האירוע (למשל, לקוח ברמה העליונה, שכבת צ'אט, שכבת גלישה משותפת, ספק בזמן אמת).
level– רמת החומרה של היומן:debug, info, warnאוerror.args– הארגומנטים הגולמיים שתועדו על ידי קריאת היומן.
ערך לדוגמה:
{
"date": "2026-05-08T14:02:13.412Z",
"channel": "Provider",
"level": "info",
"args": ["chat connected", { "chatId": 4421 }]
}
קבוצת הערוצים המדויקת ותוכן ההודעות עשויים להשתנות בין גרסאות ה-SDK. התייחסו ליומנים ככלי עזר לניפוי באגים, ולא כיעד ניתוח יציב – אל תבנו לוגיקת ייצור שתלויה בשמות של ערוצים ספציפיים או במחרוזות של הודעות.
היקף ושימוש מומלץ
getLogs מחזיר רשומות פנימיות של ה-SDK שנועדו לעזור באבחון בעיות בשילוב עם ה-SDK עצמו לאינטרנט ללא ממשק משתמש. השימוש העיקרי בו הוא אבחון תמיכה: כשמשתמש קצה מדווח על בעיה, האפליקציה יכולה לתעד את התוצאה של getLogs ולצרף אותה לכרטיס התמיכה שנשלח אל פלטפורמת CCAI.
היומנים שמוחזרים לא כוללים:
נתוני הטלמטריה של האפליקציה, האירועים העסקיים או הניווט של המשתמשים בדף המארח.
כשלים ברשת שהדפדפן לא מציג ל-SDK (למשל, שגיאות CORS, תוכן מעורב או שגיאות אישור).
מעקב אחר בקשות בצד השרת או פרטים של קצה העורפי מעבר לסטטוס ה-HTTP שמוחזר ל-SDK.
getLogs לא מחליף את כלי הניטור שלכם. מומלץ לשלב את ה-SDK עם:
כלי למעקב אחר שגיאות/RUM בצד הדפדפן (Sentry, Datadog Browser RUM, New Relic Browser או כלי דומה).
רישום ביומן בצד השרת בנקודת הקצה לאימות (
authenticateהקריאה החוזרת (callback) שה-SDK מבצע).מאזינים ברמת האפליקציה ב-
chat.disconnected, ב-chat.timeoutוב-chat.ended, אם אתם צריכים להעביר אותות של מחזור החיים של הצ'אט לצינור עיבוד הנתונים של הטלמטריה שלכם.
דוגמה לשימוש
try {
const { bridgeLogs, rootLogs } = await client.getLogs()
console.log('Bridge logs:', bridgeLogs)
console.log('Root logs:', rootLogs)
} catch (error) {
// handle error
}
printLogs
הדפסת כל יומני ניפוי הבאגים הפנימיים ישירות במסוף הדפדפן. זוהי שיטה נוחה שמפעילה את getLogs() באופן פנימי ומעצבת את הפלט.
חתימת השיטה
printLogs(): Promise<void>
דוגמה לשימוש
try {
await client.printLogs()
} catch (error) {
// handle error
}
שונות
| שם | תיאור |
|---|---|
runTrigger |
בודק אם יש טריגרים יזומים שצריך להפעיל. |
getAfterHourMessage |
מקבלים את ההודעה על הפנייה לאחר שעות הפעילות. |
runTrigger
המערכת עוברת על הטריגרים הפרואקטיביים שהוגדרו ומפעילה את פונקציית ה-callback שסופקה לכל טריגר שהתנאים שלו מתקיימים (מילות מפתח בכתובת URL, מספר הביקורים בדף, משך השהייה, סוג המבקר).
חתימת השיטה
runTrigger(cb: (trigger: TriggerItem) => void): Promise<void>
ממשקים
interface TriggerItem {
id: number;
menu_id: number;
messages: TriggerMessage[];
keywords_included?: string[];
keywords_included_or?: string[][];
keywords_excluded?: string[];
keywords_excluded_or?: string[][];
lang?: string;
page_visit_count: number;
stay_time: number;
visitor_type: string;
}
interface TriggerMessage {
lang: string;
text: string;
}
דוגמה לשימוש
await client.runTrigger((trigger: TriggerItem) => {
// code to run for given trigger
})
getAfterHourMessage
הפונקציה מחזירה את הודעת ההפניה שהוגדרה להצגה כשהערוץ המבוקש לא פועל.
חתימת השיטה
חתימת ה-method היא:
getAfterHourMessage(lang?: string): Promise<string>
הערך המוחזר
מחזירה מחרוזת שמכילה הודעה שהוגדרה.
דוגמה לשימוש
try {
const message: string = await client.getAfterHourMessage()
} catch (error) {
// handle error
}