Integraciones de script
Puede crear sus propias acciones de bot en Creador de bots. Esto le permite personalizar la forma en que el bot responde en las conversaciones. Las acciones de bot se usan en diálogos Historias y reglas de bots en CXone Bot Builder. para definir las respuestas del bot durante las conversaciones.
Las acciones personalizadas se crean como integraciones de script en Creador de bots. Las integraciones de script admiten JavaScript. Cada integración de script puede tener más de una acción. Cuando se activan, sus acciones personalizadas están disponibles en la lista de acciones de bot cuando agrega una respuesta de bot a una historia Se utiliza para entrenar al bot para el manejo de interacciones según la intención y el contexto, regla Se usa para definir la respuesta del bot a los mensajes que no cambian con el contexto. o respaldo Estos sitios están destinados al desarrollo y asistencia de CXone, no a su funcionamiento. Si los bloquea puede interferir con el acceso a la ayuda y a los enlaces de descarga dentro de la plataforma..
La lista a continuación ofrece ejemplos de cómo usar las acciones personalizadas de bot:
- Escribir código para diseñar acciones de bot que satisfagan las necesidades únicas de su organización.
- Llamar a su propia API externa como una acción de bot.
- Agregar scripts a las habilidades del bot y publicarlos en la Almacén de habilidades.
Los scripts de Creador de bots funcionan en el servidor, por lo que se deben tomar en cuenta algunas limitaciones al generar sus scripts.
Editor de scripts
Una integración de script puede tener más de una acción. Cada de acción tiene su propio script. Puede acceder al editor de scripts desde las propiedades de cada acción.
En el editor, puede ingresar el código de la izquierda y, después, hacer clic en el triángulo de ejecutar para ver los resultados en el panel de la consola.
Variables de script
Puede crear variables para usar en los scripts de Creador de bots. Las variables pueden almacenar un valor para usar en otra parte del script. Solo se pueden usar en la integración de script donde las creó, pero puede usarlas en cualquiera de los scripts de esa integración.
Los valores de las variables no se pueden modificar en el script. Solo se pueden cambiar en la página de integraciones de script o cuando una acción que refiere a una variable se utiliza en una respuesta del bot en una historia Se utiliza para entrenar al bot para el manejo de interacciones según la intención y el contexto, regla Se usa para definir la respuesta del bot a los mensajes que no cambian con el contexto. o respaldo Estos sitios están destinados al desarrollo y asistencia de CXone, no a su funcionamiento. Si los bloquea puede interferir con el acceso a la ayuda y a los enlaces de descarga dentro de la plataforma..
Para usar una variable en una acción:
- El script de la acción debe hacer referencia a la variable.
- Se debe hacer editable en esa acción, si quiere ser capaz de cambiar el valor.
Los scripts de Creador de bots admiten cuatro tipos de variables:
- Texto: Las variables de texto contienen valores simples de cadena. Una variable de texto editable se convierte en un campo en la UI de la acción personalizada de bot, donde puede ingresar texto en el campo para asignar un valor a la variable.
- Número: Las variables de número contienen valores numéricos. Una variable de número editable se convierte en un campo en la UI de la acción personalizada de bot, donde puede ingresar un número en el campo para asignar un valor a la variable.
- Selección: Use variables de selección cuando quiera definir varios valores posibles para la variable. Una variable de selección se convierte en una lista desplegable en la UI de la acción personalizada de bot. Las opciones de la lista desplegable se definen en el campo Valores de la definición de la variable, en la pestaña Scripts.
- Secreto: Use variables de secreto para contener datos privados, como tokens o credenciales API. Después de ingresar el valor, Creador de bots enmascara con asteriscos ( * ) todos los caracteres excepto los cinco primeros. El valor es de sólo lectura y no se puede sobrescribir ni cambiar mediante el script o la acción de bot. Si necesita cambiarlo, debe actualizar el valor en la página Variable del script. Las variables de secreto no se pueden hacer editables.
Puede definir un valor predeterminado para las variables de texto, número y selección. Cuando la variable es editable, el valor predeterminado se puede sobrescribir seleccionando o ingresando un valor distinto cuando agrega la acción a una respuesta de bot. Cuando la variable no es editable, pero está referenciada en el script de una acción, se usa el valor predeterminado, si existe. Si no hay un valor predeterminado asignado, la variable no tiene valor en el script.
Las variables que cree se agregan al objeto de Variables en la integración de script.
Objetos y funciones estándar
Además de las funcionalidades estándar de JavaScript, Creador de bots posee el siguiente marco específico para bots:
- El objeto Bot ofrece un método alternativo para diseñar las respuestas de su bot durante las conversaciones.
- El objeto Almacén le permite conservar la información contextual durante una ejecución del script.
- El objeto Variables contiene todas las variables que agregue a la integración de script.
- La función fetch es una implementación de la función estándar fetch de JavaScript.
- La consola permite efectuar la depuración.
Como los scripts de Creador de bots funcionan en el servidor, se deben considerar algunas limitaciones al generar sus scripts.
Objeto Bot
El objeto Bot contiene métodos que activan las acciones de bot. Al escribir un script, el editor web le ofrece todos los métodos disponibles, con sus argumentos y tipos. Los métodos a continuación están disponibles cuando se usa el objeto Bot:
- sendMessage
- sendButtons
- sendQuickReplies
- sendCards
- sendMultimedia
- sendRichLink
- sendListPicker
- handover
- addTags
- waitForResponse
- fillSlot
- slots
- sendAsCustomer
Muchos métodos en el objeto Bot se pueden personalizar de manera opcional con un parámetro de options. Options puede ser fallbackText (respaldo) o typing (escritura inteligente). Los valores posibles de typing son 1, 2 o 3.
Options = {
"fallbackText": "this is the fallback text",
"typing": 2,
}
sendMessage
Ingrese un mensaje de texto sin formato para que el bot lo envíe. Utilice el formato .sendMessage(text: string, options: Options): void. El parámetro
Bot.sendMessage('This is message written by bot')
sendButtons
Configure y envíe hasta tres botones. Toda la configuración de los botones puede organizarse definiendo los atributos. Use el ejemplo a continuación para comparar la configuración de los botones en el cuadro de diálogo con los atributos en el script. Utilice el formato .sendButtons(text: string, buttons: ButtonPayload[], options: Options): void. El parámetro
Bot.sendButtons('This is message written by bot', [
{
title: 'Button 1',
intent: {
name: 'mood'
}
}
])
También puede activar
Combinar estos atributos puede generar un error o un comportamiento inesperado.
// triggers intent
{
title: 'Title',
intent: 'mood'
}
// triggers intent with entity value
{
title: 'Title',
intent: {
name: 'mood',
entity: 'myEntity',
value: 'entity value'
}
}
// url
{
title: 'Title',
url: 'https://www.nice.com'
}
// text
{
title: 'Title',
text: 'This is a text'
}
sendQuickReplies
Configure y envíe hasta tres respuestas rápidas. Toda la configuración de las respuestas rápidas puede organizarse definiendo los atributos. Las opciones para las respuestas rápidas son las mismas opciones que para los botones. Utilice el formato .sendQuickReplies(text: string, quickReplies: QuickReplyPayload[], options: Options): void. El parámetro
Bot.sendQuickReplies('This is message written by bot', [
{
title: 'Quick reply 1',
intent: {
name: 'mood'
}
}
])
También puede activar
Combinar estos atributos puede generar un error o un comportamiento inesperado.
// triggers intent
{
title: 'Title',
intent: 'mood'
}
// triggers intent with entity value
{
title: 'Title',
intent: {
name: 'mood',
entity: 'myEntity',
value: 'entity value'
}
}
// url
{
title: 'Title',
url: 'https://www.nice.com'
}
// text
{
title: 'Title',
text: 'This is a text'
}
sendCards
Configure y envíe hasta 10 tarjetas. Utilice el formato .sendCards(cards: CardPayload[], options: Options): void. El parámetro
Bot.sendCards([{
title: 'Card title',
description: 'Card description',
image: 'https://picsum.photos/200/300',
mimetype: 'image/jpeg',
button: {
title: 'Button title',
url: 'https://www.nice.com/'
}
}])
sendMultimedia
Creador de bots no valida el contenido multimedia, pero puede validarse en otras integraciones. El contenido en la URL debe estar disponible todo el tiempo en que se use el script. También debe ser de acceso público, ya que se descargará reiteradamente durante la ejecución del script. Las restricciones para el tipo y el tamaño del medio son las mismas que cuando usa una acción de bot multimedia. Utilice el formato .sendMultimedia(url: string, mimetype: string, options: Options): void. El parámetro
Bot.sendMultimedia('https://picsum.photos/200/300', 'image/jpeg')
sendRichLink
Configure y envíe un enlace enriquecido. Utilice el formato .sendRichLink(richlink: RichLinkPayload): void.
Bot.sendRichLink({
title: 'Title',
url: 'https://www.nice.com',
image: 'https://picsum.photos/200/300',
mimetype: 'image/jpeg'
})
sendListPicker
Configure y envíe hasta 12 opciones de selectores de listas. Todas las opciones de selectores de listas pueden organizarse definiendo los atributos. Las opciones para los selectores de listas son las mismas opciones que para los botones. Utilice el formato .sendListPicker(message: string, description: string, actions: ListPickerPayload[], options: Options): void. El parámetro
Bot.sendListPicker('Message', 'Description', [{
title: 'Title',
description: 'Description',
image: {
url: 'https://picsum.photos/200/300',
mimetype: 'image/jpeg'
}
intent: {
name: 'mood'
}
}])
handover
Configure adónde va la transferencia Cualquier mensaje de contacto que deba activar la transferencia a un agente en vivo usando un
Para ubicar un queueId:
-
En CXone, haga clic en el selector de aplicaciones y seleccioneACD.
-
Ir aDigital Experience >Colas de enrutamiento.
-
Localice la cola para la que necesita la ID y haga clic en Editar.
-
En la página editar de la cola, observe la URL en su navegador. El número después de /edit/ es el queueId. Debe tener cinco grupos de números y letras separados por guiones. Por ejemplo, 67bf5865-4556-40db-ba44-6c0cc3f88ffa.
Bot.handover(null)
// or
Bot.handover('queueId')
addTags
Configure qué etiquetas se deben aplicar. Las etiquetas que se usen en el script ya deben existir en Creador de bots. Si en el script se llama a una etiqueta, pero esta no existe, la acción se ignora. Utilice el formato .addTags(tags: string[]): void.
Bot.addTags(['Tag 1', 'Tag 2'])
waitForResponse
En ciertos casos, debe esperar una respuesta del cliente y continuar con la ejecución de su script. Como la comunicación con el cliente es asincrónica, la espera de una respuesta también lo es. El método Bot.waitForResponse toma un parámetro: el nombre de la función que se ejecutará tras recibir una respuesta. Utilice el formato .waitForResponse(functionName: string): void.
Esta función tiene un comportamiento postergado. Esto implica que el resultado no tiene efecto inmediato al ejecutarse. En cambio, debe finalizar primero la ejecución del script actual. Si desea que el script finalice con una función de comportamiento postergado, debe detener la ejecución del script de forma explícita usando una declaración de retorno o condiciones.
function main() {
console.log('Testing wait for response')
Bot.waitForResponse('response') //The script continues to run and the next line executes while listening for a customer response
console.log('This is still going to be executed')
}
function response() {
console.log('Customer responded', Bot.slots['last customer message'].value)
}
fillSlot
Configure qué extracto Entidad extraída del mensaje del contacto y guardada para usar en las respuestas del bot. Similar a una variable. se debe aplicar. Los extractos que se usen en el script ya deben existir en Creador de bots. Si en el script se llama a un extracto pero este no existe, la acción se ignora.
Si solo desea almacenar el valor para la ejecución del script, use una variable local o el objeto Almacén. Utilice el formato .fillSlot(name: string, value: any[]): void.
Para acceder al valor real del extracto, debe acceder al atributo .value.
function main() {
Bot.fillSlot('slotName', 'slotValue');
console.log(Bot.slots.slotName.value);
}
slots
En la notación por puntos, el editor puede ofrecer los extractos Entidad extraída del mensaje del contacto y guardada para usar en las respuestas del bot. Similar a una variable. disponibles, pero esto solo es válido cuando los nombres de los extractos no contienen espacios ni caracteres especiales. En aquellos casos donde los nombres de los extractos tienen espacios o caracteres especiales, se debe usar la notación con corchetes.
console.log(Bot.slots)
// example
let contactId = Bot.slots['contact.id'].value
let lastCustomerMessage = Bot.slots['last customer message'].value
sendAsCustomer
Esta función le permite agregar lo que el contacto La persona que interactúa con un agente, IVR o bot en su centro de contacto. podría decir a sus historias Se utiliza para entrenar al bot para el manejo de interacciones según la intención y el contexto y reglas Se usa para definir la respuesta del bot a los mensajes que no cambian con el contexto.. Utilice el formato .sendAsCustomer(text: string): void.
Esta función tiene un comportamiento postergado. Esto implica que el resultado no tiene efecto inmediato al ejecutarse. En cambio, debe finalizar primero la ejecución del script actual. Si desea que el script finalice con una función de comportamiento postergado, debe detener la ejecución del script de forma explícita usando una declaración de retorno o condiciones.
Bot.sendAsCustomer('Hello bot')
Objeto Almacén
Store es un objeto creado para almacenar datos durante la ejecución del script. En comparación con una variable local, tiene la ventaja de poder usarse en diversas funciones .waitForResponse.
set , get
Store.set(name: string, value: any[]): void
Store.get(name: string): any[]
function main() {
Store.set('token', 'my-secret-token')
Bot.waitForResponse('response')
}
async function response() {
console.log(Store.get('token')) // my-secret-token is logged
}
Objeto Variables
El objeto Variables contiene las variables que crea en la integración de script. Cada variable es una propiedad de Variables. Cada variable tiene un conjunto de subpropiedades que contiene información sobre ella. En el ejemplo a continuación, se observa una variable de selección llamada colorChoice:
"colorChoice": {
"defaultValue": "red",
"options": [
"red",
"green",
"blue"
],
"type": "select",
"value": "red",
"name": "colorChoice"
}
En el ejemplo, la lista de valores asignados a la variable está contenida en la propiedad options.
Las propiedades defaultValue y value contienen el mismo valor, inicialmente. Si no especifica un valor predeterminado para una variable de selección, el valor predeterminado es null. Los valores de las variables no se pueden modificar en el script, pero se pueden hacer editables y, después, cambiarse cuando la acción se usa en una historia o regla.
Hacer referencia a variables de un script
Hacer referencia al valor de una variable usando notación por puntos: Variables.varName.value
Hacer referencia a la lista de opciones en una variable de selección: Variables.varName.options
Ver las variables existentes en una integración de script
Puede ver una lista de las variables existentes y sus propiedades en el script agregando la siguiente línea a su código y, después, ejecutando el script. La lista aparece en la consola. El código es: console.log(Variables). De manera similar, puede ver el contenido de una única variable agregando console.log(Variables.varName.value) o console.log(Variables.varName.options) a su script.
Funciones fetch
fetch(url: string, ?options), donde las posibles opciones son:
- método: 'GET', 'POST', 'PUT', 'DELETE'
- encabezados
- form_params
- json
- cuerpo
Use fetch para comunicarse con las API. Puede ser cualquiera de las API de CXone o la suya propia.
const URL = 'https://nice.com'
async function main() {
// 1. using async/await
try {
const response1 = await fetch(URL, { 'method': 'GET' })
console.log(
'response 1',
response1.ok,
response1.status,
response1.statusText,
response1.url,
response1.headers
)
console.log('response 1', await response1.text())
} catch (exception) {
console.log('Error occured', exception)
}
// 2. using Promises
fetch(URL, { 'method': 'GET' })
.then(response => {
console.log(
'response 2',
response.ok,
response.status,
response.statusText,
response.url,
response.headers
)
return response.text()
})
.then(response => {
console.log('response 2', response)
})
.catch(exception => {
console.log('Error occured', exception)
})
// 3. using fetchSync
try {
const response3 = fetchSync(URL, { 'method': 'GET' })
console.log('response 3', response3)
} catch (exception) {
console.log('Error occured', exception)
}
}
fetchSync
La función fetch es una implementación estándar de fetch de JavaScript, que devuelve la Promesa y, además, implementa las funciones .json() o .text() en la respuesta.
También existe una variante sincrónica fetchSync, que devuelve la respuesta directamente, no la Promesa. Si desea mantener la coherencia con el mundo asincrónico de JavaScript, use una función fetch estándar.
Función console
log
Utilice el formato console.log(…output: any[]): void.
console.log('my log', 123, {pi: 3.14})
warn
Utilice el formato console.warn(…output: any[]): void.
console.warn('my warn', 123, {pi: 3.14})
info
Utilice el formato console.info(…output: any[]): void.
console.info('my info output', 123, {pi: 3.14})
debug
Utilice el formato console.debug(…output: any[]): void.
console.debug('my debug output', 123, {pi: 3.14})
error
Utilice el formato console.error(…output: any[]): void.
console.error('my error output', 123, {pi: 3.14})
Gestión de errores
onError
Puede gestionar los errores de excepciones imprevistas definiendo su función onError.
let onError = (e) => console.log('my handler', e.message)
function main() {
Bot.nonExistentMethod()
}
Limitaciones de scripting para Creador de bots CXone
Los scripts personalizados escritos en Creador de bots funcionan en el servidor. A continuación, se detallan las restricciones actuales que garantizan el rendimiento óptimo tanto de los scripts como del servidor:
- Estructura: Todo el código debe estar contenido dentro de la función main. No se ejecutará el código que esté fuera de una función.
- Límite máximo de eventos: cada script está limitado a un máximo de 200 eventos por ejecución del script. Los eventos incluyen cada función y cualquiera de las acciones activadas por cada función.
- Límite de memoria: cada ejecución del script tiene una memoria máxima de 10 MB.
- Límite del tiempo de ejecución: la ejecución de cada script tiene un límite de 10 segundos.
- Límite de invocación para las funciones del bot: las siguientes funciones del bot pueden invocarse un máximo de 20 veces por cada ejecución del script:
- sendMessage
- sendButtons
- sendQuickReplies
- sendCards
- sendMultimedia
- sendRichLink
- sendListPicker
- handover
- addTags
- waitforResponse
- Límite de invocación para fillSlot: la función fillSlot puede invocarse un máximo de 100 veces por cada ejecución del script.
- Límite de invocación para la función console : las funciones console a continuación pueden invocarse un máximo de 100 veces por cada ejecución del script:
- log
- info
- warn
- debug
- error
- Límite de invocación para fetchSync: el método fetchSync puede invocarse un máximo de 20 veces por cada ejecución del script.