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 » :
Sur l'écran suivant cliquez sur le bouton « Add Configuration »
Sélectionnez ensuite le canal où les messages devront être postés :
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 :
On teste si tout fonctionne bien via l'onglet « send test message »
On vérifie dans le slack :
\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 !
Ajouter un commentaire