ヘッドレス ウェブ SDK には、アプリケーション内の特定のアクションや更新を処理するためにリッスンできるイベントが用意されています。
const handleReady = () => {
console.log("**** client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
一般的なイベント
SDK の一般的なイベントは次のとおりです。
ready
クライアントが通信の準備ができたときに発行されます。
client.on("ready", () => {
})
authenticated
クライアントがユーザーのトークンで認証されたときに発行されます。
client.on("authenticated", () => {
})
利用可能なすべてのイベント
SDK には、アプリケーション内の特定のアクションや更新を処理するためにリッスンできるさまざまなイベントが用意されています。
イベント リスナーを追加、削除するには、.on メソッドと .off メソッドを使用します。
const handleReady = () => {
console.log(" client is ready")
}
client.on("ready", handleReady)
// client.off("ready", handleReady)
利用可能なすべてのイベントの包括的なリストは次のとおりです。
グローバル イベント
| イベント名 | 説明 |
|---|---|
ready |
クライアントが通信の準備ができたときに発行されます |
非推奨のイベント
SDK は、下位互換性のために次のイベントを引き続き出力します。新しい統合では使用しないでください。
| イベント名 | 説明 | ガイダンス |
|---|---|---|
authenticated |
クライアントがユーザーのトークンで認証されたときに発行されます。 | 非推奨となり、削除される予定です。既存の統合では、削除されるまで引き続きこのフィールドを受け取ることができます。 |
chat.connected |
チャットがプロバイダに接続されたときに発行されます。 | 非推奨。chat.connectedMessages を使用します。これは、初期メッセージ ペイロードも提供します。 |
Chat イベント
| イベント名 | 説明 |
|---|---|
chat.ongoing |
チャットが進行中のときに出力されます。 |
chat.updated |
チャット インスタンスが更新されたときに出力されます。 |
chat.message |
新しいメッセージがある場合に発行されます。 |
chat.memberJoined |
新しいメンバーが会話に参加したときに発行されます。 |
chat.memberLeft |
メンバーが会話から退出したときに生成されます。 |
chat.typingStarted |
メンバーが入力し始めたときに送信されます。 |
chat.typingEnded |
メンバーが入力し終えたときに送信されます。 |
chat.connectedMessages |
SDK がプロバイダとの会話に接続されたときに発行されます。 |
chat.disconnected |
チャットがプロバイダから切断されたときに発行されます。 |
chat.dismissed |
チャットのステータスが dismissed に変更されたときに発行されます。 |
chat.timeout |
「タイムアウト」によりチャットが終了したときに出力されます。 |
chat.ended |
チャットが終了したときに出力されます。 |
chat.destroyed |
destroyChat が呼び出されたときに発行されます。 |
chat.checkInRequested |
チャットをチェックインできるときに出力されます。 |
chat.checkInTimedOut |
チャットのチェックインがタイムアウトしたときに出力されます。 |
共同ブラウジング イベント
| イベント名 | 説明 |
|---|---|
cobrowse.request |
エンドユーザーまたはエージェントが共同ブラウジングをリクエストしたときに発行されます |
cobrowse.loaded |
画面共有セッションが読み込まれたときに出力されます。 |
cobrowse.updated |
画面共有セッションが更新されたときに出力されます |
cobrowse.ended |
共同ブラウジング セッションが終了したときに送信されます |
使用例
client.on("ready", () => {
// Client is ready
})
client.on("chat.message", message => {
console.log(message)
})
client.on("chat.connectedMessages", async ({ chat, messages }) => {
// Handle chat and messages
})
client.on("cobrowse.request", ({ from }) => {
console.log("Cobrowse requested by", from)
})
カスタムデータ構成
custom_data オプションを使用すると、任意の Key-Value ペアデータをウェブ SDK に渡すことができます。
用途
チャットの作成時に、カスタムデータをオブジェクト(署名なし)または文字列(署名付き)として指定できます。
interface ChatRequest {
lang?: string;
trigger_id?: string;
ticket_id?: string;
email?: string;
greeting?: string;
cobrowsable?: boolean;
custom_data?: {
signed?: string;
unsigned?: Record<string, any>;
};
}
例
次の例をご覧ください。
const custom_data = {
unsigned: {
version: {
label: 'Version',
value: '1.0.0'
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}
外部 chatbot への転送
他のチャット プロバイダの履歴やインタラクションを保持したい場合があります。これを行うには、custom_data object を使用します。
次の例をご覧ください。
cconst custom_data = {
unsigned: {
external_chat_transfer: {
greeting_override: "Please hold while we connect you with a human agent.",
agent: {
name: "Agent Name",
avatar: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
},
transcript: [
{
sender: "agent",
timestamp: "2021-03-15 12:00:00Z",
content: [
{
type: "text",
text: "Hello! How can I help you today?"
},
{
type: "buttons",
buttons: [
{
label: "Create New Order",
selected: false
},
{
label: "Check Order Status",
selected: true
},
{
label: "Check Account Balance",
selected: false
},
]
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:15Z",
content: [
{
type: "text",
text: "Check Order Status"
}
]
},
{
sender: "agent",
timestamp: "2021-03-15 12:00:16Z",
content: [
{
type: "text",
text: "I can help you with that, what's your order number?"
}
]
},
{
sender: "end_user",
timestamp: "2021-03-15 12:00:20Z",
content: [
{
type: "media",
media: {
type: "image",
url: "https://ujet.s3.amazonaws.com/default-virtual-agent-avatar-1.png"
}
}
]
}
]
}
},
signed: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // JWT or other signed payload
}
try {
const chat: Chat = await client.createChat(123, { custom_data })
} catch (error) {
// handle error
}