Bonsoir,
l'avant dernier post n'a été qu'une mise en bouche pour réaliser quelque chose de plus intéressant. Au menu du jour, je propose encore un nouveau plugin pour aMSN.
OK, cette fois j'évite le listing de code, le jargon technique et toutes ces choses qui font du blog «encore un autre blog par un informaticien pour informaticiens». Tous doivent s'y retrouver!
Le chat botté.En quelques mots, un «chat bot» ou «chat robot» est un logiciel qui mène une conversation avec un humain. Ce logiciel prétend être intelligent en essayant de répondre de façon cohérente aux messages envoyés par l'interlocuteur.
..au pays des merveillesA.L.I.C.E ou Alice est un chat bot qui est fondé sur une base de connaissances écrite dans un langage XML nommé
AIML. Le plugin que je propose, intègre Alice à aMSN et permet de laisser le bot faire la conversation à votre place.
Par exemple, une fois le chat bot activé, celui-ci mène la conversation engagée par un de vos contacts MSN.
Les outilsPour réaliser cela j'ai utilisé le langage
Python qui est disponible sur la majorité des distributions Linux. Le binding Python pour le SDK de KDE est aussi nécessaire dans la mesure où DCOP est utilisé comme protocole de communication inter-processus. Pour manipuler la base de connaissance en AIML,
pyAIML a été utilisé. Et enfin, pour réaliser le plugin, on peut reprendre, moyennant quelques modifications, le code TCL de l'avant dernier post.
La conceptionLe script Python sera utilisé pour:
- Charger les fichiers AIML.
- Transmettre le message de l'interlocuteur à Alice.
- Renvoyer la réponse.
L'idée est d'utiliser DCOP pour la communication entre notre script TCL et notre script Python. Une fois le plugin activé, les messages entrant sont soumis par le biais de DCOP au script Python. Ensuite, la réponse trouvée de la base de connaissances de Alice est relayée par le script TCL au contact.
TCL <--> DCOP <--> Python
Les seuls messages DCOP exposés par le script Python sont:
ask: Pour soumettre un message à Alice et obtenir une réponse
syntaxe: dcop Alice bot ask "
" ""
exemple: dcop Alice-6466 "what is the date today?" "david"
exit: Pour arrêter le programme Python.
syntaxe: dcop Alice bot exit
Télécharger le script python ici.
Le plugin TCL
Inutile de publier le code du plugin. Pour le réaliser, il suffit de repartir du dernier plugin et de coder la procédure received dans laquelle on fait cette fois l'appel DCOP ask.
Pour appeler ask on peut écrire quelque chose comme ça:
set reponse [exec dcop `dcop | grep -i alice` bot ask $question $identifiant]
La réponse obtenue, on l'envoi à l'interlocuteur en utilisant la procédure MessageSend définie dans le fichier gui.tcl. Comme pour le dernier plugin, rien n'est prévu pour l'arrêt, ni pour le chargement. Je laisse le soin à l'intéressé de compléter.