ヘッドレス ウェブ 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
[key: string]: unknown;
}
chat.memberJoined
新しいメンバーが会話に参加したときに送信されます。
client.on("chat.memberJoined", (identity) => {
console.log(identity)
})
chat.memberLeft
メンバーが会話から退出したときに送信されます。
client.on("chat.memberLeft", (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.checkInRequested
チャットのチェックインが可能になったときに送信されます。
chat.checkInTimedOut
チャットのチェックインがタイムアウトしたときに送信されます。
入力イベント
エージェントが入力を開始すると、チャット アダプターがシグナルを送信し、ヘッドレス ウェブ SDK に typingStarted
イベントが送信されます。エージェントが入力を停止すると、3 秒後にシグナルが送信され、ヘッドレス ウェブ SDK に typingEnded
イベントが送信されます。3 秒のタイムアウトは構成できません。
chat.typingStarted
メンバーが入力を開始したときに送信されます。
client.on("chat.typingStarted", (identity) => {
console.log(identity)
})
chat.typingEnded
メンバーが入力を停止したときに送信されます。
client.on("chat.typingEnded", (identity) => {
console.log(identity)
})
チャットのチェックイン イベント
チャットのチェックイン イベントは次のとおりです。
checkIn
エンドユーザーがキューにいることを確認します。
メソッドの署名
checkIn(): Promise<CheckInResponse>
戻り値
CheckInResponse オブジェクトを返します。
Interfaces
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 オブジェクトを返します。
Interfaces
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>
Interfaces
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 オブジェクトを返します。
Interfaces
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)
})