Carnet Wiki

Jabber et SPIP

Version 3 — Mars 2010 davux

Le but de cette page est de recenser les applications possibles de Jabber/XMPP dans SPIP. Suite aux idées qui en sortiront, il sera plus facile de déterminer les envies/besoins réels en la matière.

Client de chat : discuter avec les auteurs

En tant que visiteur, j’arrive sur une page d’auteur. De la même façon qu’il existe un formulaire pour lui envoyer un mail, il serait intéressant de pouvoir discuter en direct.

Les prérequis du côté du compte auteur sont juste de renseigner son JID (adresse Jabber).

Solutions possibles :
-  Tout côté navigateur : un client léger en javascript. Il faut alors demander au visiteur ses coordonnées Jabber (bof même si ça reste sur le client).
-  Passer par un compte configuré sur le serveur : côté navigateur on fait de l’AJAX, et le client Jabber est sur le serveur web. C’est ce que fait Olark par exemple. Voir cas générique (envoi automatisable).

Avatars

Pouvoir récupérer l’avatar d’un auteur SPIP ou d’un auteur de commentaire à partir de son JID. Des solutions comme Omniprésence existent, mais récupérer directement l’avatar serait plus pratique et permettrait une vraie décentralisation. Pour cela, il faudrait un compte Jabber propre à SPIP (voir cas générique). Ce cas permet une approche de type connexion/requête/déconnexion, même si d’autres approches sont possibles.

Plus généralement, d’autres types d’informations sont récupérables : état de présence (en ligne, absent, etc.), message de statut, humeur, activité, etc. (voir Omniprésence).

Notifications Jabber

Un article est publié, un message a été posté, etc. De la même manière qu’il existe des notifications par mail, une notification par Jabber pourrait être pratique. Ce cas permet une approche de type « connexion, envoi du message, déconnexion » dans la vie du script PHP, même si ce n’est pas la seule possible.

Publication d’articles ou de commentaires via Jabber

Pouvoir publier/proposer des articles via Jabber : le titre et le contenu de l’article sont ceux du message, l’auteur est l’émetteur (si son JID est trouvé).

Cas annexe : pouvoir interagir plus largement avec SPIP. Par exemple gérer les articles via Jabber : changer le statut, les auteurs, les mots-clés, les catégories...

Voir cas générique mais cette fois du côté « réception de données ».

Publication automatique d’articles via PubSub

Publier via Publish-Subscribe (alias PubSub) un article en temps réel lors de sa mise en ligne. Voir cas générique. Dans ce scénario, une approche de type connexion/envoi/déconnexion est possible.

[cas-generique<-]Cas générique : interface programmable pour les plugins

Dans plein de cas, il serait pratique de disposer d’une interface programmable de communication avec un serveur Jabber. Il y aurait un compte configuré au niveau du serveur SPIP (JID et mot de passe du compte), il faut un moyen « clean » pour :
-  envoyer des paquets XML (message, presence ou IQ) via ce compte
-  lire ce qui est arrivé.

Un obstacle majeur est l’aspect « déconnecté » des communications HTTP : un script PHP a une durée de vie très courte.

Solutions possibles :
-  Faire tourner sur le serveur web un client Jabber qui maintient sa propre connexion. Ce client fournit à SPIP une interface de mise en file d’attente de paquets à envoyer, ainsi qu’une vue sur les paquets reçus à traiter. Dans ce cas, on a une seule connexion Jabber, utilisée par l’ensemble des scripts.
- Faire des cycles connexion/traitement/déconnexion qui tiennent dans la durée de vie du script PHP. Dans ce cas, on a une connexion Jabber par script lancé, et la connexion est très brève.
- Autres ?