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)
})