Integrações de scripts

É possível criar as suas próprias ações de script no Bot Builder. Isso permite personalizar como o bot responde nas conversas. As ações de script são ações de bot personalizadas que você pode usar em diálogosFechado Histórias e regras de bot no CXone Bot Builder. para definir as respostas do bot durante as conversas.

As ações de script são criadas em integrações de script no Bot Builder. As integrações de scripts são compatíveis com o JavaScript. Cada integração de scripts pode ter mais de uma ação. Quando uma ação é ativada, ela fica disponível no menu de ações de bot ao se adicionar uma resposta de bot a uma históriaFechado Usado para treinar bot para manipulação de interação com base na intenção e contexto, regraFechado Usado para definir a resposta do bot a mensagens que não mudam com o contexto. ou alternativaFechado Estes sites são para o desenvolvimento e suporte do CXone, e não para sua operação. Bloqueá-los pode interferir no acesso à ajuda e aos links de download na plataforma..

A lista a seguir fornece exemplos de algumas maneiras de se usar as ações de script:

  • Crie código para projetar uma ação de bot que atenda às exigências específicas da sua organização.
  • Denomine a sua própria API externa como uma ação de script.
  • Adicione scripts às competências do bot e publique-os no Skill Store.

Os scripts do CXone Bot Builder atuam no servidor e, portanto, há algumas limitações a serem levadas em conta ao se criar os scripts.

Editor de scripts

Uma integração de scripts pode ter mais de uma ação. Cada ação tem o seu próprio script. É possível acessar o editor de scripts a partir das propriedades de cada ação.

No editor, é possível digitar o código à esquerda e, em seguida, clicar no triângulo de execução Uma seta triangular apontando para a direita., para exibir os resultados no painel Console.

Variáveis de scripts

É possível criar variáveis para uso em scripts Bot Builder. As variáveis são capazes de armazenar um valor, a ser utilizado em outra parte do script. Elas podem ser utilizadas apenas na integração de scripts em que você as criou. Porém, podem ser utilizadas em qualquer um dos scripts desta integração.

Não é possível alterar os valores de variáveis no script. Eles podem ser modificados apenas na página de integração de scripts ou quando uma ação que se refere à variável for utilizada em uma resposta de bot em uma históriaFechado Usado para treinar bot para manipulação de interação com base na intenção e contexto, regraFechado Usado para definir a resposta do bot a mensagens que não mudam com o contexto. ou alternativaFechado Estes sites são para o desenvolvimento e suporte do CXone, e não para sua operação. Bloqueá-los pode interferir no acesso à ajuda e aos links de download na plataforma..

Para poder utilizar uma variável em uma ação:

  • É necessário que o script da ação faça referência à variável.
  • Ele deve ser editável nessa ação, caso você quiser alterar o valor.

Os scripts do Bot Builder são compatíveis com quatro tipos de variáveis:

  • Texto: as variáveis de texto contêm valores simples de sequências de caracteres. Uma variável de texto editável torna-se um campo na IU da ação de script, onde é possível digitar texto no campo para atribuir um valor à variável.
  • Número: as variáveis numéricas contêm valores numéricos. Uma variável numérica editável torna-se um campo na IU da ação de script, onde é possível digitar um número no campo para atribuir um valor à variável.
  • Selecionada: utilize variáveis selecionadas quando você quiser definir vários valores possíveis da variável. Uma variável selecionada se torna uma lista suspensa na IU da ação de script. As opções da lista suspensa são definidas no campo Valores, na definição da variável da guia Scripts.
  • Secreta: use variáveis secretas para conter dados privados, como tokens ou credenciais API. Depois que tiver digitado o valor, o Bot Builder irá mascarar todos os caracteres, exceto os cinco primeiros, com asteriscos ( * ). O valor destina-se apenas à leitura e não pode ser sobrescrito nem alterado pelo script ou por uma ação de script. Caso você precise alterá-lo, será necessário atualizar o valor na página Variável do script. As variáveis secretas não podem ser editáveis.

É possível definir um valor padrão para texto, número e variáveis selecionadas. Quando a variável for editável, o valor padrão poderá ser sobrescrito selecionando-se ou digitando-se outro valor, quando se adiciona a ação a uma resposta de bot. Quando a variável não for editável, mas for referida pelo script de uma ação, será utilizado o valor padrão, caso haja algum. Caso nenhum padrão tenha sido designado, a variável não terá valor no script.

As variáveis que você criar são adicionadas ao objeto Variables na integração de scripts.

Objetos e funções padrão

Além das funcionalidades JavaScript padrão, o CXone Bot Builder possui a seguinte estrutura específica para bot:

  • O objeto Bot fornece uma maneira alternativa de criar como seu bot responde nas conversas.
  • O objeto Store permite manter as informações de contexto para a execução de um script.
  • O objeto Variáveis contém todas as variáveis adicionadas à integração de scripts.
  • A função fetch é uma implementação do fetch de JavaScript padrão.
  • O console permite a depuração.

Como os scripts do CXone Bot Builder atuam no servidor, há algumas limitações a serem consideradas na criação de scripts.

Objeto Bot

O objeto Bot contém métodos que desencadeiam ações de script. Ao escrever um script, o editor web apresenta todos os métodos disponíveis, incluindo seus argumentos e tipos. Os seguintes métodos estão disponíveis ao usar o objeto Bot:

Muitos métodos no objeto do Bot podem ser opcionalmente personalizados com um parâmetro options. O Options pode ser do tipo fallbackText (alternativa) ou typing (digitação inteligente). Os possíveis valores de typing são 1, 2 ou 3.

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

sendMessage

Insira uma mensagem de texto simples para o bot enviar. Utilize o formato .sendMessage(text: string, options: Options): void. O optionsparâmetro não é obrigatório.

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

sendAdaptiveCard

Insira a carga útil para o Cartão adaptável que quer enviar. Utilize o formato .sendAdaptiveCard(adaptiveCard: AdaptiveCardPayload, options: Options): void. O optionsparâmetro não é obrigatório.

Você pode encontrar a carga útil para o seu cartão adaptável no criador de Cartão adaptável. No Bot Builder, vá para Preferências > Cartões adaptáveis e em seguida copie o conteúdo do painel de Editor de carga útil do cartão. Você pode aprender mais sobre o uso de Cartões adaptáveis no Bot Builder.

Bot.sendAdaptiveCard(<Valid_Cartão adaptável_JSON_Payload>)

sendButtons

Configure e envie até três botões. Todas as configurações dos botões podem ser organizadas definindo atributos. Use o exemplo abaixo para comparar as configurações do botão na caixa de diálogo com os atributos do script. Utilize o formato .sendButtons(text: string, buttons: ButtonPayload[], options: Options): void. O parâmetro options não é obrigatório.

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

Você também pode acionar entityValue, texto ou URL por meio do seu script.

A combinação desses atributos pode resultar em erro ou um comportamento 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 e envie até três respostas rápidas. Todas as configurações de respostas rápidas podem ser organizadas definindo atributos. As opções de respostas rápidas são iguais às opções de botões. Utilize o formato .sendQuickReplies(text: string, quickReplies: QuickReplyPayload[], options: Options): void. O options parâmetro não é obrigatório.

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

Você também pode acionar value, text ou url de entidade por meio do seu script.

A combinação desses atributos pode resultar em erro ou um comportamento 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 e envie até 10 cartões. Utilize o formato .sendCards(cards: CardPayload[], options: Options): void. O parâmetro options não é obrigatório.

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

A multimídia não é validada pelo CXone Bot Builder, mas pode ser validada em outras integrações. O conteúdo do URL deve estar disponível durante todo o tempo em que o script for usado. Ele também deve ser acessível publicamente, pois será baixado repetidamente quando o script for executado. As restrições de tipo e tamanho de mídia são as mesmas de quando você usa uma ação de bot multimídia. Utilize o formato .sendMultimedia(url: string, mimetype: string, options: Options): void. O parâmetro options não é obrigatório.

Bot.sendMultimedia('https://picsum.photos/200/300', 'image/jpeg')

sendRichLink

Configure e envie um link avançado. Utilize o 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 e envie até 12 opções de seletor de lista. Todas as opções do seletor de lista podem ser organizadas definindo atributos. As opções de seletor de lista são iguais às opções de botões. Utilize o formato .sendListPicker(message: string, description: string, actions: ListPickerPayload[], options: Options): void. O parâmetro options não é obrigatório.

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

handover

Configure para onde vai a transferênciaFechado Qualquer mensagem de contato que deve desencadear transferência para um agente ao vivo, usando um queueId. Isso pode permanecer null, para usar o redirecionamento automático, ou pode ser o ID de uma fila existente. Utilize o formato .handover(queueId: string, note: stringId): void. O parâmetro note é opcional, mas queueId é obrigatório.

Para localizar um queueId:

  1. No CXone, clique no seletor de aplicativos e selecioneACD.

  2. Vamos para Digital Experience > Filas de roteamento.

  3. Localize a fila para a qual você precisa do ID e clique em Editar.

  4. Na página de edição da fila, observe o URL em seu navegador. O número após /edit/ é o queueId. Deve ser cinco conjuntos de números e letras divididos por traços. Por exemplo, 67bf5865-4556-40db-ba44-6c0cc3f88ffa.

Bot.handover(null)
// or
Bot.handover('queueId')

addTags

Configure quais tags devem ser aplicadas. Quaisquer tags usadas no script já devem existir no CXone Bot Builder. Se uma tag for chamada no script, mas não existir, a ação será ignorada. Utilize o formato .addTags(tags: string[]): void.

Bot.addTags(['Tag 1', 'Tag 2'])

waitForResponse

Em alguns casos, você precisa aguardar a resposta do cliente e continuar com a execução do script. Como a comunicação com o cliente é assíncrona, a espera pela resposta também é assíncrona. O método Bot.waitForResponse usa um parâmetro: o nome da função que será executada após o recebimento de uma resposta. Utilize o formato .waitForResponse(functionName: string): void.

Esta função tem um comportamento adiado. Isso significa que o resultado não é efetivado imediatamente quando executado. A execução de um script atual deve terminar primeiro. Se quiser que o script termine com a função de comportamento adiado, você deverá interromper explicitamente a execução do script usando uma instrução ou condições de retorno.

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 qual slotFechado Entidade extraída da mensagem do contato e salva para uso em respostas de bot. Semelhante a uma variável. deve ser aplicado. Quaisquer slots usados no script já devem existir no CXone Bot Builder. Se um slot for chamado no script, mas não existir, a ação será ignorada.

Se quiser apenas armazenar o valor para execução do script, use uma variável local ou use o objeto Store. Utilize o formato .fillSlot(name: string, value: any[]): void.

Para acessar o valor real do slot, você deve acessar o atributo .value.

function main() {
	Bot.fillSlot('slotName', 'slotValue');
	console.log(Bot.slots.slotName.value);
}

slots

Na notação de ponto, o editor pode solicitar slotsFechado Entidade extraída da mensagem do contato e salva para uso em respostas de bot. Semelhante a uma variável. disponíveis, mas isso só é aplicável quando os nomes dos slots não contêm espaços ou caracteres especiais. Nos casos em que os nomes dos slots incluem espaços ou caracteres especiais, a notação de colchetes deve ser usada.

console.log(Bot.slots)

// example
let contactId = Bot.slots['contact.id'].value
let lastCustomerMessage = Bot.slots['last customer message'].value

sendAsCustomer

Essa função permite adicionar o que o contatoFechado A pessoa que interage com um agente, RVI ou bot em seu centro de contato. pode dizer nas suas históriasFechado Usado para treinar bot para manipulação de interação com base na intenção e contexto e regrasFechado Usado para definir a resposta do bot a mensagens que não mudam com o contexto.. Utilize o formato .sendAsCustomer(text: string): void.

Esta função tem um comportamento adiado. Isso significa que o resultado não é efetivado imediatamente quando executado. A execução de um script atual deve terminar primeiro. Se quiser que o script termine com a função de comportamento adiado, você deverá interromper explicitamente a execução do script usando uma instrução ou condições de retorno.

Bot.sendAsCustomer('Hello bot')

Objeto de armazenamento

O Store é um objeto criado para armazenar dados durante a execução do script. Comparado a uma variável local, ele tem a vantagem de poder ser usado em várias funções .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 Variáveis

O objeto Variables contém as variáveis que você criar na integração de scripts. Cada variável é uma propriedade de Variables. Cada variável contém um conjunto de subpropriedades que contêm informações sobre ela. O exemplo a seguir mostra uma variável selecionada, denominada colorChoice:

"colorChoice": {
  "defaultValue": "red",
  "options": [
	"red",
	"green",
	"blue"
	],
  "type": "select",
  "value": "red",
  "name": "colorChoice"
}		

No exemplo, a lista de valores atribuídos à variável estão contidos na propriedade options.

Inicialmente, as propriedades defaultValue e value contêm o mesmo valor. Se você não especificar o valor padrão de uma variável selecionada, o padrão será null. Não é possível alterar os valores de variáveis no script, mas podem se tornar editáveis e, em seguida, alterados quando a ação for utilizada em uma história ou regra.

Referência às variáveis de um script

Faça referência ao valor de uma variável utilizando a notação de pontos: Variables.varName.value

Faça referência à lista de opções de uma variável selecionada: Variables.varName.options

Exibir variáveis já existentes numa integração de scripts

É possível ver uma lista das variáveis já existentes e suas respectivas propriedades no script, adicionando-se a linha a seguir ao código e, em seguida, executando-se o script. A lista será exibida no console. O código é: console.log(Variables). Da mesma forma, é possível exibir o conteúdo de uma única variável, adicionando-se console.log(Variables.varName.value) ou console.log(Variables.varName.options) ao seu script.

Funções fetch

fetch(url: string, ?options), sempre que possível, as opções são:

  • method - 'GET', 'POST', 'PUT', 'DELETE'
  • headers
  • form_params
  • json
  • body

Use fetch para se comunicar com APIs. Elas podem ser qualquer uma das APIs do CXone ou sua própria.

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

A função fetch é uma implementação padrão de fetch JavaScript, que retorna Promise e também implementa funções .json() ou .text() na resposta.

Há também uma variante síncrona fetchSync, que retorna a resposta diretamente, e não Promise. Se você quiser permanecer coerente com o mundo assíncrono do JavaScript, utilize uma função fetch padrão.

Função console

O console é utilizado para testar o script. Você pode registrar quaisquer dados. O resultado do log também fica armazenado no histórico da conversa, mas não é enviado ao contatoFechado A pessoa que interage com um agente, RVI ou bot em seu centro de contato..

log

Utilize o formato console.log(…output: any[]): void.

console.log('my log', 123, {pi: 3.14})

warn

Utilize o formato console.warn(…output: any[]): void.

console.warn('my warn', 123, {pi: 3.14})

info

Utilize o formato console.info(…output: any[]): void.

console.info('my info output', 123, {pi: 3.14})

debug

Utilize o formato console.debug(…output: any[]): void.

console.debug('my debug output', 123, {pi: 3.14})

error

Utilize o formato console.error(…output: any[]): void.

console.error('my error output', 123, {pi: 3.14})

Resolução de erros

onError

É possível resolver erros de exceções inesperadas definindo a função onError.

let onError = (e) => console.log('my handler', e.message)
		
function main() {
	Bot.nonExistentMethod()
}

Funções de embaralhamento (hashing)

Você pode usar a biblioteca CryptoJS ao criar scripts no Bot Builder. Por exemplo:

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

Você pode saber mais sobre como trabalhar com esta biblioteca na página Documentação CryptoJS Um ícone de um quadrado com uma seta apontando do centro para o canto superior direito..