無頭網頁 SDK 事件

無標題網頁 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)
})