Intégrer Slack à son site drupal 8

Intégrer Slack à son site drupal 8

Nous allons voir comment envoyer des messages sur un slack depuis un site.

Évidement, vous devez pour cela être administrateur du slack ou bien avoir des jetons d'intégration.

Installation du module d'API

Commençons par télécharger et activer le module slack qui fera le pont entre notre site et l'API de slack

composer require drupal/slack
drush en slack

Configuration

Rendez-vous sur la page de configuration du module : /admin/config/services/slack/config

Il nous faudra ici une « Webhook URL », qui s'obtient sur votre slack, dans la section Apps : https://MONSLACK.slack.com/apps, dans le recherche tapez « webhook » et dans l'auto-complétion selectionnez « Incoming WebHooks » :

Slack Incoming WebHooks

Sur l'écran suivant cliquez sur le bouton « Add Configuration »

Slack - add configuration

Sélectionnez ensuite le canal où les messages devront être postés :

Slack - Selection chan

Récupérez ensuite l'adresse « webhook URL » en renseignez-la sur votre site, sur l'écran de configuration de Slack, vous pouvez renseigner le nom et l'avatar qui apparaîtra pour chaque message :

slack - config

On teste si tout fonctionne bien via l'onglet « send test message »

Slack Test

On vérifie dans le slack :

slack test

\o/

Voila le module est configuré, on peut maintenant utiliser rules pour déclencher des actions. Mais on peut aussi le faire depuis le code.

Un exemple tout simple (qui aurait pu être fait via rules) : envoyer un message slack à chaque commentaire sur le site, j'ai utilisé pour cela le hook_comment_insert avec le service slack.slack_service :

function kgaut_comment_insert(\Drupal\comment\Entity\Comment $comment) {
  /** @var \Drupal\slack\Slack $slack */
  $slack = \Drupal::service('slack.slack_service');

  $node = $comment->getCommentedEntity();
  $author = $comment->getAuthorName();
  $email = $comment->getAuthorEmail();
  $body = strip_tags($comment->get('comment_body')->value);
  $description = t('*@username* (@email) vient de poster un commentaire sur *@post_title* : _@message_. @comment_url', [
    '@username' => $author,
    '@message' => $body,
    '@email' => $email,
    '@post_title' => $node->label(),
    '@comment_url' => $comment->toUrl('canonical', ['absolute' => TRUE])->toString(),
  ]);
  $slack->sendMessage($description);
}

Et hop !

samarsh !

 

Ajouter un commentaire

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