RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

Notifier via IRC en PHP

Progi1984 - Commentaires (3)

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.

Cover IRC

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

1. RootsLabs » Notifier via IRC en PHP | web..., le 3 avril 2014 à 12:23

[…] 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.  […]

2. RootsLabs » Notifier sur Facebook en PHP, le 28 avril 2014 à 10:36

[…] avoir publié sur IRC, ou notifié un des vos utilisateurs par email, nous allons passer aux réseaux sociaux en […]

3. RootsLabs » Publier sur Twitter en PHP, le 4 octobre 2017 à 09:52

[…] 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

Commentaire :