Notifier via XMPP en PHP
XMPP peut vous paraître un acronyme assez agressif, mais c’est un ensemble de protocoles ouverts pour la messagerie instantanée qui se cache derrière Google Talk/Hangout ou derrière la messagerie instantanée de Facebook. Donc dans cet article, après les notifications HTML5 et par email, nous allons utiliser PHP pour envoyer un petit message de chat sur Google Talk.
Installation de la librairie JAXL
Comme d’habitude, nous allons utiliser Composer pour récupérer la librairie JAXL :
{ "require": { "abhinavsingh/jaxl": "3.x-dev", } }
Lien : Packagist : abhinavsingh/jaxl
Récupération d’un token d’accès OAuth pour parler XMPP avec Google Talk
Pour pouvoir se connecter au serveur de Google Talk, il faut un token d’accès car Google utilise une authentification XMPP nommée « Google Talk X-OAUTH2 ».
Pour récupérer le token d’accès :
- Aller sur https://developers.google.com/oauthplayground/
- Première étape : il faut rentrer le « scope » lié à Google Talk : https://www.googleapis.com/auth/googletalk
- Seconde étape : il faut autoriser Google à envoyer des messages instantanées
- Troisième étape : on a récupéré un code d’autorisation, mais il nous manque encore les tokens. Pour cela, il faut cliquer sur « Exchange authorization code for tokens »
- Dernière étape : on récupère le token d’accès pour l’utiliser dans notre prochaine étape
Utilisation de JAXL pour envoyer un message sur Google Talk
Après avoir initialisé Composer, on appelle l’autoload de Composer.
include_once 'vendor/autoload.php';
On initialise JAXL avec le token précédemment récupéré :
$xmppClient = new JAXL(array( // Credentials 'jid' => 'user@gmail.com', 'pass' => 'TOKEN', // AUTH 'auth_type' => 'X-OAUTH2', // SERVER 'host' => 'talk.google.com', 'port' => 5222, 'force_tls' => true, // LOG 'log_level' => JAXL_INFO ));
JAXL fonctionne à base de callbacks c’est-à-dire qu’en fonction de l’évènement, on appellera telle ou telle fonction.
Ainsi, dans notre cas, juste après le succès de la connexion, on envoie notre message.
// SUCCESS $xmppClient->add_cb('on_auth_success', function() { global $xmppClient; _info('AUTH SUCCESS : [jid] : '.$xmppClient->full_jid->to_string()); $xmppClient->set_status('available!', 'dnd', 10); $xmppClient->send(new XMPPMsg(array('to'=>'user@gmail.com'), '['.date('Y-m-d H:i:s').'] Hello world')); $xmppClient->send_end_stream(); }); // FAILURE $xmppClient->add_cb('on_auth_failure', function($reason) { global $xmppClient; _info('AUTH FAILED : '.$reason); $xmppClient->send_end_stream(); }); // LOGOUT $xmppClient->add_cb('on_disconnect', function() { _info('DISCONNECT'); });
Après avoir défini nos callbacks, on utilise la méthode start.
$xmppClient->start();
Conclusion
Et voilà, vous pouvez désormais échanger XMPP avec Google Talk. Avec les exemples de JAXL, il y a même moyen de faire un bot qui répondra à vos échanges.
Après Google Talk, il est possible de discuter avec de nombreux services utilisant XMPP comme protocole de messagerie : Facebook Chat ou iChat d’Apple.
Commentaires
[…] vous avoir appris à notifier sur Google Chat ou Jabber et par email, on va aujourd’hui apprendre à notifier des utilisateurs sur IRC, un des […]
[…] avoir publié sur Facebook, envoyé un message sur IRC ou XMPP et même envoyé un e-mail, nous allons voir comment envoyer un message sur le réseau de […]
[…] vous avoir appris à notifier sur Google Chat ou Jabber et par email, on va aujourd’hui apprendre à notifier des utilisateurs sur IRC, un des […]
Ajouter un commentaire