Peristiwa SDK web tanpa UI

Headless web SDK menyediakan peristiwa yang dapat Anda dengarkan untuk menangani tindakan atau pembaruan tertentu dalam aplikasi Anda. Anda dapat menambahkan dan menghapus pemroses peristiwa menggunakan metode .on dan .off.

const handleReady = () => {
  console.log("**** client is ready")
}

client.on("ready", handleReady)

// client.off("ready", handleReady)

Peristiwa umum

Berikut adalah peristiwa umum untuk SDK

ready

Dipancarkan saat klien siap untuk berkomunikasi.

client.on("ready", () => {
})

authenticated

Dipancarkan saat klien telah diautentikasi dengan token pengguna.

client.on("authenticated", () => {
})

Peristiwa chat

Berikut adalah peristiwa khusus sesi chat.

chat.ongoing

Dipancarkan saat ada chat yang sedang berlangsung.

client.on("chat.ongoing", (chat) => {
  console.log(chat)
})

chat.updated

Dipancarkan saat instance chat telah diperbarui.

client.on("chat.updated", (chat) => {
  // the `chat` property on `client` has updated
  console.log(chat)
})

chat.message

Dipancarkan saat ada pesan baru.

client.on("chat.message", message => {
  console.log(message)
})

Jenis pesan:

interface MessageResponse {
  $index: number;
  $sid: string;
  $timestamp: Date;
  $userType: string;
  $userId: number;
  type: string;
  content?: string;
  event?: string;
  file?: File;

  // extra parameters

}

chat.memberJoined

Dipancarkan saat anggota baru bergabung dalam percakapan.

client.on("chat.memberJoined", (identity) => {
  console.log(identity)
})

chat.memberLeft

Dipancarkan saat anggota keluar dari percakapan.

client.on("chat.memberLeft", (identity) => {
  console.log(identity)
})

chat.typingStarted

Dipancarkan saat anggota mulai mengetik.

client.on("chat.typingStarted", (identity) => {
  console.log(identity)
})

chat.typingEnded

Diaktifkan saat anggota berhenti mengetik.

client.on("chat.typingEnded", (identity) => {
  console.log(identity)
})

chat.connected

Dipancarkan saat chat terhubung dengan penyedia percakapan.

client.on("chat.connected", () => {
  console.log("connected")
})

Dalam kasus yang jarang terjadi, mungkin ada masalah latensi yang menyebabkan pesan dikirim dalam chat sebelum SDK bergabung ke chat. Jika hal ini terjadi, Anda dapat menggunakan fetchMessages untuk mendapatkan semua pesan yang ada dalam percakapan setelah chat terhubung. Lihat contoh kode berikut:

client.on("chat.connected", async () = {
  const messages = await
client.fetchMessages()
})

chat.disconnected

Dipancarkan saat chat terputus dari penyedia percakapan.

client.on("chat.disconnected", () => {
  console.log("disconnected")
})

chat.dismissed

Dipancarkan saat status chat diubah menjadi dismissed.

client.on("chat.dismissed", () => {
  console.log("dismissed")
})

chat.timeout

Dipancarkan saat chat berakhir, dengan alasan timeout.

client.on("chat.timeout", () => {
  console.log("timeout")
})

chat.ended

Dipancarkan saat chat berakhir.

client.on("chat.ended", () => {
  console.log("ended")
})

chat.destroyed

Dipancarkan saat destroyChat dipanggil.

client.on("chat.destroyed", () => {
  console.log("destroyed")
})

Mulai percakapan

Berikut adalah peristiwa check-in chat.

checkIn

Mengonfirmasi kehadiran pengguna akhir dalam antrean.

Tanda tangan metode

checkIn(): Promise<CheckInResponse>

Nilai yang ditampilkan

Mengembalikan objek CheckInResponse.

Antarmuka

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',
}

Contoh

try {
  const response = await client.checkIn()
} catch (error) {
  // handle error
}

exitCheckIn

Menghapus pengguna dari antrean check-in.

Tanda tangan metode

exitCheckIn(): Promise<CheckInResponse>

Nilai yang ditampilkan

Mengembalikan objek CheckInResponse.

Antarmuka

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

Memberi tahu backend tentang status visibilitas dialog check-in.

Tanda tangan metode

notifyCheckInState(data: CheckInVisibilityStateRequest): Promise<void>

Antarmuka

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

Menempatkan pengguna kembali dalam antrean setelah gagal mengonfirmasi check-in.

Tanda tangan metode

rejoinChat(): Promise<CheckInResponse>

Nilai yang ditampilkan

Mengembalikan objek CheckInResponse.

Antarmuka

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',
}

Contoh

try {
  const response = await client.rejoinChat()
} catch (error) {
  // handle error

trackCheckInEvent

Memberi sinyal ke backend saat peristiwa check-in telah dipicu oleh UI. Ini digunakan saat dialog check-in telah ditampilkan kepada pengguna akhir.

Tanda tangan metode

trackCheckInEvent(): Promise<void>

Contoh

try {
  await client.trackCheckInEvent()
} catch (error) {
  // handle error

Peristiwa penjelajahan bersama

Berikut adalah peristiwa khusus untuk Penjelajahan bersama:

cobrowse.request

Dipancarkan saat pengguna akhir atau agen meminta untuk memulai sesi Penjelajahan bersama.

client.on("cobrowse.request", { from } => {
  console.log("request by", from)
})

cobrowse.loaded

Dipancarkan saat sesi Penjelajahan bersama dimuat.

client.on("cobrowse.loaded", session => {
  console.log("cobrowse session", session)
})

cobrowse.updated

Dipancarkan saat sesi Penjelajahan bersama diperbarui.

client.on("cobrowse.updated", session => {
  console.log("cobrowse session", session)
})

cobrowse.ended

Dipancarkan saat sesi Penjelajahan bersama berakhir.

client.on("cobrowse.ended", session => {
  console.log("cobrowse session", session)
})