# Mémoire: Attributs, tags, et events (push test here)
Les Attributs, tags, et events sont les différents éléments qui constituent la mémoire du chatbot chez Vizir.
- Qu'est ce qu'un tag ?
- Comment ajouter un attribute dans un tag
- Réinitialiser un attribut
- Récupérer la date et l'heure actuel
- Comment accéder à la mémoire du chatbot
- Comment gérer les filtres avec des attributs 'imbriqués' ou embeded
- Comment récupérer un nombre dans la mémoire
- Comment faire un filtre sur une date
# Qu'est ce qu'un tag ?
Un tag est une liste qui contient un ou plusieurs objet(s) ou chaîne(s) de caractère. Vizir génère automatiquement des listes dans plusieurs cas dont certains sont plus 'simples que d'autres.
# Les tags simples
Lorsque vous offrez une question à choix multiple à l'utilisateur: demander une liste de réponses
Par exemple vous demander à l'utilisateur ses sports préférés, s'il a choisi 'foot' et 'tennis' Vizir construira un tag structuré comme suit :
favorite_sports: ['foot', 'tennis']
- Récupérer la valeur d'un tag pour afficher plusieurs bouton (ou carrousel)
{{tag.favorite_sports.[]}}
=> vous permet de construire un carrousel avec autant de cartes qu'il y a de sports préférés où chaque carte a comme titre le sport en question.
- Récupérer la valeur d'un tag précis (on connait l'index qu'on veut)
{tag.favorite_sports.0}}
=> vous permet de récupérer la première réponse de l'utilisateur dans la liste (ici c'est 'foot')
- Récupérer la liste des tags (avec des virgules)
{{tag.favorite_sports}}
=> permet de récupérer la liste complète et de l'utiliser dans les messages du chatbot ou dans votre système d'informations
# Les tags moins simples
- Lorsque l'utilisateur répond avec plusieurs images dans sa réponse
- Lorsque vous avez mis en place des smart resource
- Lorsque vous souhaitez exploiter la réponse d'une API
Imaginez que vous avez fait appel à une API qui vous renvoie l'ensemble des sports préférés. Ici imaginons que chaque sport est défini par plusieurs critères : nom, description, etc ... (c'est ce qui complexifie la structure et fait d'un tag 'simple', un tag 'moins simple'). Vous aurez une structure comme ceci :
favorite_sports: [ {name: 'foot', description: 'le foot est ....'}, {name: 'tennis', description: 'le tennis est ....'}]
# Récupérer la valeur d'un tag 'moins simple'
- Récupérer la valeur d'un tag pour afficher plusieurs bouton (ou carousel)
{{tag.favorite_sports.[].name}} => vous permet de construire un carrousel avec autant de cartes qu il y a de sports préférés où chaque carte a comme titre le sport en question.
- Récupérer la valeur d'un tag précis (on connait l'index qu'on veut)
{{tag.favorite_sports.0.name}} => vous permet de récupérer la première réponse de l utilisateur dans la liste (ici c est 'foot')
- Récupérer la liste des tags (avec des virgules)
{{tag.favorite_sports}} => permet de récupérer la liste complète et de l utiliser dans les messages du chatbot ou dans votre système d informations
Vous savez désormais exploiter l'essentiel de vos tags, mais vous pouvez rencontrer des cas davantage complexes notamment avec les retours API.
# Pour aller plus loin :
Par exemple, dans le cas des retours API, vous pouvez avoir une imbrication de tableaux avec une structure de ce type :
favorite_sports = [[foot, tennis], [hand, basket]]
Vous pouvez utiliser l'une des deux écritures suivantes :
{{tag.favorite_sports.[].0}} => Vous retourne 'foot, hand', càd le premier élément de chacun des objets**
{{tag.favorite_sports.0.[]}} => Vous retourne 'foot, tennis', càd tous les éléments du premier objet**
A vous de jouer !
# Comment ajouter un attribute dans un tag
Dans cet article, nous partons du principe que vous savez ce qu'est un Tag. Sinon je vous invite à regarder cet article (opens new window) au préalable
Vous avez créé une compétence action (opens new window) avec plusieurs ressources 'Collecter' afin que votre utilisateur vous fournisse plusieurs informations. Pour pouvoir retransmettre ces informations sous forme Excel par exemple, il vous faudra créer un tag.
Alors comment créer un tag à partir d'attribut ?
1/ Aller dans l'onglet Mémoire de votre ressource, puis 'Activer les actions sur la Mémoire'
2/ Sur l'espace de saisie, écrivez le nom de votre tag puis appuyez sur entrée
3/ Modifiez les paramètres de votre tag en cliquant sur le petit crayon
4/ Choisissez les paramètres correspondant à votre besoin:
Dans le cas de création de Tag pour ajouter des informations dans Google Spreadshit: nous sélectionnons 'ajouter' + 'basée sur la réponse de l'utilisateur'
et 'enregistrer' pour valider notre sélection.
Répétez cette opération pour les autres informations que vous souhaitez ajouter à votre tag.
Votre tag sera sous forme de liste que vous pourrez appeler en utilisant les [] (opens new window)
N'hésitez pas à nous mettre un smiley pour nous dire si cet article a été utile 😃
# Réinitialiser un attribut
Il peut arriver dans le paramétrage de votre chatbot que vous souhaitiez remettre à 'vide' la valeur d'un attribut.
Imaginons que mon chatbot enregistre la valeur d'une entité 'PateATartiner' dans un attribut 'pateatartiner'. Si un utilisateur dit au chatbot : 'je veux me faire livrer du Nutella'. Le chatbot comprendra l'intention 'PateATartiner' pour le mot 'Nutella' si vous l'avez bien paramétrée (opens new window).
Votre attribut 'pateatartiner' contiendra la valeur 'Nutella'.
Ok et alors ?
Imaginez, que cet utilisateur quitte son ordinateur et revient le lendemain. Le chatbot aura toujours en mémoire cette valeur 'Nutella' dans l'attribut 'pateatartiner' => le comportement de votre chatbot pourra être erroné si des logiques sont paramétrées en fonction de la valeur de cet attribut 'pateatartiner'.
Voici comment vider l'attribut 'pateatartiner' en introduction du chatbot :
créer l'attribut 'pateatartiner' dans la mémoire de la ressource intro.
paramétrer cet attribut en 'valeur prédéfinie' à '@undefined'
enregistrer
Le tour est joué !
# Récupérer la date et l'heure actuel
Il est possible que vous souhaitiez que votre chatbot ait un comportement différent en fonction de l'heure de la journée ou de la date du jour.
Sachez donc qu'à chaque message envoyé au chatbot par un utilisateur est daté ! Vous pouvez par exemple afficher des messages différents si vous êtes hors heures ouvrées ou sur les heures de bureaux.
Pour chaque message reçu, le chatbot stocke les 8 informations suivantes :
- current_date: la date au format DD/MM/YYYY
- current_year : l'année actuelle
- current_month : le mois actuel
- current_month_number : le numéro de mois actuel (février = 2)
- current_day : le jour actuel
- current_day_number : le numéro du jour actuel (lundi = 1)
- current_time : par exemple (16:30 s'il est 16h30)
- current_hours : l'heure actuelle
- current_minutes : les minutes actuelles
Il suffit donc de manipuler ces attributs selon vos souhaits (vous pouvez vous référer aux articles suivants sur les filtres (opens new window) ou la mémoire du bot).
TIP
pour utiliser ces attributs, commencez par les ajouter dans la mémoire du bot, vous pourrez ensuite en faire ce que vous désirez !
# Comment accéder à la mémoire du chatbot
Voici un guide détaillé qui explique tous les concepts clés pour récupérer la mémoire du chatbot et l'afficher dans la conversation. C'est pas ici
# Comment gérer les filtres avec des attributs 'imbriqués' ou embeded
On peut créer des filtres avec des attributs venant de smart resources par exemple pour vérifier que identity.firstName === 'John'
Pour le faire on remplace le '.' par un double underscore: '__' dans la définition du filtres.
Il faut avant de créer le filtres créer l'attribut qui correspond dans la partie *Paramètres/Mémoire du bot- pour être capable de créer le filtre.
# Comment récupérer un nombre dans la mémoire
Pour récupérer un nombre (ou tout formats spécifique (string, boolean, ...)).
Il faut le définir dans la mémoire du chatbot comme dans l'exemple ci-dessous
# Comment faire un filtre sur une date
# Permettre de changer le contenu du bot basé sur une date
C'est très simple!
- Créer un attribut mémoire
current_date
- Créer un filtre basé sur cette date
- Ajouter ce filtre sur les messages, boutons, ... pour les filtrer en fonction de la date voulues!
TIP
Ce n'est pas encore possible d'utiliser pour la date une variable d'environnement. On y travaille 😃 Mais si tu as ce besoin n'hésites pas à nous le faire savoir en écrivant directement à it@vizir.co