{"id":125,"date":"2017-09-05T12:58:31","date_gmt":"2017-09-05T10:58:31","guid":{"rendered":"https:\/\/bl.network\/blog\/?p=125"},"modified":"2019-05-30T11:13:21","modified_gmt":"2019-05-30T09:13:21","slug":"slack-where-work-happens","status":"publish","type":"post","link":"https:\/\/bl.network\/blog\/slack-where-work-happens\/","title":{"rendered":"slack, Where Work Happens"},"content":{"rendered":"<p><strong>slack<\/strong> a modifi\u00e9 la mani\u00e8re de communiquer dans bien des entreprises.<br \/>\nL&rsquo;outil permet d&rsquo;\u00e9changer efficacement avec les coll\u00e8gues et les machines.<\/p>\n<p>Cependant, j&rsquo;ai pu constater que les fonctionnalit\u00e9s \u00e9voluent tr\u00e8s vite. La documentation est riche mais n\u00e9cessite un temps de digestion cons\u00e9quent. D&rsquo;autant que l&rsquo;interface d&rsquo;administration n&rsquo;est pas des plus intuitives.<\/p>\n<p>Voici quelques pistes de configuration int\u00e9ressantes.<\/p>\n<hr \/>\n<h4 id=\"incoming_webhook\">Incoming Webhook<\/h4>\n<p>L&rsquo;id\u00e9e est de pouvoir envoyer des messages via https.<\/p>\n<p><u>Une notion \u00e0 bien comprendre<\/u> : un webhook int\u00e9gr\u00e9 dans une APP n&rsquo;est pas personnalisable (relisez la phrase plusieurs fois ; pour ma part, \u00e7a n&rsquo;a pas fait tilt imm\u00e9diatement).<\/p>\n<p>\u00ab\u00a0Personnalisable\u00a0\u00bb = pouvoir modifier le channel, le nom du bot, l&rsquo;icone, la couleur en face du message.<\/p>\n<p>Pour cr\u00e9er un <em>Incoming Webhook<\/em>, <em>ne pas passer par la cr\u00e9ation d&rsquo;une APP (Build)<\/em> mais <strong>rechercher Incoming Webhook dans les APP pour r\u00e9aliser une Custom Integration.<\/strong><\/p>\n<p>https:\/\/domain.slack.com\/apps\/manage<\/p>\n<p>Vous aurez alors la possibilit\u00e9 de choisir le channel <u>par d\u00e9faut<\/u> du webhook et r\u00e9cup\u00e9rer l&rsquo;URL.<\/p>\n<hr \/>\n<h4>Notification curl<\/h4>\n<p>Exemple d&rsquo;utilisation de la commande curl pour envoyer un message (ici, dans le channel par d\u00e9faut).<\/p>\n<p>Au passage, j&rsquo;envoie des variables en backslash pour que les valeurs sautent aux yeux \u00e0 la r\u00e9ception (police \u00e0 chasse fixe, fond gris, texte rouge).<\/p>\n<pre>curl -s -X POST -H 'Content-type: application\/json' \\\n--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\\`\\\"}\" \\\nhttps:\/\/hooks.slack.com\/services\/XXXXXXXXX\/YYYYYYYYY\/aaaaaaaaaaaaaaaaaaaaaaaa\u00a0&gt; \/dev\/null 2&gt;&amp;1<\/pre>\n<hr \/>\n<h4 id=\"slacktee\">slacktee<\/h4>\n<pre>man tee\ntee - read from standard input and write to standard output and files\n<\/pre>\n<p>Et bien slacktee, c&rsquo;est pareil, mais dans slack.<\/p>\n<p><a class=\"urlextern\" title=\"https:\/\/github.com\/course-hero\/slacktee\" href=\"https:\/\/github.com\/course-hero\/slacktee\" rel=\"nofollow\">https:\/\/github.com\/course-hero\/slacktee<\/a><\/p>\n<pre class=\"code\">ls -l | slacktee<\/pre>\n<p>Toujours avec le m\u00eame exemple, \u00e7a donne :<\/p>\n<pre class=\"file\">echo \"*[cron backup mysql]*\nDump OK\n`$DUMP_OK`\nDump NOK\n`$DUMP_NOK`\nPurge OK\n`$PURGE_OK`\nPurge NOK\n`$PURGE_NOK`\n\" | \/usr\/local\/bin\/slacktee -u bot_name -p<\/pre>\n<hr \/>\n<h4 id=\"slackmail\">slackmail<\/h4>\n<p>Enfin, slack propose la cr\u00e9ation d&rsquo;une adresse email secr\u00e8te en domain.slack.com pour convertir les notifications emails en message slack. Cependant, cette fonctionnalit\u00e9 n&rsquo;est accessible qu&rsquo;en version payante.<\/p>\n<p>Et comme il en faut peu pour \u00eatre heureux, voici l&rsquo;outil ultime pour se suffire de la version gratuite.<\/p>\n<p><a class=\"urlextern\" title=\"https:\/\/github.com\/iodine\/slackmail\" href=\"https:\/\/github.com\/iodine\/slackmail\" rel=\"nofollow\">https:\/\/github.com\/iodine\/slackmail<\/a><\/p>\n<p><em class=\"u\">start<\/em><\/p>\n<pre class=\"code\">slackmail-local --webhook-url='https:\/\/hooks.slack.com\/services\/XXXXXXXXX\/YYYYYYYYY\/aaaaaaaaaaaaaaaaaaaaaaaa' --listen-address=localhost:5025 &amp;<\/pre>\n<p><em class=\"u\">test<\/em><\/p>\n<pre class=\"code\">echo \"test\" | mail -s \"sujet\" -S smtp=smtp:\/\/localhost:5025 root<\/pre>\n<p>Pour une utilisation globale du SMTP local de slackmail : <em class=\"u\">\/etc\/nailr.rc<\/em><\/p>\n<pre class=\"code\">account slack {\nset smtp=smtp:\/\/localhost:5025\n}\n<\/pre>\n<p>Puis utiliser -A pour sp\u00e9cifier l&rsquo;account slack :<\/p>\n<pre class=\"code\">echo \"test\" | mail -s \"sujet\" -A slack root<\/pre>\n<p>Notez que le destinataire (ici root) n&rsquo;a aucune importance puisque le message sera diffus\u00e9 dans un channel slack.<\/p>\n<p>En prime, j&rsquo;ajoute un script d&rsquo;init (fichier .service systemd en cours de pr\u00e9paration).<\/p>\n<details>\n<summary>\/etc\/init.d\/slackmail<\/summary>\n<pre>#!\/bin\/sh\n### BEGIN INIT INFO\n# Provides: slackmail\n# Required-Start:\n# Required-Stop:\n# Should-Start:\n# Should-Stop:\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Short-Description:\n# Description:\n### END INIT INFO\n\ntouch \/var\/lock\/slackmail\n\ncase \"$1\" in\n start)\n echo \"Starting script slackmail \"\n slackmail-local --webhook-url='https:\/\/hooks.slack.com\/services\/XXXXXXXXX\/YYYYYYYYY\/aaaaaaaaaaaaaaaaaaaaaaaa' &amp;\n ;;\n stop)\n echo \"Stopping script slackmail\"\n killall slackmail-local\n rm \/var\/lock\/slackmail\n ;;\n *)\n echo \"Usage: \/etc\/init.d\/slackmail {start|stop}\"\n exit 1\n ;;\nesac\n\nexit 0\n<\/pre>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>slack a modifi\u00e9 la mani\u00e8re de communiquer dans bien des entreprises. L&rsquo;outil permet d&rsquo;\u00e9changer efficacement avec les coll\u00e8gues et les machines. Cependant, j&rsquo;ai pu constater que les fonctionnalit\u00e9s \u00e9voluent tr\u00e8s vite. La documentation est riche<a class=\"read-more\" href=\"https:\/\/bl.network\/blog\/slack-where-work-happens\/\">Lire la suite&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":26,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tuto"],"_links":{"self":[{"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/posts\/125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/comments?post=125"}],"version-history":[{"count":17,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":178,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/posts\/125\/revisions\/178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/media\/26"}],"wp:attachment":[{"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bl.network\/blog\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}