« RobotJabberFR » : différence entre les versions
(→Langage de programmation : Lib PHP "Jabber Client") |
|||
Ligne 59 : | Ligne 59 : | ||
: Langage interprété simple à maitriser et très efficace. Dispose de plusieurs bibliothèques pour XMPP ([http://xmpppy.sourceforge.net/ xmpppy], [http://pyxmpp.jabberstudio.org/ pyxmpp], [http://twistedmatrix.com/ twisted words]). | : Langage interprété simple à maitriser et très efficace. Dispose de plusieurs bibliothèques pour XMPP ([http://xmpppy.sourceforge.net/ xmpppy], [http://pyxmpp.jabberstudio.org/ pyxmpp], [http://twistedmatrix.com/ twisted words]). | ||
* PHP | * PHP | ||
: Langage de programmation orienté web. Permet très simplement d'afficher des présences web. Principalement 3 bibliothèques ([http://cjphp.netflint.net/ class.jabber.php], [http://jabberstudio.org/projects/xmpp4/project/view.php xmpp4] et [http://code.blitzaffe.com/pages/phpclasses/files/jabber_client_52-11 Jabber Client]) dont le | : Langage de programmation orienté web. Permet très simplement d'afficher des présences web. Principalement 3 bibliothèques ([http://cjphp.netflint.net/ class.jabber.php], [http://jabberstudio.org/projects/xmpp4/project/view.php xmpp4] et [http://code.blitzaffe.com/pages/phpclasses/files/jabber_client_52-11 Jabber Client]) dont le développement avance faiblement, avec tout de même un regain pour la dernière. | ||
* Ruby | * Ruby | ||
: [http://home.gna.org/xmpp4r/ xmpp4r] | : [http://home.gna.org/xmpp4r/ xmpp4r] |
Version du 23 juin 2006 à 21:38
Projet de Robot multifonction pour la communauté JabberFR
Participants
Liste des personnes volontaires pour aider à la création du robot.
Solutions de bots existantes
- Neutron (python)
- WhereSkal (python)
- solution basée sur cjp (php) - je bosse sur un projet modulaire avec cjp, disponible par svn ici : [1] -- Talou
- solution basée sur xmpp4r (ruby)
Fonctions du Robot
Forum
- Suivi des discussions par abonnement (comme pour les actuelles notifications mail)
- Recherche
Wiki
- Suivi des modifications d'articles par abonnement (comme pour les notifs mail actuelles)
- Recherche
Planet
- Abonnement aux notifications de nouveaux billets
- Historique et recherche dans le planet
- Admin : gestion des blogs participants
- Admin : mise à jour manuelle
Annuaire
- Recherche et interrogation de l'annuaire
- Est-ce vraiment utile ? L'annuaire est déjà disponible de puis jabber ... Omega 29 mar 2006 à 17:45 (CEST)
Général
- Présence sur le web (à la manière d'Edgar)
- seen
- help
- visible (choix des contact du bot de le voir ou non, comme Edgar)
- admin : presence (gestion de la présence du bot)
- admin : gestion du roster du bot
Remarques
- il peut y avoir plusieurs bots, notamment du fait qu'il y a des éléments de jabberfr sur plusieurs machines, ce qui permet de répartir les commandes. Les ressources sont là pour ça.
Roadmap ?
Inventaire des bots jabber existants
Aspects techniques
Client vs Composant
Un robot "client" est un robot qui se connecte au serveur de la même manière qu'un client jabber.
Un robot "composant" est un robot qui se connecte au serveur comme un composant (par exemple une passerelle). L'avantage d'un tel robot est que son jid est du genre bot.jabberfr.org, on peut donc le faire apparaitre dans les services (disco) des serveurs. On peut aussi plus facilement s'inscrire dessus (comme une passerelle) ou faire des recherches (comme un annuaire). Par contre presqu'aucun bot n'est fait comme ça. On devrait donc tout recoder.
Langage de programmation
- Python
- Langage interprété simple à maitriser et très efficace. Dispose de plusieurs bibliothèques pour XMPP (xmpppy, pyxmpp, twisted words).
- PHP
- Langage de programmation orienté web. Permet très simplement d'afficher des présences web. Principalement 3 bibliothèques (class.jabber.php, xmpp4 et Jabber Client) dont le développement avance faiblement, avec tout de même un regain pour la dernière.
- Ruby
- Autre
- (C, C++, java, ...)
Communication entre le wiki/forum/planet/... et le robot
Pour pouvoir envoyer des notifications de modification il faut que le robot soit au courant de ces modifications.
- RSS
- Le planet, le wiki et le forum possèdent tous les trois un fil RSS, on peut donc très bien récupérer ce fil à interval régulier et envoyer des messages si y'a eu des modifications.
- C'est simple à réaliser mais ce n'est pas instantannée. Et même si le site n'est pas hébergé au même endroit que le robot ca marchera.
- Le problème du polling, c'est que ça génère du trafic... et des requêtes qui faussent les stats. Le mieux (mais pas facile) est de "pusher" les modifs : les applications doivent être "aware" qu'elles sont client Jabber et doivent envoyer un message à chaque évènement. Nyco 29 mar 2006 à 08:59 (CEST)
- D-Bus, DCOP ou tout autre moyen de communication entre les processus
- Pas forcément simple à mettre en oeuvre mais au moins on garde le caractère instantannée des notifications.
- Le site doit être sur le même serveur que le robot.
- Il faut avoir des bibliothèque adaptées en php
- Socket ou RPC
- Notifications instantannées
- Possibilité d'avoir les sites sur différents serveurs
- Il faut par contre pouvoir authentifier la connection pour éviter que le robot soit utilisé pour envoyer du spam.
La méthode RPC me semble la plus apropriée par contre il faut pouvoir s'assurer de l'origine de la communication. Peut être en envoyant un hash d'un mot de passe ou quelque chose comme ca. Omega 28 mar 2006 à 21:19 (CEST)
Avancement
Le bot est en place, son jid est pour l'instant jabberfr@im.apinc.org.
Pour l'instant il ne permet que la notification des changements sur le wiki. Pour s'inscrire à la notifications il faut lui envoyer comme message
!notice_sub wiki
Les notifications sont encore assez succintes, mais c'est assez facile d'améliorer après. Omega 17 jun 2006 à 13:42 (CEST)
- Possibilité de ne pas recevoir de notifiactions lorsqu'on est déconnecté, occupé, ou absent
!notice_status busy
pour ne pas recevoir de notification lorsqu'on est occupé (les autres possibilités sont away et offline)
- Possibilité de configurer le bot avec les commandes ad-hoc Omega 21 jun 2006 à 20:30 (CEST)