# 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 ?

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 :

  1. créer l'attribut 'pateatartiner' dans la mémoire de la ressource intro.

  2. paramétrer cet attribut en 'valeur prédéfinie' à '@undefined'

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

Memory number