タイトルで全部説明してる感ありますが、Backlogで行ったコメント関連の通知をSlackに連携するコードを書きました。
「backlack」という名前を付けました。
ソースコードはGitHubにて公開していますので、自由にお使い下さい。
作った経緯
元々、社内で使うために年末年始にせっせと作って利用していました。
弊社ではタスク管理にBacklog、チャットツールにSlackを使用しています。
BacklogもSlackもシンプルなUIで本当に使いやすいツールです。
BacklogやSlackには社内のメンバーだけでなく、別事務所で働くメンバーやパートナー様も入っており、記録として残しておきたい指示や報告をBacklogで行っています。
Backlogにはコメントを書いたときにどのメンバーへ通知を行うかを指定する機能があります。
指定された人にはBacklog上に通知が表示されます。
しかしBacklog上の通知は、通知力に乏しいと常々感じていました。
複数のプロジェクトやメンバーとやり取りを行うと、どうしても通知が増え、見落としてはいけない通知を見落としてしまう場面もよくありました。
↓こんな感じの状態を経験した方、いるんじゃないでしょうか?
これまでは、通知した相手が見落とさないように、BacklogにコメントしたURLをSlackで改めて伝える、という二度手間なやり方をしていました。
しかしこのようなやり方は、はっきり言って無駄でありながら、回数が増えれば時間的損失も多いやり方でした。
そこでこのBacklogの通知をSlackで受け取るようにすれば、通知をスルーしてしまうことも減るんじゃないかと思い、このツールを作りました。
構成
図にするとこのような形になります。
- BacklogのWebhookの送信先に、Azure FunctionsにデプロイしたbacklackのURLを指定する。
- backlackは、受信したWebhookデータから通知先のSlackチャネルやコメント内容を抽出する。
- backlackからSlackのIncoming WebhookのURLに対して、通知データをPOSTする。
動かしてみたサンプル
SlackのMessage Attachmentsという機能を使えば、Backlogから流れてくるコメントも折り畳まれて表示されるので、ぱっと見すっきりします。
「コメントを受取ったことを通知する」ことに重きを置いて作ってます。
Slackで受取った通知は下記のような感じになります。
所感
この機能を作って以降、Backlogの通知を見落とすこともなくなり、結果的に Backlogの通知力を高める 形になったんじゃないかなーと思ってます。
私はAzure Functionsで動作するように作りましたが、少し構成を変えればAWS Lambdaでも動くはずです。
こんな機能も欲しいとか、Lambda版作ってみたぜ!とかあれば、Pull RequestやIssueをお待ちしています。
追記
使い方についてはこちらの記事で説明してあります。