无头 Web SDK 事件

无头 Web 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 选项,您可以将任意键值对数据传递给 Web 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
}

外部聊天机器人转移

在某些情况下,您可能希望保留其他聊天服务提供商的历史记录和互动。您可以使用 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
}