Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
Le blog du CRRIAM

Gérer l'inactivité de l'utilisateur

22 Mai 2012 , Rédigé par crriam Publié dans #Organisation des fichiers aiml

Il est évident qu'un bon bot, doit savoir reconnaitre si on lui parle ou pas, en effet, une véritable personne, relancera la conversation si l'autre ne dit rien, ou se déconnectera si elle voit que son interlocuteur ne lui parle plus.

 

Alors comment faire ça ?

 

Ben je me suis ceusé la tête pas mal de temps pour trouver la solution ou tout du moins une solution qui me convienne et qui fonctionne !

La première grande avancé est partie de ma découverte sur la façon d'interagire avec le pandorabot par une page web, en effet jusque à maintenant, je n'avais trouver aucun moyen de faire en sorte que la page web envois des informations au pandorabot de façon automatique et transparante.

 

Donc, première étape, faire une page html customisé permetant d'envoyer la commande sleeping lorsque l'utilisateur n'écris plus de texte. Pour ça, voir la rubrique ici.

 

Une fois cela fait, il reste a gérer le patterne sleeping. Pourquoi sleeping ?

Parceque si vous utiliser un programme alice (interpreteur) comme tchat 4D, la commande prédefinit par défaut pour l'inactivité est le pattern sleeping :-)

 

Deusième étape : Le code pour gérer l'inactivité, je vous le donne directement, je me suis fais trop C... pour le trouver, pas la peine pour vous de rechercher :-)

 

  <category>
      <pattern> SLEEPING </pattern>
      <template>
             <srai>depart conversation</srai>
                <think><set name="verifsleeping">1</set></think>
                <think><set name="topic">sleeping</set></think>
       </template>
    </category>


<topic name="sleeping">
<category>
 <pattern> _ </pattern>
 <that>  </that>
 <template>
<think><set name="codereinitialisation"><star/></set></think>
<condition name="codereinitialisation">
<li value="sleeping">
<condition name="verifsleeping">
    <li value="1"> Tu parles plus ?
    <think><set name="verifsleeping">2</set></think>
    </li>
    <li value="2"> <think><set name="verifsleeping"></set></think>
    Bon ben je vois que tu parles pas trop alors je m'en vais
    <think><set name="topic"></set></think>
    <think><set name="verifsleeping"></set></think>
    <srai>aurevoir</srai>
    </li>
</condition>
</li>
<li>
<think><set name="topic"></set></think>
<think><set name="verifsleeping"></set></think>
<srai><star/></srai>
</li>
</condition>
</template>
</category></topic>

Explication :  Il faut 2 pattern sleeping.

 

un premier sleeping, qui va mettre le sujet (topic) à sleeping, puis un deusième patterne sleeping qui ne réagira que lorsque le sujet sera sleeping ! Pourquoi ?

 

Parcequ'on va laisser 3 chances à l'utilisateur de reparler au bot avant de se déconnecter, et qu'il faut qu'a n'importe quel texte entréer par l'utilisateur le robot sorte du mode sleeping ! 

 

Le premier, sleeping simple, va relancer la conversation avec la commande depart conversation (qu'il faudra coder bien sur !) puis va mettre le sujet sleeping (pour que le sujet ne dépende pas de la conversation relancer mais bien indiquer au robot qu'il viens de lancer un sleeping a cause d'une inactivité de l'utilisateur )  puis enfin, incrémenter la variable verifsleeping

 

Le deusième sleeping, va tester la variable verif sleeping, si c'est a 1, il va demander a l'utilisateur "tu ne parles plus ?" et incrémenter la variable a 2

si c'est la deusieme vois que ce sleeping est envoyer, le bot va en déduire qu'il peut se déconnecter, il va donc enlever le sujet sleeping (pour que les autres commandes puissent fonctionner, sinon ça par en boucle :-) puis réinitialiser la variable verifsleeping et envoyer la commande aurevoir qu'on aura coder pour se déconnecter .

si le texte envoyer n'est pas sleeping, mais n'importe quoi d'autre, alors ce pattern initialisera la sujet (en premier sinon ça boucle) et répondra suivant ce que l'utilisateur a inscris grace a la commande <srai><star/></srai>

 

Et voila :-)

Partager cet article

Repost 0

Commenter cet article