Notifier via IRC en PHP
Après vous avoir appris à notifier sur Google Chat ou Jabber et par email, on va aujourd’hui apprendre à notifier des utilisateurs sur IRC, un des systèmes de chat les plus anciens.
Installation de la librairie NetSmartIRC
L’installation se fait, comme d’habitude dans notre série d’articles, via Composer.
On va donc ajouter dans le require du fichier composer.json la libraire disponible sur PEAR ou Packagist :
"require": { "tarekdj/net-smart-irc": "1.0.3" }
Envoyer un message sur IRC
Malheureusement, on dirait que les développeurs n’ont pas utilisé les techniques d’autoload prescrites par la PSR-0. Donc il va falloir inclure notre fichier à l’ancienne :
require 'vendor/tarekdj/net-smart-irc/Net/SmartIRC.php';
On va définir le channel auquel on veut envoyer un message :
define('CHANNEL', '#test');
Après cela, on va initialiser la classe Net_SmartIRC :
$oIrc = &new Net_SmartIRC(); $oIrc->setDebug(SMARTIRC_DEBUG_ALL); $oIrc->setUseSockets(TRUE);
Avant de tenter de se connecter, on va dire à Net_SmartIRC d’exécuter régulièrement des actions :
class Notification { function sendNotification(&$oIrc) { global $ptrIRCNotify; $oIrc->message(SMARTIRC_TYPE_CHANNEL, CHANNEL, 'Merci de visiter http://rootslabs.net/blog/'); $oIrc->unregisterTimeid($ptrIRCNotify); } function quit(&$oIrc) { global $ptrIRCQuit; $oIrc->quit(); $oIrc->unregisterTimeid($ptrIRCQuit); } } $oNotifyIRC = &new Notification(); $ptrIRCNotify = $oIrc->registerTimehandler(10000, $oNotifyIRC, 'sendNotification'); $ptrIRCQuit = $oIrc->registerTimehandler(11000, $oNotifyIRC, 'quit');
Ainsi, au bout de 10 sec., il exécutera la méthode sendNotification de l’object que l’on a créé, et au bout de 11 sec., il exécutera la méthode quit. Si on n’avait pas déclaré la méthode quit, il aurait envoyé une notification toutes les 10 secondes.
Dans notre cas, il va envoyer une notification puis 1 seconde plus tard, il va se déconnecter.
Actuellement, on envoie un message et on quitte, mais de nombreuses autres commandes sont disponibles : changer de pseudonyme, récupérer le topic du channel ou récupérer des informations sur un utilisateur ou un channel.
Après les déclarations, on va définir les informations de connection et lancer les commandes planifiés.
## Connexion au serveur Freenode sur le port 6667 $oIrc->connect('irc.freenode.net', 6667); ## Informations de login : nick, real name, user mode (0 par défaut), nom d'utilisateur et mot de passe $oIrc->login('NoticationMaster', 'Notification Description', '0', 'NoticationMasterUserName'); ## Les channels à rejoindre $oIrc->join(array(CHANNEL)); ## Ensuite, on se connecte... $oIrc->listen(); $oIrc->disconnect();
Conclusion
En conclusion, on peut dire que NetSmartIRC fait le travail qu’on lui demande, c’est-à-dire envoyer un message sur IRC et se déconnecter. Mais en regardant au-delà, on peut utiliser NetSmartIRC pour créer un bot qui toutes les minutes se connectera à GitHub pour voir si il y a de nouvelles notifications, ou à GMail pour vérifier l’arrivée de mails, et qui, si c’est le cas, enverra un message sur un channel défini à l’avance.
Source : Wikimedia Commons
Commentaires
[…] Après avoir décrit les notifications par email et via XMPP, on va s'attaquer à un des plus anciens protocoles de chat sur Internet : IRC. […]
[…] avoir publié sur IRC, ou notifié un des vos utilisateurs par email, nous allons passer aux réseaux sociaux en […]
[…] 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 […]
Ajouter un commentaire