Intégrations de script

Vous pouvez créer vos propres actions de script dans Bot Builder. Cela vous permet de personnaliser la façon dont votre bot répond dans les conversations. Les actions de script sont des actions de bot personnalisées que vous pouvez utiliser dans les dialoguesClosed Scénarios, règles et flux dans Bot Builder. pour définir les réponses du bot 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 plus qu'une action. Lorsqu'une action est activée, elle est disponible dans le menu actions du bot lorsque vous ajoutez une réponse de bot à une storyClosed 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 un 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édigez du code pour concevoir une action de robot qui réponde aux besoins uniques de votre organisation.
  • Appelez votre propre API externe en tant qu’action de script.
  • Ajoutez des scripts aux compétences du bot et publiez-les dans le Skill Store.

Les scripts Bot Builder fonctionnent sur le serveur; il y a donc certaines limites à prendre en compte lors de la création de vos scripts.

Éditeur de script

Une intégration de script peut comporter plus qu'une action. Chaque 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 entrer le 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.

Utilisez AI pour créer ou modifier un script

Le contenu de cette section concerne un produit ou une fonctionnalité qui fait partie d'un programme de Public Preview. Si vous ne faites pas partie de cet aperçu et souhaitez obtenir plus d'informations, communiquez avec votre représentant de compte.

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

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

  • Modifier des scripts existants en demandant à Agent Copilot d'ajouter des validations, des conditions ou de la logique.

  • Comparer des suggestions de code, afficher des comparaisons côte à côte de votre code original et du code généré par Agent Copilot.

  • Acceptez ou RejetezCopilot les suggestions en un seul clic.

  • Lorsque Agent Copilot génère des scripts qui font référence à de nouvelles variables (slots), celles-ci sont automatiquement créées et reflétées dans la section Slots.

  • La sollicitation à plusieurs tours, qui vous permet de poser des questions de suivi ou de peaufiner votre invite pour améliorer le script de façon itérative.

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

Un développeur de robot crée un script pour valider la saisie d'un utilisateur pour un numéro de compte. 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 invite : « Pouvez-vous ajouter une validation pour vérifier si le numéro de compte comporte 10 chiffres ? »

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

Le développeur examine les changements suggérés, les compare au code original, puis clique sur Accepter pour appliquer la mise à jour.

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

Le développeur continue de peaufiner le script en posant des questions de suivi telles que :

« Ajoutez un message d'erreur si la saisie n'est pas valide. »

Script Variables

Vous pouvez créer des variables à utiliser dans les scripts Bot Builder. 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 script où vous les créez, mais vous pouvez les utiliser dans n'importe quel script de cette intégration.

Les valeurs des variables ne peuvent pas être modifiées dans le script. Elles ne peuvent être modifiées que sur la page d'intégration de script ou lorsqu'une action qui fait référence à la variable est utilisée dans une réponse de robot dans un scénarioClosed 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 un 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.
  • Elle doit être rendue modifiable dans cette action, si vous voulez pouvoir changer la valeur.

Les scripts Bot Builder prennent en charge quatre types de variables :

  • Texte : Les variables de type Texte contiennent des valeurs de chaîne simples. Une variable de texte modifiable devient un champ dans l'interface utilisateur de l'action de script, où vous pouvez saisir du texte dans le champ pour attribuer une valeur à la variable.
  • Nombre : Les variables de type Nombre contiennent des valeurs numériques. Une variable de nombre modifiable devient un champ dans l'interface utilisateur de l'action de script, où vous pouvez entrer un nombre dans le champ pour attribuer une valeur à la variable.
  • Select: Utilisez les variables Select lorsque vous voulez définir plusieurs valeurs possibles pour la variable. Une variable Select 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 Values de la définition de la variable, dans l’onglet Scripts.
  • Secret: Utilisez les variables Secret pour conserver des données privées, comme des jetons ou des identifiants API. Après avoir saisi la valeur, Bot Builder masque tous les caractères sauf les cinq premiers avec des 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 de script. Si vous devez la modifier, vous devez mettre à jour la valeur sur la page Variable dans le script. Les variables Secret ne peuvent pas être rendues modifiables.

Vous pouvez définir une valeur par défaut pour les variables de texte, de nombre et Select. Lorsque la variable est modifiable, la valeur par défaut peut être écrasée en sélectionnant ou en saisissant une valeur différente lorsque vous ajoutez l’action à une réponse de robot. 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 a une. Si aucune valeur par défaut n’est attribuée, la variable n’a aucune valeur dans le script.

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

Objets et Fonctions standard

En plus des fonctionnalités JavaScript standard, Bot Builder dispose du cadre suivant, spécifique aux bots :

  • L’objet Bot offre un autre moyen de concevoir la façon dont votre robot répond dans les conversations.
  • L’objet Store vous permet de conserver les informations contextuelles pour une exécution de script.
  • L’objet Variables contient toutes les variables que vous ajoutez à l’intégration de script.
  • La fonction fetch est une implémentation standard de JavaScript fetch.
  • La console permet le débogage.

Parce que les scripts Bot Builder s’exécutent sur le serveur, il y a 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 des actions de script. Lors de la rédaction d’un script, l’éditeur Web vous propose toutes les méthodes disponibles, y compris leurs arguments et leurs types. Les méthodes suivantes sont disponibles lors de l’utilisation de 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 (smart typing). Les valeurs possibles pour typing sont 1, 2 ou 3.

Options = {

	"fallbackText": "this is the fallback text",

	"typing": 2,

}

sendMessage

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

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

sendAdaptiveCard

Entrez la charge utile pour Adaptive Card que vous voulez envoyer. Utilisez le format .sendAdaptiveCard(adaptiveCard: AdaptiveCardPayload, options: Options): void. Le paramètre options n’est pas requis.

Vous pouvez trouver la charge utile de votre carte adaptative dans le concepteur 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 l’utilisation deAdaptive Cards dans Bot Builder.

Bot.sendAdaptiveCard(<Valid_Adaptive Card_JSON_Payload>)

sendButtons

Configurez et envoyez jusqu’à trois boutons. Tous les paramètres de bouton peuvent être organisés en définissant des attributs. Utilisez l’exemple ci-dessous pour comparer les paramètres de 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 requis.

Bot.sendButtons('This is message written by bot', [

{

	title: 'Button 1',

	intent: {

		name: 'mood'

	}

}

])

Vous pouvez également déclencher entityValue, text, ou url à l’aide de votre script.

La combinaison de ces attributs peut entraîner 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 en définissant des attributs. Les options pour les réponses rapides sont les mêmes que les options pour les boutons. Utilisez le format .sendQuickReplies(text: string, quickReplies: QuickReplyPayload[], options: Options): void. Le options paramètre n’est pas requis.

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 à l’aide de votre script.

La combinaison de ces attributs peut entraîner 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

Le contenu multimédia n’est pas validé par Bot Builder, mais peut être validé dans d’autres intégrations. Le contenu sur 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é à répétition lors de l’exécution du script. Les restrictions de type de support et de taille sont les mêmes que lorsque vous utilisez une action de bot multimédia. Utilisez le format .sendMultimedia(url: string, mimetype: string, options: Options): void. Le options paramètre n’est pas requis.

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 de sélecteur de liste. Toutes les options de sélecteur de liste peuvent être organisées en définissant des attributs. Les options pour le sélecteur de liste sont les mêmes que les options pour les 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 la destination du handoverClosed Le transfert d’un contact d’un agent virtuel vers un agent en direct. à l’aide d’un queueId. Celui-ci peut être laissé 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 queueId est requis.

Pour localiser un queueId :

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

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

  3. Localisez la file d’attente pour laquelle vous avez besoin de l’ID et cliquez sur Modifier.

  4. Sur la page de modification de la file d'attente, regardez l'URL dans votre navigateur. Le nombre après /edit/ est le queueId. Il devrait ressembler à cinq ensembles de chiffres et de 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. Toute balise utilisée dans le script doit déjà exister dans Bot Builder. Si une balise est appelée dans le script mais 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 du client et poursuivre l'exécution de votre script. Étant donné que la communication avec le client est asynchrone, l'attente d'une réponse est également asynchrone. La méthode Bot.waitForResponse prend un paramètre : le nom de la fonction qui sera exécutée après la réception d'une réponse. Utilisez le format .waitForResponse(functionName: string): void.

Cette fonction a un comportement différé. Cela signifie que le résultat ne prend pas effet immédiatement lors de l’exécution. Au lieu de cela, l’exécution du script en cours doit d’abord se terminer. Si vous souhaitez que le script se termine par une fonction de comportement différé, vous devez arrêter explicitement l’exécution du script à l’aide d’une instruction de retour 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 le emplacementClosed Entité extraite du message du contact et sauvegardée pour être utilisée dans les réponses du bot. Similaire à une variable. qui doit être appliqué. Tous les emplacements utilisés dans le script doivent déjà exister dans Bot Builder. Si un emplacement est appelé dans le script mais 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 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 points, l'éditeur peut suggérer les emplacementsClosed Entité extraite du message du contact et sauvegardée pour être utilisée dans les réponses du bot. Similaire à une variable. disponibles, mais cela n'est applicable que lorsque les noms d'emplacements ne contiennent pas d'espaces ou de caractères spéciaux. Dans les cas où les noms des emplacements comprennent des espaces ou des caractères spéciaux, la notation entre crochets doit être utilisée à la place.

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. pourrait 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.

Cette fonction a un comportement différé. Cela signifie que le résultat ne prend pas effet immédiatement lors de l’exécution. Au lieu de cela, l’exécution du script en cours doit d’abord se terminer. Si vous souhaitez que le script se termine par une fonction de comportement différé, vous devez arrêter explicitement l’exécution du script à l’aide d’une instruction de retour ou de conditions.

Bot.sendAsCustomer('Hello bot')

Objet Store

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 plusieurs 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 de 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 attribuées à la variable est contenue dans la propriété options.

Les propriétés defaultValue et value contiennent la même valeur au départ. 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 des variables ne peuvent pas être modifiées dans le script, mais elles peuvent être rendues modifiables, puis changed when the action is utilisées dans un scénario ou une règle.

Référence à des variables dans 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 de sélection : Variables.varName.options

Afficher les variables existantes dans 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 apparaît 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 sont :

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

Utilisez la fonction fetch pour communiquer avec les API. Il peut s'agir de n'importe laquelle des API NiCE CXone ou des vôtres.

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

Il existe également une variante synchrone fetchSync, qui retourne directement la réponse, et non la Promise. Si vous souhaitez rester cohérent avec le monde asynchrone de JavaScript, utilisez une fetch fonction standard.

console Fonction

console sert à tester votre script. Vous pouvez enregistrer n'importe quelle donnée. Le résultat de l'enregistrement est également stocké dans l'historique de la 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 dues à des exceptions inattendues en définissant votre fonction onError.

let onError = (e) => console.log('my handler', e.message)

		

function main() {

	Bot.nonExistentMethod()

}

Hachage Functions

Vous pouvez utiliser la bibliothèque CryptoJS dans votre script 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 Web de la documentation CryptoJS An icon of a square with an arrow  pointing from the center out to the upper right corner..