Intégrations de scripts

Vous pouvez créer votre propre actions de script dans Bot Builder. Vous pouvez ainsi personnaliser la façon dont votre bot réagit dans les conversations. Les actions de script sont des actions de robot personnalisées que vous pouvez utiliser dans les dialoguesClosed Scénarios, règles et flux dans Bot Builder. afin de définir les réponses du robot pendant les conversations.

Les actions de script sont créées dans les intégrations de script dans Bot Builder. Les intégrations de script prennent en charge JavaScript. Chaque intégration de script peut comporter plusieurs Action. Lorsqu’une action est activée, elle est disponible dans la liste des actions du robot lorsque vous ajoutez une réponse du robot à une histoireClosed Utilisées pour entraîner un bot à la gestion des interactions en fonction de l’intention et du contexte., une règleClosed Utilisées pour définir une réponse du bot à des messages qui ne changent pas selon le contexte. ou une solution de repliClosed Une solution de rechange en texte brut envoyée lorsque la destination ne prend pas en charge le contenu multimédia enrichi..

La liste suivante présente des exemples d'utilisation des actions de script :

  • Rédiger du code pour concevoir une action de robot afin de répondre aux besoins uniques de votre organisation.
  • Appeler votre propre API externe en tant qu'action de script.
  • Ajoutez des Scripts aux compétences de bot et publiez-les dans le Skill Store.

Les scripts Bot Builder fonctionnent sur le serveur, il existe donc certaines limitations à prendre en compte lors de la création de vos scripts.

Éditeur de scripts

Une intégration de script peut avoir plus qu'une action. Chaque d’action possède son propre script. Vous pouvez accéder à l'éditeur de script à partir des propriétés de chaque Action.

Dans l'éditeur, vous pouvez saisir du code à gauche, puis cliquer sur le triangle d'exécution Une flèche triangulaire pointant vers la droite. pour afficher les résultats dans le volet Console.

Utiliser AI pour créer ou modifier un script

Le contenu de cette section concerne un produit ou une fonctionnalité faisant partie d'un programme de version préliminaire publique. Si vous ne participez pas à cette version préliminaire et souhaitez obtenir davantage d'informations, contactez votre représentant commercial.

Utilisez l'Éditeur de scriptsonglet pour afficher l'Agent Copilot, où vous pouvez interagir en utilisant le langage naturel pour créer, comprendre et modifier les scripts plus efficacement. Avec l'Agent Copilot dans l'Éditeur de scripts, vous pouvez :

  • Générez de nouveaux Scripts à l'aide d'invites en langage naturel.

  • Modifiez des scripts existants en demandant à Agent Copilot d'ajouter des validations, des conditions ou une logique.

  • Comparez les suggestions de code et visualisez des comparaisons côte à côte entre votre code original et le code généré par l'Agent Copilot.

  • Acceptez ou Rejetez les Suggestions de Copilot en un seul clic.

  • Lorsque l'Copilot Agent génère des Scripts qui référencent de nouvelles variables (slots), celles-ci sont automatiquement créées et répercutées dans la section Slots.

  • Invite multi-tour, où vous pouvez poser des questions complémentaires ou affiner votre invite pour améliorer de façon itérative le script.

  • Réduire le panneau Agent Copilot pour une vue d'édition plus épurée.

Un développeur de bots crée un script pour valider la saisie d'un numéro de compte par un utilisateur. Au lieu d'écrire manuellement la logique de validation, le développeur utilise Agent Copilot dans l'Éditeur de script.

Le développeur saisit une requête : « Pouvez-vous ajouter une validation pour vérifier si le numéro de compte comporte 10 chiffres ? »

L'Agent Copilot génère un script avec la logique de validation appropriée.

Le développeur examine les modifications suggérées, les compare avec le code d'origine, puis clique sur Accepter pour appliquer la mise à jour.

L'Copilot Agent détecte également qu'un nouveau créneau accountNumber est référencé et l'ajoute automatiquement à la section Slots.

L'ingénieur de développement continue d'affiner le script en posant des questions de suivi telles que :

«ajouter un message d’erreur si la saisie n’est pas valide.»

Variables de script

Vous pouvez créer des variables à utiliser dans les Bot Builder scripts. Les variables peuvent stocker une valeur qui sera utilisée ailleurs dans le script. Elles ne peuvent être utilisées que dans l'intégration de scripts où vous les créez, mais vous pouvez les utiliser dans tous les scripts de cette intégration.

Les valeurs des Variable ne peuvent pas être modifiées dans le script. Elles ne peuvent être modifiées que sur la page d'intégration du script ou lorsqu'une action faisant référence à la variable est utilisée dans une réponse du bot dans une histoireClosed Utilisées pour entraîner un bot à la gestion des interactions en fonction de l’intention et du contexte., une règleClosed Utilisées pour définir une réponse du bot à des messages qui ne changent pas selon le contexte. ou une solution de repliClosed Une solution de rechange en texte brut envoyée lorsque la destination ne prend pas en charge le contenu multimédia enrichi..

Pour utiliser une variable dans une action :

  • Le script de l'action doit faire référence à la variable.
  • Il doit être rendu modifiable dans cette action, si vous souhaitez pouvoir modifier la valeur.

Les scriptsBot Builder prennent en charge quatre types de variables :

  • Texte : Les variables de texte contiennent des valeurs de chaîne simples. Une variable de texte modifiable devient un champ dans l'interface utilisateur de l'Action script où vous pouvez entrer du texte dans le champ pour affecter une valeur à la variable.
  • Nombre : Les variables Nombre contiennent des valeurs numériques. Une variable Nombre modifiable devient un champ dans l'interface utilisateur de l'Action script, dans lequel vous pouvez entrer un nombre pour attribuer une valeur à la variable.
  • Sélection : utilisez les variables de sélection lorsque vous souhaitez définir plusieurs valeurs possibles pour la variable. Une variable de sélection devient une liste déroulante dans l'interface utilisateur de l'action de script. Les Options de la liste déroulante sont définies dans le champ Valeurs de la définition de la Variable sous l'onglet Scripts.
  • Secret : utilisez les variables secret pour conserver des données privées, telles que des jetons ou des informations d'identification API. Après avoir saisi la valeur, Bot Builder masque tous les caractères, sauf les cinq premiers, à l’aide d’astérisques ( * ). La valeur est en lecture seule et ne peut pas être écrasée ou modifiée par le script ou via l'Action script. Si vous devez la modifier, vous devez mettre à jour la valeur sur la page Variable du script. Les variables secrètes ne peuvent pas être rendues modifiables.

Vous pouvez définir une valeur par défaut pour les variables de texte, de nombre et de sélection. Lorsque la Variable est modifiable, la valeur par défaut peut être remplacée en sélectionnant ou en saisissant une autre valeur lors de l'ajout de l'Action à une réponse de bot. Lorsque la Variable n'est pas modifiable mais qu'elle est référencée dans le script d'une Action, la valeur par défaut est utilisée, si elle en possède une. Si aucune valeur par défaut n'est attribuée, la variable n'a pas de valeur dans le script.

Les variables que vous créez sont ajoutées à l'objet Variables objet dans l'intégration de script.

Objets standards et Fonctions

En complément des fonctionnalités standard de JavaScript, Bot Builder dispose du framework suivant propre au robot :

  • L’objet Bot offre une solution différente pour déterminer comment votre robot interagit au cours des conversations.
  • L'objet Store vous permet de conserver les informations de contexte pour exécuter un script.
  • L'objet variables contient toutes les variables que vous ajoutez à l'intégration du script.
  • La fonction fetch est une implémentation du JavaScript fetch standard.
  • La console permet de procéder au débogage.

Étant donné que les scripts Bot Builder s'exécutent sur le serveur, il existe certaines limites à prendre en compte lors de la création de vos scripts.

Objet Bot

L'objet Bot contient des méthodes qui déclenchent script actions. Lors de l’écriture d’un script, l’éditeur Web indique toutes les méthodes disponibles, ce qui inclut leurs arguments et types. Les méthodes suivantes sont disponibles lorsque vous utilisez l’objet Bot :

De nombreuses méthodes de l'objet Bot peuvent être personnalisées de façon facultative avec un paramètre options. Options peut être fallbackText (repli) ou typing (frappe intelligente). Les valeurs possibles pour typing sont 1, 2 ou 3.

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

sendMessage

Entrez un message texte brut que le bot doit envoyer. Utilisez le format .sendMessage(text: string, options: Options): void. Le options paramètre n'est pas requis.

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

sendAdaptiveCard

Saisissez la charge utile pour le Adaptive Card que vous souhaitez envoyer. Utilisez le format .sendAdaptiveCard(adaptiveCard: AdaptiveCardPayload, options: Options): void. Le options paramètre n'est pas obligatoire.

Vous trouverez la charge utile de votre carte adaptative dans le concepteur de Adaptive Card. Dans Bot Builder, accédez à Préférences > Adaptive Cards, puis copiez le contenu du panneau Éditeur de Charge utile de carte. Vous pouvez en savoir plus sur travailler avecAdaptive Cards dans Bot Builder.

Bot.sendAdaptiveCard(<Valid_Adaptive Card_JSON_Payload>)

sendButtons

Procédez à la configuration et envoyez jusqu’à trois boutons. Tous les paramètres des boutons peuvent être organisés en définissant des attributs. Utilisez l'exemple ci-dessous pour comparer les paramètres du bouton dans la boîte de dialogue avec les attributs dans le script. Utilisez le format .sendButtons(text: string, buttons: ButtonPayload[], options: Options): void. Le options paramètre n'est pas obligatoire.

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

Vous pouvez également déclencher entityValue, texte ou URL via votre script.

La combinaison de ces attributs risque de créer une erreur ou un comportement inattendu.

// 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

Configurez et envoyez jusqu’à trois réponses rapides. Tous les paramètres de réponse rapide peuvent être organisés selon les attributs des paramètres. Les options relatives aux réponses rapides sont identiques aux options des boutons. Utilisez le format .sendQuickReplies(text: string, quickReplies: QuickReplyPayload[], options: Options): void. Le options paramètre n'est pas obligatoire.

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

Vous pouvez également déclencher l'entité value, text ou url via votre script.

La combinaison de ces attributs risque de créer une erreur ou un comportement inattendu.

// 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

Configurez et envoyez jusqu’à 10 cartes. Utilisez le format .sendCards(cards: CardPayload[], options: Options): void. Le options paramètre n'est pas requis.

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

Les entrées multimédias ne sont pas validées par Bot Builder, mais peuvent être validées dans d’autres intégrations. Le contenu de l’URL doit être disponible pendant toute la durée d’utilisation du script. Il doit également être accessible publiquement, car il sera téléchargé à plusieurs reprises lorsque le script est exécuté. Les restrictions de type DE support et de taille sont les mêmes que lorsque vous utilisez un action de bot multimédia. Utilisez le format .sendMultimedia(url: string, mimetype: string, options: Options): void. Le options paramètre n'est pas obligatoire.

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

sendRichLink

Configurez et envoyez un lien enrichi. Utilisez le format .sendRichLink(richlink: RichLinkPayload): void.

Bot.sendRichLink({
	title: 'Title',
	url: 'https://www.nice.com',
	image: 'https://picsum.photos/200/300',
	mimetype: 'image/jpeg'
})

sendListPicker

Configurez et envoyez jusqu'à 12 Options du sélecteur de liste. Toutes les options de sélecteur de liste peuvent être organisées en définissant des attributs. Les Options du sélecteur de liste sont identiques aux Options des boutons. Utilisez le format .sendListPicker(message: string, description: string, actions: ListPickerPayload[], options: Options): void. Le options paramètre n'est pas requis.

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

handover

Configurez l'endroit où va le handoverClosed Le transfert d’un contact d’un agent virtuel vers un agent en direct. en utilisant un queueId. Celui-ci peut avoir la valeur null pour utiliser le réacheminement automatique, ou il peut s’agir de l'ID d’une file d'attente existante. Utilisez le format .handover(queueId: string, note: stringId): void. Le paramètre note est facultatif, mais le paramètre queueId est obligatoire.

Pour localiser un queueId :

  1. Dans NiCE CXone, cliquez sur le sélecteur d'application et sélectionnez ACD.

  2. Accédez à Digital Experience (DX) > Routing Files d’attente.

  3. Recherchez la file d’attente pour laquelle vous avez besoin d’un identifiant et cliquez sur Modifier.

  4. Sur la page de modification de la file d'attente, recherchez l’URL dans votre navigateur. Le nombre situé après /edit/ indique l’queueId. Cela doit ressembler à cinq ensembles de nombres et lettres séparés par des tirets. Par exemple, 67bf5865-4556-40db-ba44-6c0cc3f88ffa.

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

addTags

Configurez les balises à appliquer. Toutes les balises utilisées dans le script doivent déjà exister dans Bot Builder. Si l’une des balises appelées par le script n’existe pas, l’action sera ignorée. Utilisez le format .addTags(tags: string[]): void.

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

waitForResponse

Dans certains cas, vous devez attendre une réponse client et continuer l'exécution de votre script. Dans la mesure où la communication avec le client est asynchrone, l’attente de la réponse est également asynchrone. La méthode Bot.waitForResponse prend un paramètre : le nom de la fonction qui sera exécutée une fois la réponse reçue. Utilisez le format .waitForResponse(functionName: string): void.

Le comportement de cette fonction est reporté. Cela signifie que le résultat ne prend pas effet immédiatement lors de son exécution. Au lieu de cela, une exécution de script en cours doit d'abord se terminer. Si vous souhaitez que le script se termine avec une fonction comportement reportée, vous devez explicitement arrêter l'exécution du script à l'aide d'une instruction return ou de conditions.

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

Configurez l’emplacementClosed Entité extraite du message du contact et sauvegardée pour être utilisée dans les réponses du bot. Similaire à une variable. (slot) à appliquer. Tout créneaux utilisés dans le script doivent déjà exister dans Bot Builder. Si l’un des emplacements appelés par le script n’existe pas, l’action sera ignorée.

Si vous souhaitez simplement stocker la valeur pour l'exécution du script, utilisez une variable locale ou utilisez l'objet Store. Utilisez le format .fillSlot(name: string, value: any[]): void.

Pour accéder à la valeur réelle de l'emplacement, vous devez accéder à l'attribut .value.

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

slots

Dans la notation par point, l’éditeur peut indiquer les emplacementsClosed Entité extraite du message du contact et sauvegardée pour être utilisée dans les réponses du bot. Similaire à une variable. (slots) disponibles, mais s’applique uniquement lorsque les noms d’emplacement ne contiennent pas d’espaces ou de caractères spéciaux. Lorsque les noms d’emplacement incluent des espaces ou des caractères spéciaux, il faut passer à la notation par crochets.

console.log(Bot.slots)

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

sendAsCustomer

Cette fonction vous permet d’ajouter ce que le contactClosed La personne qui interagit avec un agent, un SRVI ou un robot dans votre centre d’appels. peut dire dans vos histoiresClosed Utilisées pour entraîner un bot à la gestion des interactions en fonction de l’intention et du contexte. et règlesClosed Utilisées pour définir une réponse du bot à des messages qui ne changent pas selon le contexte.. Utilisez le format .sendAsCustomer(text: string): void.

Le comportement de cette fonction est reporté. Cela signifie que le résultat ne prend pas effet immédiatement lors de son exécution. Au lieu de cela, une exécution de script en cours doit d'abord se terminer. Si vous souhaitez que le script se termine avec une fonction comportement reportée, vous devez explicitement arrêter l'exécution du script à l'aide d'une instruction return ou de conditions.

Bot.sendAsCustomer('Hello bot')

Stocker l'Objet

Store est un objet créé pour stocker des données pendant l'exécution du script. Par rapport à une variable locale, il présente l'avantage de pouvoir être utilisé dans multiple fonctions .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
}

Objet variables

L'objet Variables contient les variables que vous créez dans l'intégration du script. Chaque variable est une propriété de Variables. Chaque variable possède un ensemble de sous-propriétés qui contiennent des informations à son sujet.L'exemple suivant montre une variable sélection appelée colorChoice :

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

Dans l'exemple, la liste des valeurs affectées à la variable est contenu dans la propriété options.

Les propriétés defaultValue et value contiennent initialement la même valeur. Si vous ne précisez pas de valeur par défaut pour une variable de sélection, la valeur par défaut est null. Les valeurs de Variable ne peuvent pas être modifiées dans le script, mais elles peuvent être rendues modifiables, puis modifiées lorsque l'Action est utilisée dans une story ou une règle.

Références aux variables d'un script

Faites référence à la valeur d'une variable en utilisant la notation par points : Variables.varName.value

Référence à la liste des options d'une variable sélection : Variables.varName.options

Affichage des variables existantes d'une Intégration de script

Vous pouvez voir une liste des variables existantes et de leurs propriétés dans le script en ajoutant la ligne suivante à votre code, puis en exécutant le script. La liste s’affiche dans la console. Le code est : console.log(Variables). De même, vous pouvez afficher le contenu d'une seule Variable en ajoutant console.log(Variables.varName.value) ou console.log(Variables.varName.options)à votre script.

fetch Fonctions

fetch(url: string, ?options), où les options possibles sont :

  • method - 'GET', 'POST', 'PUT', 'DELETE'
  • En-têtes
  • form_params
  • json
  • Corps

Utilisez fetch pour communiquer avec les API. Il peut s'agir de n'importe quelle API NiCE CXone ou de vos propres API.

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 fonction fetchest une implémentation standard de la fonction fetch de JavaScript, qui renvoie Promise et implémente également les fonctions .json() ou .text() lors de la réponse.

Il existe également une variante synchrone fetchSync, qui renvoie la réponse directement, et non pas la promesse. Si vous souhaitez préserver le contexte asynchrone de JavaScript, utilisez une fonction fetch standard.

console Fonction

console est utilisé pour les tests de votre script. Vous pouvez consigner les données que vous voulez. Le résultat du journal est également stocké dans l’historique de conversation, mais n’est pas envoyé au contactClosed La personne qui interagit avec un agent, un SRVI ou un robot dans votre centre d’appels..

log

Utilisez le format console.log(…output: any[]): void.

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

warn

Utilisez le format console.warn(…output: any[]): void.

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

info

Utilisez le format console.info(…output: any[]): void.

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

debug

Utilisez le format console.debug(…output: any[]): void.

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

error

Utilisez le format console.error(…output: any[]): void.

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

Gestion des erreurs

onError

Vous pouvez gérer les erreurs résultant d’exceptions inattendues en définissant votre fonction onError.

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

Fonctions de hachage

You pouvez utiliser la bibliothèque CryptoJS dans vos scripts dans Bot Builder. Par exemple :

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

Vous pouvez en savoir plus sur l'utilisation de cette bibliothèque sur le site documentation CryptoJS An icon of a square with an arrow  pointing from the center out to the upper right corner..