无头 Web SDK 事件

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