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
Cet article Notifier via IRC en PHP est apparu en premier sur RootsLabs.