Fonction¶
Les ressources Fonction vous permettent d'écrire du code Javascript afin d'appliquer tout type de traitement personnalisé sur vos variables.
Ces fonctions peuvent ensuite retourner des données brutes à traiter plus tard ou des workflows Prisme.ai directement exécutable.
1. Creation¶
Lors de l'édition de votre function depuis le dashboard Prisme.ai, une zone de saisie vous permettra d'enregistrer votre code Javascript personnalisé.
Par défaut, le seul paramètre reçu par la fonction est la structure suivante, transportant différentes informations détaillant le context d'appel :
interface request {
timestamp: string; // DateTime de l'appel
sessionId: string; // Identifiant de la session
bot: {
id: string; // Identifiant de l'assistant
};
user: { // Utilisateur courant
id: string; // Identifiant de l'utilisateur
location: string; // Localisation de l'utilisateur s'il l'a autorisé
platform: string; // Plateforme de l'agent utilisateur
conversationSize: number; // Nombre de messages de la conversation
conversationId: string; // Identifiant de la conversation
};
userMessage: { // Message de l'utilisateur
event: string; // Si le message de l'utilisateur est un évènement, son nom
text: string; // Si c'est du texte, son contenu
payload: {}; // Si le message contient un objet arbitraire, celui-ci
}
originalRequest: {}; // Objet de paramètres arbitraires passés au script d'injection
lang: string; // Langue du navigateur de l'utilisateur
query: string; // Requête envoyée par l'utilisateur
event: string; // Évènement envoyé par l'utilisateur
fulfillment: { // Réponses générée par le workflow avant d'arriver à la fonction
stream: {
type: string;
resourceId: string;
}[];
intent: { // Intention correspondante à la requête de l'utilisateur
name: string;
confidence: number; // Indice de correspondance
inputs: {}; // Valeur des paramètres de l'intention
};
contexts: { // Contextes
lifespan: string; // Durée de vie
required: boolean; // S'il est requis
name: string; // Nom
parameters: {}; // Paramètres associés
scope: string; // Périmètre
}[];
endConversation: boolean; // Si la convesation est terminée
}
Ainsi, si le contenu de ma fonction est :
return bot.id;
La fonction retournera l'id du bot qui exécute le fonction.
Il est possible d'exécuter du code asynchrone à l'aide des mots clés async
/await
:
const res = await fetch("http://myservice.com");
const data = await res.json();
return data.value;
Certaines librairies javascript sont mises à disposition parmi lesquelles :
fetch
: permet d'effectuer des requêtes httpDOM
: permet de parser du DOM. S'utilise à l'aide de la fonctionDOM(document: string)
qui retourne unDOMElement
.
Pour accéder à d'autres librairies, veuillez nous contacter.
Retour¶
La fonction peut retourner des données brutes, du simple texte à afficher ou un workflow Prisme.ai directement exécutable :
// Affiche une réponse texte "Hello world"
return "Hello World";
// Renvoit un bloc de données à traiter plus tard
return [{"title": "Hello World"}];
// Renvoit un workflow à exécuter
return [
{"text" : "Oui bien sûr"},
{"type": "richText", "text": "<b>Version enrichie</b>"},
{"type" : "panel", "value": "Ceci est le contenu du panel, qui peut aussi être <b>enrichi</b>"},
{"type" : "button","text":"click me","value":"message envoyé par le bouton"},
{"type" : "event","text":"click me","value":"EVENT_NAME"},
{"type" : "link","text":"im a link","value":"https://www.prisme.ai"},
{
"type" : "card",
"title":"I am a card",
"image":"https://www.prisme.ai/wp-content/uploads/2020/12/Prisme.ai-logo.png",
"text":"some text..",
"buttons":[
{"type":"button","text":"Texte du bouton","value":"message envoyé par le bouton"}
]
},
]
Plus d'information sur la structure des workflows ici.
2. Appel de la fonction¶
Que ce soit depuis le DSUL ou l'éditeur graphique, vous pouvez appeler votre nouvelle fonction avec l'action du même nom : Fonction.
Si votre fonction renvoie des données brutes plutôt qu'un workflow Prisme.ai, vous devez sauvegarder le résultat de la fonction dans une variable à utiliser plus tard via l'option output.