헤드리스 웹 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.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
}