无头 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
}