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_title
ujet_greeting