Logic Appsを使って、Backlogとslackを連携してみました。
Logic Appsとは
Azureで提供されているサービスの一つで、いろいろなサービスを連携させることができるサービスです。zaiperやIFTTTと似たようなサービスです。フローの定義はJSON形式ですが、GUIからポチポチ操作することでフローを作成することができるのでEngineer出ない方にも使いやすいサービスです。
例えば、
- FTP サーバーにアップロードされたファイルを Azure Storage に移動する
- Tweetを監視して、アラートやタスクを作成する
- 日本語で書いたメッセージを自動で英語に翻訳してcommitする
- MailChimp リストに新しいメンバーが追加されたときにそのメンバーを SharePoint リストにも追加する
- Facebook で自分のツイートを共有する
など様々なサービスを組みわせることができます。
今回はBacklogで課題が追加されたら、WebhookでLogic Appに飛ばし、そこからSlackに飛ばすようにしてみました。
このように【課題のタイトル】, 【期日】, 【担当者】がslackに通知されるようにします。
BacklogからWebhookに渡すJSONファイルの作成
BacklogにはWebhook機能が実装されており、この機能を使うとBacklogの課題やコメントを外部サービスに飛ばすことができます。
今回は【課題のタイトル】, 【期日】, 【担当者】を受け取れるようにします。
下記のリンクを参考にしてJSONファイルを作成します。
https://developer.nulab-inc.com/ja/docs/backlog/api/2/get-comments
そして出来上がったのがこちら。かなり簡略化してます。
{ "content": { "summary": "", "dueDate": "", "assignee": { "userId": "" } } }
JSON → Scheme
この作成したJSONからSchemeを作成します。
下記のようなサイトを利用すると良いと思います。
画面左側に先ほど作成したJSONを貼り付け、generates schemaをクリックすると画面左側にSchemeが作成されるのでこれを保存しときます。
変換したScheme
{ "$schema": "https://json-schema.org/draft-04/schema#", "type": "object", "properties": { "content": { "type": "object", "properties": { "summary": { "type": "string" }, "dueDate": { "type": "string" }, "assignee": { "type": "object", "properties": { "userId": { "type": "string" } }, "required": [ "userId" ] } }, "required": [ "summary", "dueDate", "assignee" ] } }, "required": [ "content" ] }
Logic Appを作成
まずAzureでLogic Appsを作成します。
新規 → WEB+モバイル → Logic Appを選びます
名前、サブスクリプションを指定します。リソースグループは「LogicApp」という名前で新規に作成しました。今年はブラジルでオリンピックが開催されたので場所はブラジル南部にしときます(Latencyとか考える場合は近場のほうが良いです)。そして作成。
作成されたら、Logic Appsの設定画面を開きます。
リソースグループ で先ほど指定したリソースグループ(今回はLogicApp)を選択して、作成したLogicApps(今回はBacklogToSlack)を選択します。
設定画面が開いたら、Logic Apps デザイナーを選択し、空のLogic Appを選択します。
トリガーとして「要求」を選択して、先ほど作成したJSONスキーマを貼り付けます。そして、一旦保存します。
保存すると、HTTP POSTのURLが作成されるのでこれを保存しときます。
Logic App と Slackと連携
Logic AppとSlackと連携します。アクションでslackを選択してサインインします。
連携後に、Slackのチャネルと出力Formatを決めます。
保存してAzure側の作業は終わりです。
BacklogからLogic Appsの設定
Backlogのプロジェクト設定から、Webhookを追加します。
今回は下記の用に設定しました。WebHook URLは先程Logic Appで作成した「HTTP POSTのURL」を記入します。
設定後WebHookを追加するで設定を保存します。
これで設定完了です。
実際に課題を追加してみる
実際に課題を追加してみましょう。
追加
・
・
・
・
・
・
Slackに無事通知がきました。