无头 Web 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 事件
以下是聊天会话专用事件。
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")
})
Chat 签到
以下是聊天签到活动。
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
当界面触发签到事件时,向后端发送信号。当向最终用户显示签到对话框时,系统会使用此值。
方法签名
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)
})