Pushover - Envoyer des notifications push depuis Drupal 8

Posté le Vendredi 6 octobre 2017 - 06:46
Dernière mise à jour le Vendredi 9 mars 2018 - 11:11
Exemple notification Pushover depuis Drupal 8

Pour d'autres raisons j'ai utilisé le service de Pushover, qui permet d'envoyer des notifications push vers son téléphone mobile. Dans le principe, vous installer l'application sur votre téléphone / tablette (android ou apple) et via une api vous pourrez envoyer une notifications vers un, ou l'ensemble de vos devices.

J'ai aussi créé un module pour intégrer le service et ainsi pouvoir envoyer une notification push depuis son site Drupal 8. Quelle utilité ? À vous de voir, je l'ai personnellement utilisé pour recevoir une notification push en cas de nouveau commentaire ou bien d'alerte critique sur le site.

Le module est sur Github : https://github.com/kgaut/drupal-pushover, on peut l'installer via composer :

# Ajout du dépot
composer config repositories.drupal-pushover vcs https://github.com/kgaut/drupal-pushover
# Téléchargement du module
composer require drupal/pushover

Une fois installé on le configure via le formulaire dans Configuration / Services Web / Pushover Configuration

pushover-drupal-configuration.jpg

Le code pour déclencher une notification est le suivant :

\Drupal::service('pushover.sender')->sendNotification($title, $message, $url = NULL, $url_title = NULL);

Un exemple d'intégration pour envoyer une notification lors d'un nouveau commentaire :

/**
 * Implements hook_HOOK_insert().
 *
 * Send Pushover notification on new comment.
 *
 * @param \Drupal\comment\Entity\Comment $comment
 */
function kgaut_comment_insert(\Drupal\comment\Entity\Comment $comment) {
  $node = $comment->getCommentedEntity();
  $author = $comment->getAuthorName();
  $title = t('Nouveau commentaire sur Kgaut.NET');
  $description = t('@name à posté un nouveau commentaire sur « @post_title »', [
    '@name' => $author,
    '@post_title' => $node->label(),
  ]);
  $url = $node->url('canonical',['absolute' => TRUE]);
  \Drupal::service('pushover.sender')->sendNotification($title, $description, $url, t('Voir le post'));
}

Et voila le résultat :

pushover-notification-small.png

Bon évidement, on doit aussi pouvoir trouver des usages utiles :)

Ça n'est pas du drupal, mais j'ai aussi ajouté une notification quand quelqu'un se connecte en ssh sur mon serveur, je partagerai peut-être le script en question un de ces 4 !

Aller plus loin ?

Comments

Dis moi si je me trompe, mais des utilisateurs anonymes ne peuvent pas souscrire à ce service pushover via une simple demande de notif en javascript ? ( genre https://developer.mozilla.org/en-US/docs/Web/API/notification ), il me semble que tu dois passer par une page (en anglais?) sur pushover pour t'abonner aux notifs ?

Effectivement, c'est uniquement pour s'auto-envoyer des notifs

Bonjour,
Existe il une solution pour justement permettre d'envoyer des notifications push à un groupe de discussion ou des abonnés d'une  newsletter ?

Oui tu peux installer firebase de Google par exemple, récolter un jeton que tu stockes par user, dès lors tu peux envoyer des notifs ciblées en transmettant les tokens liés à tes user. Je l'ai fait sur plusieurs sites ça marche très bien.

A noter prévoir un champ multi valeur pour stocker les tokens, un utilisateur peut avoir plusieurs jetons de notif car il peut avoir plusieurs périphériques (un pc, un smartphone etc..)

Merci pour ta réponse.
J'ai installé les modules Firebase Cloud Messaging et Firebase Authentication.
Je comprends que Firebase Cloud Messaging permet d'envoyer des messages à des groupes de token.
Mais comment créer ces tokens ? Les tokens sont des identifiants correspondants à chaque périphérique, ok, mais comment générer des tokens à partir du site internet ?
L'autre module, Firebase Authentication mais permis, à partir d'un ID drupal  et d'un mail, à travers une requete  POST, de créer des utilisateurs dans l'interface firebase "Authentication" avec pour chaque utilisateur la génération d'un token. Mais je ne vois toujours pas comment faire le lien entre ce compte firebase et le périphérique de l'utilisateur....j'imagine qu'a un moment il faut entrer une numero de téléphone et qu'il y aura via un système de vérification, une validation du smartphone et l'attribution d'un token....
Est ce que tu peux m'en dire plus. D'avance merci !
 

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...