Action : Variables et fonctions

Abordons maintenant le magnifique univers des variables. Sans les variables aucun programme informatique ne peut exister. Ou du moins ils ne pourront qu’effectuer des actions statistiques.

Pour être simple, prenons ce exemple ci: Vous souhaitez que le bot répond « Bonjour Julien ». Bien sûr tout vos utilisateurs ne s’appelerons pas Julien. Il faudra alors remplacer « Julien » par le nom de l’utilisateur concerner. C’est ce que nous allons apprendre dans ce chapitre.

Pour commencer vous devez comprendre qu’il y a deux type de variable sur Aibot: Les variables de type « Bot » et les variables de type « User ». Vous l’avez peut-être déjà compris.

*Une variable de type Bot contient des informations relatives au bot. Cette information ne dépendra pas d’un utilisateur. Tout les utilisateurs peuvent y accéder et même le modifier selon que votre Logic le permet.

Prenons l’exemple d’un bot de vote où les utilisateurs viennent votez leurs candidats préféré. Les statistiques du vote (Nombre de voix pour chaque candidat ) devra donc être partager par tout les utilisateurs car ils devraient être capable de lire et de modifier ces valeurs.

* Par contre les variables de type User sont propres à chaque utilisateur. Par exemple le nom, le numéro de téléphone, le type d’abonnement, le solde,…

Je suppose que maintenant vous faites la différence entre ces deux types.

Sur Aibot, il existe des variables de type « User » par défaut et des variables de type « Bot » par défaut. Voyez l’exemple ci-dessous

Dans ce exemple, le bot répondra « Hello » x en remplaçant x par le nom de la personne qui écrit au Bot. Évidemment il faut que cette personne ai déjà été enregistrée dans vos contacts sinon il enverra plus tôt le numéro de téléphone de la personne (dans le cas de WhatsApp). C’est un exemple de variable de type User par défaut.

Pour afficher donc une variable vous devez écrire : {{Type.nom_de_variable}}

« Type » doit être remplacé par le type de la variable (User ou Bot) et « nom_de_variable » remplacé par le nom de la variable

Voici un récapitulatif de toutes les variables par défaut disponible sur Aibot et les valeurs qu’ils retournent.

{{User.id}} retourne le nom complet de l’utilisateur ou son numéro de téléphone selon qu’il est enregistré ou non. (dépend aussi du réseau social.

{{User.message}} retourne le message de l’utilisateur

{{User.app}} retourne le nom du réseau social qui à reçu le message

{{Bot.date}} retourne la date actuelle

{{Bot.year}} retourne l’année actuelle

{{Bot.month}} retourne le mois actuel

{{Bot.day}} retourne le jour du mois actuel

{{Bot.time}} retourne l’heure actuelle au complet (heure, minutes, secondes)

{{Bot.hour}} retourne l’heure uniquement

{{Bot.minute}} retourne la minute uniquement

{{Bot.second}} retourne la seconde uniquement

{{Bot.msecond}} retourne la milliseconde

Vous n’avez peut-être pas trouvé la variable que vous cherchez. Rassurez vous, Aibot vous permet de créer vos propres variables et de les utiliser comme le souhaitez. Voici ci-dessous comment créer vos propres variables.

L’action variable dans un block vous permet de créer et de donner une valeur à une variable.

Dans l’exemple ci-dessous, nous avons créer une variable de type User que nous avons nommée « salutation ». Sa valeur est « Hello <nom de l’utilisateur> ». Vous comprenez donc qu’on peut inclure la valeur d’une variable dans une autre. Vous afficher notre variable « salutation » nous allons utiliser la syntaxe habituelle des variables : {{User.salutation}}

Important

Si vous donnez à une variable le nom d’une variable par défaut (id, message, app, Time…) elle sera écraser par la variable par défaut donc ne vous retournera pas le résultat attendu.

Il est aussi important de noté que si vous tenez d’afficher une variable qui n’existe pas, vous recevez la valeur « null » et une erreur dans le débogueur. Voyons l’exemple ci-dessous :

Dans ce exemple nous tentons d’afficher la variable « salutation » avant de la déclarer. Si c’est la première fois que ce block s’exécute cela signifie que la variable n’a pas encore été créer donc Aibot nous retournera « null ». Vous comprenez donc qu’il faut avoir déjà déclaré une variable pour vouloir le récupérer.

Important

Une variable déclaré dans un block, est accessible dans tous les autres block et peut être modifiée de la même manière en utilisant l’action variable et mettant la nouvelle valeur. (Tenter de récupérer une variable créer dans un block qui n’a pas encore été exécuter retournera null

Opérateurs et fonctions

Les opérateurs et les fonctions permettent de rendre beaucoup plus intéligent nos robot. Il sont utilisés pour effectuer des opérations mathématiques ou autres…

Ils sont toujours entouré de « [[ » et de « ]] ». Cette syntaxe permet de dire à Aibot qu’il ne s’agit pas d’un simple texte à afficher mais d’une opération à effectuer avant d’afficher le résultat. Quand vous faites par exemple [[4+6]], Aibot affiche 10.0 ce qui représente le résultat de l’opération à l’intérieur des crochets. Noté que c’est deux crochets ouverts et deux fermés.

Soit x et y deux nombres quelconques

[[x+y]] retourne la somme

[[x-y]] retourne la différence

[[x*y]] retourne le produit

[[x/y]] retourne le quotidien

[[x^y]] retourne x à la puissance y

[[sqrt(x)]] retourne la racine carrée de x

[[cos(x)]] retourne le cosinus de x

[[sin(x)]] retourne le sinus de x

[[tan(x)]] retourne le tangeante de x

[[Random(x,y)]] retourne un nombre aléatoire entre x et y. Notez qu’il faut que x<=y

Notez que ces opérateurs peuvent être combinés entre eux et même avec des variables. Voyons l’ensemble ci-dessous

Les deux premières expressions sont justes. Par contre la troisième est incorrect parce qu’il n’y a aucun signe d’opération en 3 et (7). La vraie expressions pourrait être 3*(7) ou 3/(7)

Il existe deux autres fonctions qui peuvent être utilisées sur des chaînes de caractères :

1) [[ Length(un texte) ]] retourne le nombre de aacaractères constituant l’expression à l’intérieur des parenthèses. Dans notre cas il retournerait 8 car l’espace est aussi un caractère. Si je tapait [[Length(Bonjour)]] il retournerait 7. Vous pouvez l’utiliser sur une variable. Exemple : [[ Length({{User.message}}) ]] retournera la taille du texte entrez par l’utilisateur.

2) [[ Getnumber(le nombre est 5) ]] retourne 5 tout simplement. En effet cette fonction vérifié le texte passé entre parenthèses et s’il y a un nombre il retourne ce nombre seul en ignorant le reste. Prenons un exemple dans lequel cette fonction peut être très utile :

Prenons ce scénario :

Bot: combien de plat de pizza voulez-vous ?

Utilisateur: 5

Le bot calcul [[ {{User.message}}*5 ]]

Bot: votre facture est de 25€

Vous ne voyez pas où j’en viens ? Et si l’utilisateur tapait plutôt « Je veux 5 pizzas » au lieu de 5 tout simplement ?. Dans ce cas le calcul serait faussé et le bot retournerait « null » a la place du résultat.

La solution simple est d’utiliser la fonction Getnumber.

Attention :  cette syntaxe ne fonctionnera pas : [[ [[Getnumber({{User.message}})]]*5 ]]
Vous ne pouvez pas insérer une fonction à l’intérieur d’un autre. D’ailleurs vous voyez que c’est déjà trop surchargé.

La meilleure procédure est d’abord de créer une variable qui aurait pour valeur [[ Getnumber({{User.message}}) ]] et ensuite d’utiliser cette variable dans l’opération de calcul de la facture.

Retour en haut