ヘッドレス ウェブ SDK イベント

ヘッドレス ウェブ 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
}