Overblog
Suivre ce blog 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 :-)

Lire la suite

L'interface de sortie du robot

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

- Qu'est ce que l'interface de sortie du robot ?

- C'est la partie que vous aller voir, autrement dit, le corps du robot !

  Elle peut être graphique, une page web, ou mécanique, un corps robotique

 

Il existe plusieurs solution d'interfaçage graphique, suivant votre interpréteur aiml (programme).

 

Si votre interpreteur n'est pas web, comme tchat4D, miranda, etc. par exemple, l'interface lui est propre, ( suivre dans ce cas la notice explicative s'il en existe une )

 

Pour les interpreteurs web, qui s'affiche dans une page internet, comme pandorabot, et les autres program E, programme O etc.  certaine interfaces sont payante comme sitepale, d'autre complexe à mettre en oeuvre avec hadaptech ou celle développés en flash.

 

Mais l'on peut faire simple ! juste avec du html et un peu de javascript, (trois fois rien )

 

Comment ?

 

Comme on l'as dit , il faut utiliser des pages de cadre appelés aussi frame. pour plus de détails relire ça.

 

Donc, on à trois pages, une page appeler gauche, une droite, une page de cadre.

 

Pour que votre bot réagisse, il suffira donc que vous programmiez des pattern de réaction que vous appelerez ensuite par d'autre avec la balise srai.

 

Moi j'utilise un fichier spécifique appelé reactiondu bot.aiml où je stock les réactions du bot :-)

 

Exemple :

 

<category>
  <pattern>botcolere</pattern>
  <template><SCRIPT LANGUAGE="JavaScript">
function redirect() {
    parent.gauche.location="http://tungstene.free.fr/images/halcolere.gif"
}
setTimeout("redirect()",200);// delai en millisecondes
</SCRIPT>
     </template>
</category>

 

 

ici, lorsque le pattern botcolere sera appeler, la fonction javacsript redirect() chargera l'image halcolere.gif

 

Capture-10.png

 

dans la page de gauche et donnera l'impression qu'Hallucinogene (le personnage de Bande dessinée)  est en colère

 

L'utilisation d'un gif permet de faire une petite annimation donnant une vie plus importante qu'une image fixe.

 

On appelera donc cette réaction lorsque par exemple elle sera insulté :

 

 

<category>
 <pattern> connasse </pattern>
<template>
<srai>botcolere</srai>

tu t'ai vu trou du cul !
</template>
</category>

 

Mais l'on pourra imaginer plein d'autre situation, qu'elle se lève et parte boire, qu'un écran noir soit mis à la place en cas de

déconnection

 

Qu'elle s'habille si elle a froid, qu'elle se déshabille si elle a chaud où qu'on affiche une page web externe comme wikipedia, la météo, etc etc les possibilités sont énormes !

 

Codé dans un autres language que javascripte, on peut même piloter une interface mécanique, faire bouger des moteurs, déclancher des interrupteurs etc....

Le retour d'information peut être dans ce cas simplement réenvoyer par un clavier usb modifier qui servirai d'interface en branchant des interupteurs en paralèlles sur les touches et en utilisant les principes d'interfacage des entrées ici

 

 

D'où l'interet de bien tout placé dans un ou des fichiers séparés.

 

 

Lire la suite
1 2 3 4 > >>