PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Progi1984 : Notifier via XMPP en PHP

lundi 10 mars 2014 à 09:30

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.

Logo XMPP

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 :

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.

Lien : Notifier via XMPP avec Facebook Chat en PHP

Cet article Notifier via XMPP en PHP est apparu en premier sur RootsLabs.

Gravatar de Progi1984
Original post of Progi1984.Votez pour ce billet sur Planet Libre.

Articles similaires