헤드리스 웹 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.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 옵션을 사용하면 임의의 키-값 쌍 데이터를 웹 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
}