rivescript
Et toi ? ou comment recuperer une expression ou variable javascript
// Attention, bug d'écriture des accents quand on utilise l'editeur en ligne !
Il arrive souvent que le robot doivent répondre a une question qu'il viens de poser à son utilisateur. Exemple :
Robot : - Tu es marié ?
User: - oui et toi ?
Vous allez me dire pas de soucis, on utilise <reply> (la balise qui permet de renvoyer ce que le robot venais de dire) et le tour est joué.
Ben, oui, mais non ! Car <reply> ne fonctionne que pour une expression formaté, c'est a dire minuscule, pas de ponctuation et pas d'accent, il aurait donc fallut que le robot demande :
tu es marie
Mais ça change un peu les choses.
Il nous faut donc trouver une façon de formater le texte envoyer par le robot. On ne peut pas renvoyer une expression directement car @ est "parser" avant la balise <call>
Pour celà, on donc va réutiliser la méthode trouvée pour enregistrer les variables dans les variables du style @ mots *
voici la solution :
// debut test desacsentuation pour utiliser dans la fonction et toi
// quand le robot marque des phrases avec accents
+ test
- éssé
+ test 2
- {@test 3 <set age=<reply>> <call>desacentuation <id></call>}
+ test 3 *
@<star>
+ [*] esse [*]
- test ok
> object desacentuation javascript
var id = args[0];
var age = rs.getUservar(id, "age");
var age = age.replace(/[éèêë]/gi, "e");
return age;
< object
// fin desacsentuation ca marche.
Je pense, sans l'avoir encore teste, qu'avec cette méthode on pourra récuperer des variables javascript et les enregistrer dans une variables rivescript.
Pourquoi faire ? Ben pour recuperer une id stocker dans un cookie par exemple ou tout autre valeur, comme la date, l'heure etc.
Donc, à tester :)
La reduction rapide grace au option [ ] et au [*] magique
Passer du rivescripte a l'aiml semble diffcile, le rivscripte permets de réduire de façon tres importante le nombre de "pattern"
En effet, en utilisant a bonne essiant les options et les tableaux, ont peut réduire de façont tres tres importante le nombres de lignes et enticiper sur bon nombre de fautes d'orthographe ou de conjugaison.
Les options c'est quoi ?
C'est utiliser les crochet [ et ] pour dire que l'on peut utiliser cette réponse avec ou sans ce ou ces mots
Exemple le plus frapant :
+ [*] [mes yeux] [*] de quel [*] couleur [*] [mes yeux] [*]
- ils sont <env yeux> pourquoi ?
en 2 lignes on va reconnaitre toutes les formes :
de quel couleurs sont mes yeux
mes yeux sont de quelle couleur
d'apres toi, mes yeux serait de quels couleur en fait ?
etc. etc.
comment ça marche ? :
le premier [*]
c'est le start optionel. Pourquoi pas un simple * ? : pour le cas ou il n'y aurait pas de mots placer avant mes yeux.
[mes yeux]
placé avant et aprés de "quel couleur" permet de matcher sur les deux formes interogatives, l'inverser et pas.
le [*] entre mes yeux et de quel va lui permettre de mettre ou non des mots entre ce-ci
le [*] apres quel .
Lui est véritablement "magique" car un [*] remplace même un espace, il permettra donc de reconnaitre (matcher)
tout les quel que l'on veux
quel
quelle
quelles
quels
mais aussi
quellllllleeelle
Ce genre de [*] aprés les mots, permet de simplifier les singulier pluriel, les masculin féminin, les conjugaison avec un "s" "t"qui font partis des fautes les plus courantes.
exemple :
tu fais quoi
tu fait quoi
[*] tu fai [*] quoi
coupler avec un tableau, ça donne ça :
+ [*] tu (mesure|meusure) [*]
- je mesure 1m75
qui reconnaitra
combien tu mesures
combien tu mesure
combien tu meusure
combien tu meusures
mais aussi
tu meusures combien etc..
alors qu'en aiml, il aurais falut coder :
<topic name="">
<category>
<pattern> TU MEUSURE </pattern>
<that> </that>
<template> <random>
<li>je meusure 1m 75</li>
</random> </template>
</category></topic>
<category>
<pattern>* TU MEUSURE </pattern>
<template><srai> TU MEUSURE </srai></template>
</category>
<category>
<pattern>* TU MEUSURE *</pattern>
<template><srai> TU MEUSURE </srai></template>
</category>
<category>
<pattern> TU MEUSURE *</pattern>
<template><srai> TU MEUSURE </srai></template>
</category>
Puis la meme chose pour chaque variante !!!!
avec "s" puis sans le "u" sans "s" puis sans "u" avec "s"
cela deviens vite énnorme certe le generateur que j'avais mis au point facilte l'écriture, mais la lisibilité du code n'en ai pas des plus facile ensuite entre toutes ces variantes.
Le piége à éviter, le mots dans le mots !
exemple
[*] non [*]
va etre reconnus pour "non" mais aussi pour "pognon" il faudra donc faire attention au parasite que peut générer ce genre de reconnaissances.