헤드리스 웹 SDK API 메서드

이 페이지에는 헤드리스 웹 SDK에 사용할 수 있는 API 메서드가 나와 있습니다.

회사 및 메뉴

getTrigger

이 메서드는 현재 페이지의 사전 대응 트리거를 감지합니다. 현재 일치하는 트리거 또는 null를 반환합니다.

const trigger = await client.getTrigger()

getCompany

이 메서드는 회사 정보를 가져옵니다.

메서드 서명

getCompany(): Promise<CompanyResponse>

반환 값

CompanyResponse 객체를 반환합니다.

인터페이스

interface CompanyResponse {
  name: string;
  subdomain: string;
  support_email: string;
  languages: LanguageOption[];
  action_tracking: boolean;
  email_transcripts: boolean;
  message_preview: boolean;
  email_enhancement: boolean;
  cobrowse_domain?: string;
}

사용 예

try {
  const company = await client.getCompany()
} catch (error) {
  // handle error
}

getAfterHourMessage

이 메서드는 영업시간 외 전환의 메시지를 가져옵니다.

요청 매개변수:

(lang?: string)

예:

const message: string = await client.getAfterHourMessage()

getMenus

이 메서드는 테넌트에서 사용할 수 있는 모든 메뉴 항목을 나열합니다.

메서드 서명

getMenus(key?: string, lang?: string): Promise<MenuResponse>

반환 값

MenuResponse 객체를 반환합니다.

인터페이스

interface MenuResponse {
  menus: MenuItem[];
  direct: {
    key: boolean;
    user: boolean;
  };
}

interface MenuItem {
  id: number;
  name?: string;
  enabled: boolean;
  redirection?: {
    option: string;
    data: string;
  };
  children?: MenuItem[];
  channels: MenuChannel[];
  deflection?: {
    enabled: boolean;
    type: string;
  };
}

사용 예

try {
  const data: MenuResponse = await client.getMenus("direct_menu_key")
  console.log(data.menus)
  console.log(data.direct)
} catch (error) {
  // handle error
}

getWaitTimes

이 메서드는 메뉴의 채팅 채널 또는 통화 채널의 대기 시간을 가져옵니다.

메서드 서명

getWaitTimes(menuId: number | string, lang?: string): Promise<WaitTimeResponse>

반환 값

WaitTimeResponse 객체를 반환합니다.

인터페이스

interface WaitTimeResponse {
  chat: number;
  voice_call: number;
}

사용 예

try {
  const data: WaitTimeResponse = await client.getWaitTimes(123)
} catch (error) {
  // handle error
}

통화

createCall

이 메서드는 즉석 통화 또는 예약 통화를 만듭니다.

메서드 서명

createCall(menuId: number | string, data: CallRequest): Promise<CallResponse>

반환 값

CallResponse 객체를 반환합니다.

인터페이스

interface CallRequest {
  phone_number: string;
  lang?: string;
  scheduled_at?: string;
  ticket_id?: string;
  email?: string;
  recording_permission?: "recording_permission_not_asked" | "recording_permission_granted" | "recording_permission_denied";
  custom_data?: {
    signed?: string;
    unsigned?: Record<string, any>;
  };
}

사용 예

try {
  const call = await client.createCall(123, { phone_number: '+12345678' })
} catch (error) {
  // handle error
}

loadCall

이 메서드는 지정된 통화 ID의 통화 정보를 가져옵니다.

메서드 서명

loadCall(callId: number | string): Promise<CallResponse>

반환 값

CallResponse 객체를 반환합니다.

인터페이스

interface CallResponse {
  id: number;
  lang: string;
  menu_id: number;
  status: string;
  type: string;
  scheduled_at?: string;
  recording_permitted: boolean;
  survey_enabled: boolean;
  created_at: string;
  menus: {
    id: number;
    name: string;
  }[];
}

사용 예

try {
  const call = await client.loadCall(1234)
} catch (error) {
  // handle error
}

cancelCall

이 메서드는 통화를 취소합니다.

메서드 서명

cancelCall(callId: number | string): Promise<CallResponse>

반환 값

CallResponse 객체를 반환합니다.

인터페이스

interface CallResponse {
  id: number;
  lang: string;
  menu_id: number;
  status: string;
  type: string;
  scheduled_at?: string;
  recording_permitted: boolean;
  survey_enabled: boolean;
  created_at: string;
  menus: {
    id: number;
    name: string;
  }[];
}

사용 예

try {
  const response = await client.cancelCall(1234)
} catch (error) {
  // handle error
}

getTimeSlots

이 메서드는 사용 가능한 시간대를 가져오는 데 사용됩니다.

메서드 서명

getTimeSlots(menuId: number | string, lang?: string): Promise<string[]>

반환 값

문자열 (시간대) 배열을 반환합니다.

사용 예

try {
  const slots = await client.getTimeSlots(123)
} catch (error) {
  // handle error
}

채팅

createChat

이 메서드는 새 채팅을 만듭니다.

메서드 서명

createChat(menuId: number | string, data: ChatRequest): Promise<Chat>

반환 값

Chat 인스턴스를 반환합니다.

인터페이스

interface ChatRequest {
  lang?: string;
  trigger_id?: string;
  ticket_id?: string;
  email?: string;
  greeting?: string;
  cobrowsable?: boolean;
  custom_data?: {
    signed?: string;
    unsigned?: Record<string, any>;
  };
}

사용 예

try {
  const chat = client.createChat(123, { lang: 'en' })
} catch (error) {
  // handle error
}

loadChat

이 메서드는 지정된 채팅 ID의 채팅 정보를 가져옵니다.

메서드 서명

loadChat(chatId: number | string): Promise<Chat>

반환 값

Chat 인스턴스를 반환합니다.

사용 예

try {
  const chat = await client.loadChat(1234)
} catch (error) {
  // handle error
}

loadOngoingChat

이 메서드는 진행 중인 채팅 인스턴스를 가져오는 데 사용됩니다.

메서드 서명

loadOngoingChat(): Promise<Chat | null>

반환 값

진행 중인 채팅이 있는 경우 Chat 인스턴스를 반환하고, 그렇지 않으면 null을 반환합니다. 채팅이 진행 중이 아닌 경우 저장소 값을 정리합니다.

사용 예

try {
  const chat = await client.loadOngoingChat()
} catch (error) {
  // handle error
}

resumeChat

이 메서드는 닫힌 채팅을 다시 시작합니다.

메서드 서명

resumeChat(chatId: number | string): Promise<Chat>

반환 값

채팅 인스턴스를 반환합니다.

사용 예

client.resumeChat(1234)

finishChat

이 메서드는 채팅 상태를 finished로 변경합니다.

메서드 서명

finishChat(): Promise<void>

사용 예

try {
  await client.finishChat()
} catch (error) {
  // handle error
}

destroyChat

이 메서드는 현재 진행 중인 채팅을 소멸시킵니다.

메서드 서명

destroyChat(): Promise<void>

사용 예

try {
  await client.destroyChat()
} catch (error) {
  // handle error
}

fetchMessages

이 메서드는 이전 메시지를 모두 가져오는 데 사용됩니다. 실패가 발생하면 빈 배열을 반환합니다. 이 메서드는 채팅이 연결된 후에 사용합니다.

메서드 서명

fetchMessages(): Promise<MessageResponse[]>

반환 값

MessageResponse 배열을 반환합니다. 실패 시 빈 배열을 반환합니다.

인터페이스

interface MessageResponse {
  $index: number;
  $sid: string;
  $timestamp: Date;
  $userType: string;
  $userId: number;
  type: string;
  content?: string;
  event?: string;
  file?: File;
  media_id?: number;
  groupMessageId?: number;
  document?: {
    url: string;
  };
  unredacted?: string;
  buttons?: {
    title: string;
  }[];
  message?: {
    messages: string[];
    type: string;
  };
  signature: string;
  form?: {
    id: number;
    form_type: string;
    name: string;
    title: string;
    subtitle: string;
    external_form_id: string;
    smart_action_id: number;
    image: string;
  };
}

사용 예

const messages = client.fetchMessages()

sendTextMessage

이 메서드는 문자 메시지를 전송합니다.

메서드 서명

sendTextMessage(rawContent: string): Promise<void>

사용 예

try {
  client.sendTextMessage("hello world")
} catch (error) {
  // handle error
}

sendFileMessage

이 메서드는 파일 메시지를 전송합니다.

메서드 서명

sendFileMessage(file: File): Promise<number>

반환 값

실패 시 메시지 ID 또는 -1을 반환합니다.

사용 예

const input = document.querySelector('input[type="file"]')
const file = input.files[0]
const id = client.sendFileMessage(file)

sendPreviewMessage

메서드 서명

sendPreviewMessage(content: string): Promise<void>

사용 예

try {
  await client.sendPreviewMessage('preview content')
} catch (error) {
  // handle error
}

getChatDeflection

이 메서드는 채팅 전환 구성을 가져옵니다.

메서드 서명

getChatDeflection(): Promise<ChatDeflectionResponse>

반환 값

ChatDeflectionResponse 객체를 반환합니다.

인터페이스

interface ChatDeflectionResponse {
  enabled: boolean;
  threshold: number;
  email: boolean;
  keep_waiting: boolean;
  external_deflection_links: {
    enabled: boolean;
    ids: number[];
  };
}

사용 예

try {
  const deflection = await client.getChatDeflection()
} catch (error) {
  // handle error
}

sendChatTranscripts

현재 채팅 스크립트를 지정된 이메일로 보냅니다.

메서드 서명

sendChatTranscripts (emails: string[]): Promise<void>

사용 예

try {
  client.sendChatTranscripts([
    "name1@example.com",
    "name2@example.com",
  ])
} catch (error) {
  // handle error
}

downloadChatTranscript

메서드 서명

downloadChatTranscript(): Promise<GenerateTranscriptResponse>

반환 값

스크립트 객체를 반환합니다.

interface GenerateTranscriptResponse {
  status: string;
  chat_transcript_id: number;
}

사용 예

try {
  const resp = await client.downloadChatTranscript()
} catch (error) {
  // handle error
}

getPdfStatus

메서드 서명

getPdfStatus(id: number): Promise<RequestReturn>

반환 값

PDF 상태 객체를 반환합니다.

인터페이스

 interface RequestReturn {
    //...
    headers,
    data: PdfStatusResponse,
  }

  interface PdfStatusResponse {
    status: string;
    body?: File;
    failed_reason?: string;
  }

사용 예

const response = await client.getPdfStatus(pdfId)
// check header for status
const status = resp.headers['x-transcript-status'];

// otherwise use status on data
const data: PdfStatusResponse = resp.data
console.log(data.status)

getChatSurvey

이 메서드는 채팅 설문조사 질문을 가져오는 데 사용됩니다.

메서드 서명

getChatSurvey(): Promise<ChatSurveyResponse>

반환 값

ChatSurveyResponse 객체를 반환합니다.

인터페이스

interface QuestionItem {
  id: number;
  type: "csat" | "star" | "free-form" | "scale" | "enumeration";
  display_text: string;
  name?: string;
  is_csat?: boolean;
  position?: number;
  valid_answers?: {
    key: string;
    value: string;
  }[]
}

interface ChatSurveyResponse {
  id?: number;
  lang?: string;
  sign_off_display_text: string;
  questions: QuestionItem[];
}

사용 예

try {
  const data = await client.getChatSurvey()
  console.log(data.questions)
} catch (error) {
  // handle error
}

sendChatSurvey

이 메서드는 소비자에게 설문조사를 전송합니다.

메서드 서명

sendChatSurvey(answers: SurveyAnswers): void

인터페이스

interface SurveyAnswers {
  [question_id: string]: number | string;
}

사용 예

try {
  await client.sendChatSurvey({
    123: "a",
    231: "b",
  })
} catch (error) {
  // handle error
}

sendChatRate

이 메서드는 채팅이 종료되면 현재 채팅에 대한 최종 사용자 의견을 전송합니다.

메서드 서명

sendChatRate(data: RateRequest): Promise<void>

인터페이스

interface RateRequest {
  rating: number;
  feedback?: string;
}

사용 예

try {
  await client.sendChatRate({
    rating: 5,
    feedback: "Very good service",
  })
} catch (error) {
  // handle error
}

escalateChat

메서드 서명

escalateChat(data?: EscalateRequest): Promise<void>

인터페이스

interface EscalateRequest {
  reason?: string;
  // ...other escalation fields
}

사용 예

try {
  await client.escalateChat()
} catch (error) {
  // handle error
}

trackChatEscalation

메서드 서명

trackChatEscalation(escalationId: number, channel: string): Promise<void>

사용 예

try {
  await client.trackChatEscalation(escalationId, channel)
} catch (error) {
  // handle error
}

trackChatEndUserEvent

메서드 서명

trackChatEndUserEvent(data: ChatEndUserEventRequest): Promise<void>

반환 값

void를 반환합니다.

인터페이스

interface ChatEndUserEventRequest {
  end_user_name?: string;
  // ...other event fields
}

사용 예

try {
  await client.trackChatEndUserEvent(eventData)
} catch (error) {
  // handle error
}

getChatHistory

메서드 서명

getChatHistory(page?: number): Promise<ChatHistoryResponse>

반환 값

ChatHistoryResponse 객체를 반환합니다.

인터페이스

interface ChatHistoryItem {
  comm_id: number;
  assigned_at: string;
  comm_type: string;
  timezone: string;
  entries: MessageResponse[];

}
interface ChatHistoryResponse {
  chats: ChatHistoryItem[];
  missing_chat_ids: number[];
  pagination: {
    next_page: number;
    per_page: number;
  }
}

사용 예

try {
  const data = client.getChatHistory(page: number)
  console.log(data)
} catch (error) {
  console.log(error)
}

이메일

createEmails

메서드 서명

createEmail(menuId: number | string, data: EmailRequest): Promise<EmailResponse>

반환 값

실패 또는 성공 시 EmailResponse 객체를 반환합니다.

인터페이스

interface EmailRequest {
  name?: string;
  email: string;
  content: string;
  lang?: string;
  files?: File[];
  recaptcha?: string;
}

interface EmailResponse {
  id: number;
  type: string;
  status: string;
  fail_reason: string;
  attachment_count: number;
}

사용 예

try {
  await client.createEmail(123, {
    lang: "en",
    name: "User name",
    email: "name@example.com",
    content: "description of the question",
    files: input.files,
  })
} catch (error) {
  console.log(error.message)
}

getProhibitedFileTypes

메서드 서명

getProhibitedFileTypes(): Promise<FileTypeItem[]>

반환 값

FileTypeItem 배열을 반환합니다.

인터페이스

interface FileTypeItem {
  extension: string;
  description: string;
}

사용 예

try {
  const types = await client.getProhibitedFileTypes()
} catch (error) {
  // handle error
}

화면 공유

createCobrowseCode

이 메서드는 화면 공유 코드를 만듭니다.

메서드 서명

createCobrowseCode(lang?: string, customData?: Record<string, string>): Promise<string>

반환 값

화면 공유 코드 문자열을 반환하고 실패 시 빈 문자열을 반환합니다.

사용 예

const code = await client.createCobrowseCode()
// 123456

startCobrowse

메서드 서명

startCobrowse(from?: string): Promise<void>

사용 예

try {
  await client.startCobrowse()
} catch (error) {
  // handle error
}

getMessageAttachment

메서드 서명

getMessageAttachment(message: MessageResponse): Promise<File | null>

반환 값

찾은 경우 File 객체를 반환하고, 해당하지 않는 경우 null을 반환합니다.

사용 예

try {
  const file = await client.getMessageAttachment(message)
} catch (error) {
  // handle error
}

세션 후 가상 에이전트

updatePostSession

메서드 서명

updatePostSession(postSessionStatus: PostSessionStatus): Promise<void>

인터페이스

enum PostSessionStatus {
  READY = 'ready',
  IN_PROGRESS = 'in_progress',
  WAITING = 'waiting',
  FINISHED = 'finished',
}

사용 예

try {
  await client.updatePostSession(PostSessionStatus.READY)
} catch (error) {
  // handle error (e.g., show a notification to the user)
}

관련 인터페이스

interface ChatResponse {
  //...
  post_session_required?: boolean;
  post_session_opt_in_required?: boolean;
  post_session_transfer_status?: string;
}

값:

  • post_session_required: 채팅 후 세션 게시 필요

  • post_session_opt_in_required: 선택이 사용 설정되었는지 여부

  • post_session_transfer_status: PostSessionStatus 열거형

기타

runTrigger

메서드 서명

runTrigger(cb: (trigger: TriggerItem) => void): Promise<void>

사용 예

client.runTrigger((trigger: TriggerItem) => {
  // code to run for given trigger
})

getAfterHourMessage

메서드 서명

getAfterHourMessage(lang?: string): Promise<string>

반환 값

구성된 메시지가 포함된 문자열을 반환합니다.

사용 예

try {
  const message: string = await client.getAfterHourMessage()
} catch (error) {
  // handle error
}