slack, Where Work Happens

slack a modifié la manière de communiquer dans bien des entreprises.
L’outil permet d’échanger efficacement avec les collègues et les machines.

Cependant, j’ai pu constater que les fonctionnalités évoluent très vite. La documentation est riche mais nécessite un temps de digestion conséquent. D’autant que l’interface d’administration n’est pas des plus intuitives.

Voici quelques pistes de configuration intéressantes.


Incoming Webhook

L’idée est de pouvoir envoyer des messages via https.

Une notion à bien comprendre : un webhook intégré dans une APP n’est pas personnalisable (relisez la phrase plusieurs fois ; pour ma part, ça n’a pas fait tilt immédiatement).

« Personnalisable » = pouvoir modifier le channel, le nom du bot, l’icone, la couleur en face du message.

Pour créer un Incoming Webhook, ne pas passer par la création d’une APP (Build) mais rechercher Incoming Webhook dans les APP pour réaliser une Custom Integration.

https://domain.slack.com/apps/manage

Vous aurez alors la possibilité de choisir le channel par défaut du webhook et récupérer l’URL.


Notification curl

Exemple d’utilisation de la commande curl pour envoyer un message (ici, dans le channel par défaut).

Au passage, j’envoie des variables en backslash pour que les valeurs sautent aux yeux à la réception (police à chasse fixe, fond gris, texte rouge).

curl -s -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"*[cron backup mysql]*\nDump OK\n\`$DUMP_OK\`\nDump NOK\n\`$DUMP_NOK\`\nPurge OK\n\`$PURGE_OK\`\nPurge NOK\n\`$PURGE_NOK\`\"}" \
https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/aaaaaaaaaaaaaaaaaaaaaaaa > /dev/null 2>&1

slacktee

man tee
tee - read from standard input and write to standard output and files

Et bien slacktee, c’est pareil, mais dans slack.

https://github.com/course-hero/slacktee

ls -l | slacktee

Toujours avec le même exemple, ça donne :

echo "*[cron backup mysql]*
Dump OK
`$DUMP_OK`
Dump NOK
`$DUMP_NOK`
Purge OK
`$PURGE_OK`
Purge NOK
`$PURGE_NOK`
" | /usr/local/bin/slacktee -u bot_name -p

slackmail

Enfin, slack propose la création d’une adresse email secrète en domain.slack.com pour convertir les notifications emails en message slack. Cependant, cette fonctionnalité n’est accessible qu’en version payante.

Et comme il en faut peu pour être heureux, voici l’outil ultime pour se suffire de la version gratuite.

https://github.com/iodine/slackmail

start

slackmail-local --webhook-url='https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/aaaaaaaaaaaaaaaaaaaaaaaa' --listen-address=localhost:5025 &

test

echo "test" | mail -s "sujet" -S smtp=smtp://localhost:5025 root

Pour une utilisation globale du SMTP local de slackmail : /etc/nailr.rc

account slack {
set smtp=smtp://localhost:5025
}

Puis utiliser -A pour spécifier l’account slack :

echo "test" | mail -s "sujet" -A slack root

Notez que le destinataire (ici root) n’a aucune importance puisque le message sera diffusé dans un channel slack.

En prime, j’ajoute un script d’init (fichier .service systemd en cours de préparation).

/etc/init.d/slackmail
#!/bin/sh
### BEGIN INIT INFO
# Provides: slackmail
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
# Description:
### END INIT INFO

touch /var/lock/slackmail

case "$1" in
 start)
 echo "Starting script slackmail "
 slackmail-local --webhook-url='https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/aaaaaaaaaaaaaaaaaaaaaaaa' &
 ;;
 stop)
 echo "Stopping script slackmail"
 killall slackmail-local
 rm /var/lock/slackmail
 ;;
 *)
 echo "Usage: /etc/init.d/slackmail {start|stop}"
 exit 1
 ;;
esac

exit 0