無標題網頁 SDK 提供可監聽的事件,方便您在應用程式中處理特定動作或更新。您可以使用 .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.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
}
chat.memberJoined
新成員加入對話時發出。
client.on("chat.memberJoined", (identity) => {
console.log(identity)
})
chat.memberLeft
成員離開對話時發出。
client.on("chat.memberLeft", (identity) => {
console.log(identity)
})
chat.typingStarted
成員開始輸入時發出。
client.on("chat.typingStarted", (identity) => {
console.log(identity)
})
chat.typingEnded
成員停止輸入時發出。
client.on("chat.typingEnded", (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")
})
聊天室簽到
以下是即時通訊簽到事件。
checkIn
確認使用者是否在佇列中。
方法簽章
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
將入住對話方塊的顯示狀態通知後端。
方法簽章
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
在 UI 觸發入住事件時,向後端發出信號。當系統向使用者顯示入住對話方塊時,就會使用這項功能。
方法簽章
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)
})