Skip to content

Events

This section describes the events available on WebChat via the SDK

WebChat emits a number of events that you can listen to within your own application.

To add an event listener, use:

webchat.on('event_name':string, callback: Function)

Each listener will return a CustomEvent object with specific data nested in the event.detail object:

/**
* Add an event listener to the chat widget
* @function on
* @param {string} eventName - the event to listen for
* @param {Function} callback - the function to call when the event is triggered
* @returns {CustomEvent} - the event object with specific data in the event.detail object
*/
.on('loaded', (e: CustomEvent) => {
console.log(e.detail) // the event data specific to WebChat
})

For convenience, all events return the element upon which the event was fired within the detail object. For additional return values, see the descriptions below.

'loaded' - fired when the WebChat widget has initialised.

Returns a ‘loaded’ property with a Boolean value:

loaded: true


'openStateChanged' - fired when the WebChat widget is opened or closed.

Returns a String value:

enum openState {
OPEN = 'open',
CLOSED = 'closed'
}
return openState: openState.OPEN

'messageSent' - fired when the user sends a message.

Returns a message object:

export interface IMessagePayload {
kind?: 'outgoing'
author: string
content: IMessageContent
message_id: string
notification: string
user_id: string
uuid?: string
mode?: string
modeInstance?: number
partOfLastTemplate?: boolean
}
export interface IMessageContent {
author: string
callback_id?: string
id: string
mode?: string
modeInstance?: number
type: string
user: Object
data: {
text: string
date: string
time: string
value?: string
[key: string]: any
}
escalating?: boolean
}
return message: IMessagePayload

'messageReceived' - fired when WebChat receives a message from the server.

Returns a message object:

export interface IMessage {
kind?: 'incoming'
first?: boolean
last?: boolean
author: string
intent?: string
type: string
data: IMessageData
uuid?: string
authorAvatar?: string
authorName?: string
partOfLastTemplate?: boolean
}
export interface IMessageData {
text: string | null
meta?: {
author?: {
name?: string
avatar?: string
[key: string]: any
}
[key: string]: any
}
attribute_name: string | null
date: string | null
disable_text?: boolean
hideavatar?: boolean
hidetime?: boolean
internal?: boolean
time: string | null
elements?: IElement[] | IElementsObject
submit_text?: string
[key: string]: any
}
return message: IMessage

'chatEnded' - fired when the user selects ‘end chat’ from the menu in the WebChat application