이 페이지에는 헤드리스 웹 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
}