אירועים ב-SDK לאתרים ללא ממשק משתמש

ערכת ה-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
}