Integraciones de script

You can create your own script actions in Bot Builder. This allows you to customize how your bot responds in conversations. Script actions are custom bot actions you can use in dialoguesClosed Historias, reglas y flujos en Bot Builder. to define the bot's responses during conversations.

Las acciones de script se crean en las integraciones de script en Bot Builder. Las integraciones de script admiten JavaScript. Cada integración de script puede tener más de una acción. Cuando está habilitada una acción, está disponible en el menú de acciones del bot cuando agrega una respuesta de bot a una historiaClosed Se usa para entrenar a un bot para el manejo de interacciones según la intención y el contexto., reglaClosed Se usa para definir la respuesta de un bot a mensajes que no cambian según el contexto. o alternativaClosed texto sin formato alternativo que se envía cuando el destino no admite contenido multimedia enriquecido..

La siguiente lista ofrece ejemplos de algunas formas en las que puede utilizar acciones de script:

  • Escribir código para diseñar una acción de bot que satisfaga las necesidades únicas de su organización.
  • Llame a su propia API externa como una acción del script.
  • Agregue Scripts a las habilidades de bot y publíquelas en la Skill Store.

Los scripts de Bot Builder operan en el servidor, por lo que hay algunas Limitaciones que se deben considerar al crear 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 script desde las propiedades de cada acción.

En el editor, puede ingresar código en el lado izquierdo y luego hacer clic en el triángulo de ejecución Una flecha triangular que apunta hacia la derecha. para ver los resultados en el panel Console.

Use AI para Crear o Editar un script

El contenido de esta sección corresponde a un producto o función que forma parte de un programa de vista previa pública. Si usted no forma parte de la vista previa y desea obtener más información, comuníquese con su representante de cuenta.

Utilice la pestaña Script editor para mostrar el Agente Copilot, donde puede interactuar utilizando lenguaje natural para crear, comprender y modificar scripts de manera más eficiente. Con el Agente Copilot en el Script editor, puede:

  • Generar nuevos Scripts usando avisos de lenguaje natural.

  • Edite los Scripts existentes solicitándole al Agente Copilot que agregue validaciones, condiciones o lógica.

  • Compare las sugerencias de código, visualice comparaciones en paralelo de su código original y el código generado por Agent Copilot.

  • Aceptar o Rechazar las sugerencias de Copilot con un solo clic.

  • Cuando el Agente Copilot genera scripts que hacen referencia a nuevas variables (slots), estas se crean automáticamente y se reflejan en la sección Slots.

  • Instrucciones de varios turnos, en las que puede hacer preguntas de seguimiento o refinar su instrucción (prompt) para mejorar el script de manera iterativa.

  • Contraer el panel de Agente Copilot para una vista de edición más limpia.

Un desarrollador de bots está creando un script para validar la entrada de un usuario para un número de cuenta. En lugar de escribir manualmente la lógica de validación, el desarrollador utiliza Agente Copilot en el Script editor.

El desarrollador escribe un mensaje: "¿Puedes agregar validación para verificar si el número de cuenta tiene 10 dígitos?"

Agente Copilot genera un script con la lógica de validación adecuada.

El desarrollador revisa los cambios {15}sugeridos, los compara con el código original y hace clic en aceptar{18} para aplicar la actualización.

El agente Copilot también detecta que se hace referencia a una nueva ranura accountNumber y la agrega automáticamente a la sección Slots.

El desarrollador continúa refinando el script al hacer preguntas de seguimiento como:

“Agregue un mensaje de error si la entrada no es válida.”

Variables de script

Puede crear variables para usarlas en Bot Builder Scripts. Las variables pueden almacenar un valor para usar en otra parte del script. solo se pueden utilizar en la integrar de scripts donde los crea, pero puede utilizarlos en cualquiera de los scripts de esa integrar.

Los valores de Variable no se pueden cambiar en el script. solo se pueden modificar en la página de integrar del script o cuando se usa una acción que hace referencia a la variable en una respuesta de bot en una historiaClosed Se usa para entrenar a un bot para el manejo de interacciones según la intención y el contexto. , reglaClosed Se usa para definir la respuesta de un bot a mensajes que no cambian según el contexto., o alternativaClosed texto sin formato alternativo que se envía cuando el destino no admite contenido multimedia enriquecido..

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 Bot Builder 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 del script, donde puede ingresar texto en el campo para asignar un valor a la variable.
  • Number: Las variables Number contienen valores numéricos. Una variable de número editable se convierte en un campo en la UI de la acción del script, donde puede ingresar un número en el campo para asignar un valor a la variable.
  • Seleccionar: Use variables de selección cuando desee definir múltiples valores posibles para la variable. Una variable de selección se convierte en una lista desplegable en la UI de la acción del script. 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, Bot Builder enmascara con asteriscos ( * ) todos los caracteres excepto los cinco primeros. El valor es de solo lectura y no puede sobrescribirse ni cambiarse mediante el script ni mediante la acción del script. Si necesita cambiarlo, debe actualizar el valor en la página Variable en el script. Las variables de Secreto no se pueden hacer editables.

Puede definir un valor predeterminado para variables de tipo texto, número y selección. Cuando la Variable es editable, el valor predeterminado se puede sobrescribir seleccionando o ingresando un valor diferente al agregar la acción a una respuesta del bot. Cuando la Variable no se puede editar pero se hace referencia a ella en el script de una acción, se utiliza el valor predeterminado, si tiene uno. Si no hay un valor predeterminado asignado, la variable no tiene valor en el script.

Las variables que usted crea se agregan al objeto Variables en el integrar de script.

Objetos y Funciones estándar

Además de las funcionalidades estándar de JavaScript, Bot Builder 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 mantener la información de contexto para una ejecución de script.
  • El objeto variables contiene todas las variables que agregue a la integrar de script.
  • La función fetch es una implementación del estándar JavaScript fetch.
  • La consola permite efectuar la depuración.

Debido a que los scripts de Bot Builder operan en el servidor, hay algunas Limitaciones que se deben tener en cuenta al momento de crear sus scripts.

Objeto Bot

El objeto Bot contiene métodos que activan acciones de script. Al escribir un script, el editor web le muestra todos los métodos disponibles, incluidos sus argumentos y tipos. Los siguientes métodos están disponibles cuando se usa el objeto Bot:

Muchos métodos en el objeto Bot pueden personalizarse opcionalmente con un parámetro options. Options puede ser fallbackText (alternativa) o typing (Smart Typing). Los valores posibles para typing son 1, 2 o 3.

Options = {
	"fallbackText": "this is the fallback text",
	"typing": 2,
}

sendMessage

Escriba un mensaje de texto sin formato para que el bot lo envíe. Utilice el formato .sendMessage(text: string, options: Options): void. El options parámetro no es obligatorio.

Bot.sendMessage('This is message written by bot')

sendAdaptiveCard

Introduzca la carga útil para el Adaptive Cardque desee enviar. Utilice el formato .sendAdaptiveCard(adaptiveCard: AdaptiveCardPayload, options: Options): void. El options parámetro no es obligatorio.

Puede encontrar la carga útil de su tarjeta adaptable en el diseñador de Adaptive Card. En Bot Builder, vaya a Preferencias > Adaptive Cards, luego copie el contenido del panel editor de Carga útil de tarjeta. Puede obtener más información sobre cómo trabajar conAdaptive Cards en Bot Builder.

Bot.sendAdaptiveCard(<Valid_Adaptive Card_JSON_Payload>)

sendButtons

Configure y envíe hasta tres botones. Todas las configuraciones de los botones se pueden organizar mediante atributos de configuración. Utilice el ejemplo a continuación para comparar la configuración de los botones en el diálogo con los atributos en el script. Utilice el formato .sendButtons(text: string, buttons: ButtonPayload[], options: Options): void. El options parámetro no es obligatorio.

Bot.sendButtons('This is message written by bot', [
{
	title: 'Button 1',
	intent: {
		name: 'mood'
	}
}
])

También puede activar entityValue, texto o URL a través de su script.

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. Todas las configuraciones de respuesta rápida se pueden organizar mediante atributos de configuración. 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 options parámetro no es necesario.

Bot.sendQuickReplies('This is message written by bot', [
{
	title: 'Quick reply 1',
	intent: {
		name: 'mood'
	}
}
])

También puede activar el valor de la entidad value, text o url mediante su script.

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 options parámetro no es obligatorio.

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

Bot Builder 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. Asimismo, debe ser accesible públicamente, ya que se descargará repetidamente cuando se ejecute script. El tipo de soporte de medios y las restricciones de tamaño son los mismos que cuando usted usa un acción de bot multimedia. Utilice el formato .sendMultimedia(url: string, mimetype: string, options: Options): void. El options parámetro no es obligatorio.

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 del selector de lista. Todas las opciones del selector de lista se pueden organizar mediante la configuración de atributos. Las opciones para el selector de lista son las mismas que las opciones para botones. Utilice el formato .sendListPicker(message: string, description: string, actions: ListPickerPayload[], options: Options): void. El options parámetro no es obligatorio.

Bot.sendListPicker('Message', 'Description', [{
	title: 'Title',
	description: 'Description',
	image: {
		url: 'https://picsum.photos/200/300',
		mimetype: 'image/jpeg'
	}
	intent: {
		name: 'mood'
	}
}])

handover

Configure dónde se dirige el handoverClosed La transferencia de un contacto desde un agente virtual a un agente en vivo. mediante un queueId. Esto puede quedar null para usar la redirección automática, o puede ser el ID de una cola existente. Utilice el formato .handover(queueId: string, note: stringId): void. El parámetro note es opcional, pero es obligatorio queueId.

Para ubicar un queueId:

  1. En NiCE CXone, haga clic en el selector de aplicaciones y seleccione ACD.

  2. Vaya a Digital Experience (DX) > Routing Colas.

  3. Localice la cola para la que necesita la ID y haga clic en Editar.

  4. En la página de edición de la cola, observe la URL en su navegador. El número después de /edit/ es el queueId. Debe tener el aspecto de cinco conjuntos 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 Bot Builder. 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 algunos 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 su lugar, primero debe finalizar la ejecución del script actual. Si desea que el script finalice con una función de comportamiento posponer, debe detener explícitamente la ejecución del script mediante 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é extractoClosed Entidad extraída del mensaje del contacto y guardada para su uso en las respuestas del bot. Similar a una variable. se debe aplicar. Cualquier espacios utilizados en el script deben existir ya en Bot Builder. 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, utilice una variable local o utilice el objeto Store. Utilice el formato .fillSlot(name: string, value: any[]): void.

Para acceder al valor real del slot, 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 extractosClosed Entidad extraída del mensaje del contacto y guardada para su uso 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 contactoClosed La persona que interactúa con un agente, IVR o bot en su centro de contacto. podría decir a sus historiasClosed Se usa para entrenar a un bot para el manejo de interacciones según la intención y el contexto. y reglasClosed Se usa para definir la respuesta de un bot a mensajes que no cambian según 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 su lugar, primero debe finalizar la ejecución del script actual. Si desea que el script finalice con una función de comportamiento posponer, debe detener explícitamente la ejecución del script mediante 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 que se puede usar en múltiples 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 usted crea en la integración del 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 al Variable está Contenida en la propiedad options.

Las propiedades defaultValue y value contienen el mismo valor, inicialmente. Si no especifica un valor predeterminado para un Variable de selección, el valor predeterminado es null. Los valores de Variable no se pueden cambiar en el script, pero se pueden hacer editables, luego cambiados cuando la acción se usa en una historia o regla.

Hacer referencia a variables de un script

Hacer referencia a un valor de 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 Integrar 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 sola Variable agregando console.log(Variables.varName.value) o console.log(Variables.varName.options)a su script.

fetch Funciones

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. Estas pueden ser cualquiera de las API de NiCE CXone o las suyas propias.

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.

console Función

console se usa para probar su script. Puede registrar cualquier dato. El resultado del registro se almacena también en el historial de conversaciones, pero no se envía al contactoClosed La persona que interactúa con un agente, IVR o bot en su centro de contacto..

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 Error

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()
}

Hashing Funciones

You puede usar la biblioteca CryptoJS en sus scripts en Bot Builder. Por ejemplo:

const cryptojs = require('crypto-js');x
var hash = CryptoJS.SHA256("TOKEN");

Puede obtener más información sobre cómo trabajar con esta biblioteca en el sitio web de la documentación de CryptoJS An icon of a square with an arrow  pointing from the center out to the upper right corner..