Help us understand the problem. What is going on with this article?

API Gateway + Lambda を使って Backlog 通知を Slack で受け取る

More than 3 years have passed since last update.

課題管理のツールとして Backlog は便利なんですが、自分が担当者になった場合や通知対象に含まれた場合にいちいちメールで通知を受けるのは鬱陶しいので、Slack の Direct Message で受け取れるようにしてみました。

Slack.png

こんな感じで、Backlog への課題の追加や更新等があった場合、bot から DM が届きます。
自分宛ての通知のみ DM で来るので、担当者が自分以外の課題に惑わされることがないので安心です。

Hubot で channel 投稿する例は既にいくつかありますが、せっかくなので API Gateway + AWS Lambda でさくっと組んでみました。

2017/08/10: CloudFormation 化しました

Slack API Token の準備

Slack にメッセージを投稿するためには、API Token が必要です。
Slack の Integration で API Token が使える App (Hubot 等) を入れ、API Token をメモしておきます。

既に Hubot を使っているなら、既存の Hubot の API Token をそのまま利用してもOKです。

slack_api_token.png

Backlog API Key の準備

Backlog

Backlog の API にアクセスするため、Backlog 側の API Key を発行し、メモしておきます。
「個人設定」->「API」から辿れます。

backlog_api_key.png

Lambda のビルド・S3 への設置

https://github.com/u-minor/backlog2slack からコードを clone し、ビルドします。

yarn install
yarn build

dist 以下に lambda.zip ができていれば OK です。

作成した lambda.zip を 適当な S3 bucket にアップロードしておきます。
bucket 名と、パスは覚えておきましょう。

CloudFormation でスタックを構築する

この作業で、Lambda 用 IAM Role の作成、Lambda function の作成、API Gateway 関連の設定が自動で行われます。

CloudFormation の Create stack に行き、template 選択で ローカルの cf/stack.yml をアップロードします。

Create_A_New_Stack.jpg

次に進むとスタック名やパラメータの設定画面になりますので、メモしておいた API Key 等を設定します。

Create_A_New_Stack.jpg

後は、特に何も設定せず次へ進んでいけば OK です。

最後の I acknowledge that AWS CloudFormation might create IAM resources. のチェックを入れ忘れないようにします。

Backlog の Webhook に 作成した API を設定する

作成されたスタックの Outputs を確認すると、デプロイした API のベース URL が確認できます。

Stack_Detail.jpg

Backlog の「プロジェクト設定」->「Webhook」に行き、Webhook を追加します。
API のベース URL に /notify を追加したものを登録します。

Backlog___Sprocket_プラットフォーム_SP____Webhook.jpg

うまく行けば、Backlog 課題の通知が Slack に流れてくるはずです。

補足

Backlog ユーザと Slack ユーザの連携は、メールアドレスベースで行っています。
Backlog の更新で通知があった場合、

  • Backlog のプロジェクト ID を取得
  • Backlog の該当プロジェクトのユーザリストを Backlog API 経由で取得
  • Slack のユーザリストを Slack API 経由で取得
  • 通知対象の Backlog ユーザ ID から Backlog ユーザのメールアドレスを参照
  • Slack ユーザのメールアドレスをサーチし、一致する Slack ユーザを選択
  • 通知先の Slack ユーザ ID を特定、DM 通知

といった処理が行われますので、Backlog と Slack のメールアドレスは一致させておく必要があります。

u-minor
sprocket
"Sprocket(スプロケット)は、Webサイトにおけるコンバージョン(購入・入会・資料請求・問合せ等)を増やしたい企業様向けに、自社開発のWeb接客ツールの導入及びコンバージョン改善コンサルティングを行っている会社です。 "
https://www.sprocket.bz/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away