This page lists the API methods available for the headless web SDK.
destroy
This method will remove the communication iframe, and remove all event listeners.
destroy () {
this.communicator.destroy()
this.events.destroy()
}
getTrigger
This method detects the current page's proactive triggers. It returns
either the current matched trigger or null
.
const trigger = await client.getTrigger()
getCompany
This method retrieves the company information.
const company = await client.getCompany()
interface CompanyResponse {
name: string;
subdomain: string;
support_email: string;
languages: LanguageOption[];
action_tracking: boolean;
email_transcripts: boolean;
message_preview: boolean;
email_enhancement: boolean;
}
getAfterHourMessage
This method fetches the message for after hour deflection.
Request parameter:
(lang?: string)
Example:
const message: string = await client.getAfterHourMessage()
getMenus
This method lists all menu items available for the tenant.
Request parameter:
(key?: string, lang?: string)
Example:
const data = await client.getMenus("direct_menu_key")
console.log(data.menus)
console.log(data.direct
Response data:
interface MenuItem {
id: number;
name?: string;
enabled: boolean;
redirection?: {
option: string;
data: string;
};
children?: MenuItem[];
channels: MenuChannel[];
deflection?: {
enabled: boolean;
type: string;
};
}
interface MenuResponse {
menus: MenuItem[];
direct: {
key: boolean;
user: boolean;
};
getProhibitedFileTypes
This method lists the supported file types for rich email features.
getProhibitedFileTypes () {
return this.methods.listFileTypes()
}
getTimeSlots
This method fetches available time slots for scheduled calls.
Request parameter:
(menuId: number | string, lang: string = 'en')
Example:
const slots = await client.getTimeSlots(123)
Response data example:
[
"2023-05-31 11:45 +0000",
"2023-05-31 12:00 +0000",
"2023-05-31 12:15 +0000",
"2023-05-31 12:30 +0000",
"2023-05-31 12:45 +0000",
"2023-05-31 13:00 +0000",
"2023-05-31 13:15 +0000",
"2023-05-31 13:30 +0000",
"2023-05-31 13:45 +0000",
"2023-05-31 14:00 +0000"
]
getWaitTimes
This method gets the wait time for the chat channel or the call channel of a menu.
Request parameter:
(menuId: number | string, lang?: string)
Example:
const {chat, voice_call} = await client.getWaitTimes(123)
createCall
This method creates an instant or scheduled call.
Request parameter:
interface CallRequest {
menu_id: number;
lang: string;
phone_number: string;
scheduled_at?: string;
ticket_id?: string;
email?: string;
recording_permission?: boolean;
}
When scheduled_at
is set, it will create a scheduled call.
Create an instant call:
const call = await client.createCall({
menu_id: 123,
lang: 'en',
phone_number: '+12345678',
})
Create a scheduled call:
const call = await client.createCall({
menu_id: 123,
lang: 'en',
phone_number: '+12345678',
scheduled_at: '2023-05-31T11:45+0000',
})
loadCall
This method retrieves the call information for a specified call ID.
Request parameter:
(callId: number | string)
Example:
const call = await client.loadCall(1234)
cancelCall
This method cancels a call. It is typically used for canceling a scheduled call.
Request parameter:
(callId: number | string)
Example:
client.cancelCall(1234)
createChat
This method creates a new chat.
Request parameter:
interface ChatRequest {
menu_id: number;
lang: string;
trigger_id?: string;
ticket_id?: string;
email?: string;
greeting?: string;
cobrowsable?: boolean;
}
(data: ChatRequest, customData?)
Example:
client.createChat({
menu_id: 123,
lang: 'en',
})
loadChat
This method retrieves the chat information for a given chat ID.
Request parameter:
(chatId: number | string)
// client.loadChat(1234)
resumeChat
This method resumes a dismissed chat.
Request parameter:
(chatId: number | string)
// client.resumeChat(1234)
loadOngoingChat
This method retrieves information for an ongoing chat. The client saves the
current ongoing chat ID in the browser's localStorage
; this method tries to
load the ongoing chat information.
const chat = await client.loadOngoingChat()
getChatDeflection
This method fetches the chat deflection configuration.
// this method can only be used when there is a chat
const deflection = await client.getChatDeflection()
The response is either null
or:
interface ChatDeflectionResponse {
enabled: boolean;
threshold: number;
keep_waiting: boolean;
}
escalateChat
This method transfers a chat from virtual agent to human agent.
client.escalateChat()
finishChat
This method changes the chat status to finished
.
client.finishChat()
Some methods are called after finishChat
, for example sendChatSurvey
,
sendChatRate
.
destroyChat
This method destroys the current ongoing chat.
client.destroyChat()
fetchMessages
This method is used to fetch all the previous messages. It is typically used
together with loadOngoingChat
. You can call this method after the chat is
connected.
client.on("chat.connected", async () => {
const messages = await client.fetchMessages()
})
sendTextMessage
This method sends a text message.
client.sendTextMessage("hello world")
sendFileMessage
This method sends a file message.
const input = document.querySelector('input[type="file"]')
const file = input.files[0]
client.sendFileMessage(file)
startCobrowse
This method starts a Co-browse session.
client.startCobrowse()
createCobrowseCode
This method creates a Co-browse code.
client.createCobrowseCode()
sendChatTranscripts
Send the chat transcripts to a specified email address.
client.sendChatTranscripts([
"name1@example.com",
"name2@example.com",
])
sendChatRate
This method sends the end-user feedback for the current chat when the chat is finished.
Request parameter:
client.sendChatRate({
rating: 5,
feedback: "Very good service",
})
sendChatSurvey
This method sends a survey to the consumer.
Request parameter:
interface {
[question_id: string]: number | string;
}
You will need to fetch the survey questions:
const questions = await client.getChatSurvey()
/* response:
{
sign_off_display_text: "some text",
questions: [
{
id: number,
type: string,
display_text: string,
valid_answers?
}
]
}
*/
Answer each question, then call sendChatSurvey
:
client.sendChatSurvey({
123: "a",
231: "b",
})
createEmail
This method sends an email.
Request parameter:
interface EmailRequest {
name?: string;
email: string;
content: string;
menu_id: number | string;
lang: string;
files?: File[];
recaptcha?: string;
}
client.createEmail({
menu_id: 123,
lang: "en",
name: "User name",
email: "name@example.com",
content: "description of the question",
files: input.files,
})