This page contains the API methods of the web SDK.
Initialize the web SDK
Use the following code to initialize the web SDK:
const ujet = new UJET({
companyId: '',
// ...
})
Options
This section contains the options that you can pass when you initialize the web SDK.
companyId
Required
To retrieve companyId from the CCAI Platform portal, follow these steps:
Sign in to the CCAI Platform portal with an administrator account.
Go to Settings > Developer settings
Copy Company Key
new UJET({ companyId: '{ COMPANY KEY }', })
tenant
Recommended
Tenant is the subdomain of your Contact Center AI Platform (CCAI Platform) instance, also known as
your environment. For example, if CCAI Platform portal is
https://acme.ccaiplatform.com/, then acme is the tenant. See the following
example:
```sh
new UJET({
companyId: '....',
tenant: 'acme',
})
```
host
Optional
host is the API endpoint that is used by the web SDK. If you have set
tenant, there is no need to set host.
new UJET({
companyId: '....',
host: 'https://acme.api.ccaiplatform.com',
})
If you have set tenant, and not host, the web SDK will configure the host
value according to tenant. See the following example:
https://{tenant}.api.ccaiplatform.com
authenticate
Optional
authenticate is a function that returns a JWT token with a promise. See the
following example:
new UJET({
// ...
authenticate: getAuthToken,
})
function getAuthToken () {
return fetch('/ujet/token').then(function(resp) {
return resp.json()
})
}
Authentication is required in the web SDK, but the authenticate option is
optional. You can call ujet.authenticate in the created event:
var ujet = new UJET({ ... })
ujet.on('created', function() {
getAuthToken().then({ token } => {
ujet.authenticate({ token })
})
})
lang
Optional
The default language for the end-user. See the following example:
new UJET({
// ...
lang: 'ja',
})
user
Optional
See the following example:
new UJET({
companyId: '....',
user: {
identifier: '...',
name: '...',
email: '...',
},
})
launcher
Optional
The launcher option can be false or an object. See the following
launcher options:
right: string,
bottom: string,
cssText: string,
chatIcon: url,
closeIcon: url,
style: {
'--background-color': color,
'--icon-color': color,
}
To disable the CCAI Platform default launcher, you can set this option
to false. See the following example:
const ujet = new UJET({
companyId: '...',
launcher: false,
})
// use your own button: `<button id="start-chat">Chat with Me</button>`
document.querySelector('#start-chat').addEventListener('click', function() {
ujet.open()
})
Alternatively, you can customize our built-in launcher. See the following example:
new UJET({
companyId: '...',
launcher: {
// cssText: 'body{color:red}',
// chatIcon: 'https://example.com/logo.svg',
// closeIcon: 'https://example.com/static/close.svg',
// right: '50px',
// bottom: '50px',
style: {
'--icon-color': '#FFF',
'--background-color': '#F1684A',
}
},
})
logo
Recommended
Your company's logo URL. See the following example:
new UJET({
logo: 'https://example.com/logo.svg',
})
style
Optional
Use the style option to customize the web SDK widget. See the following
example:
new UJET({
// ...
style: {
// links: ['https://example.com/font.css'],
'--primary-font': '',
'--primary-color': '',
'--link-color': '',
'--logo-shadow': '',
}
})
customData
Optional
Custom data can be sent with a chat when the chat is started. See the following example:
new UJET({
// ...
customData: {
version: {
label: 'Version',
value: '1.1.0'
},
platform: {
label: 'Platform',
value: navigator.platform
}
}
})
disableAttachment
Optional
If disableAttachment is set to true, the web SDK won't allow the end-user
to upload photos, videos, or other attachments in chats. See the following
example:
new UJET({
companyId: '....',
disableAttachment: true,
})
right
Optional
Position right of the widget, not the launcher. Adjust this value according to
launcher.right. See the following example:
new UJET({
right: '50px',
})
bottom
Optional
Position below the widget, not the launcher. Adjust this value according to
launcher.bottom. See the following example:
new UJET({
bottom: '150px',
})
translation
Optional
Use the translation capability of the web SDK. See the followint example:
new UJET({
translation: {
"en": {
"ujet_start_title": "English!",
"ujet_greeting": "Hi there!"
},
"es": {
"ujet_start_title": "¡Español!",
"ujet_greeting": "¡Hola!"
},
"fr": {
"ujet_start_title": "Français!",
"ujet_greeting": "Salut!"
},
"de": {
"ujet_start_title": "Deutsche!",
"ujet_greeting": "Hallo!"
},
"ja": {
"ujet_start_title": "日本語!",
"ujet_greeting": "こんにちは!"
}
}
})
Methods
This section contains the methods of the UJET object:
.on(event, callback)
Run the callback when receives the given event:
ujet.on('ready', function() {
console.log('widget is ready')
})
Find all events in events documentation.
.off(event, callback)
Remove the given callback from event listeners.
function ready() {
console.log('widget is ready')
}
ujet.on('ready', ready)
ujet.off('ready', ready)
.authenticate(authData)
Send token value to the widget. This method is usually called in
created event:
ujet.on('created', function() {
fetchToken().then(function(token) {
ujet.authenticate({ token: token })
})
})
.authenticate(authFunction)
You can also pass a function to the .authenticate method. This function
should return a promise of the token:
ujet.on('created', function() {
ujet.authenticate(function(callback) {
return fetchToken().then(function(token) {
return { token: token }
})
})
})
.start({ menuKey, ticketId })
The widget is started when the end-user clicks the launcher, but it can also be started with the following code:
// if end user stayed in the web page for 10 senconds
setTimeout(function() {
ujet.start({ menuKey: 'help' })
}, 10000)
If .start with a menuKey, the widget goes directly to that queue.
.open()
.open is similar to .start, but it won't accept any parameters.
setTimeout(function() {
ujet.open()
}, 10000)
.close()
Minimize the widget programmatically:
ujet.on('chat:status', function(status) {
if (status === 'timeout') {
ujet.close()
})
})
.destroy()
Destroy the web SDK. That is, remove it from current web page.
.registerHook(event, fn)
The event in .registerHook is different from the one in .on. This
function is usually used when you want to use your own launcher:
// <button id="launcher">Click to open</button>
const ujet = new UJET({
// ...
launcher: false,
})
const launcher = document.getElementById('launcher')
launcher.addEventListener('click', function() {
if (ujet.status === 'open') {
ujet.close()
} else {
ujet.open()
}
});
ujet.registerHook('loading', function () {
launcher.textContent = 'loading'
})
ujet.registerHook('open', function () {
launcher.textContent = 'Click to close'
})
ujet.registerHook('close', function () {
launcher.textContent = 'Click to open'
})
Translation
Here is a list of available keys for customizing translation:
ujet_start_titleujet_greeting