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.
Adding an event listener
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.
Supported events
'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
Last updated