Backlog に新しい課題が追加されると、Hubot を経由して Trello の指定したボードの指定したリストにカードが追加されるようにしました。
カードには、タイトル、Description が入った状態となります。タイトルは「[XXX-1] 課題の名前」という形で入り、Description は該当課題 URL、課題を追加した人の名前、Backlog の「詳細」部分、が入ります。
私は Hubot を Heroku に置いてるので、環境設定は Heroku 側で行っています。
Trello API Key などの取得
API Keys を取得
ログインしている状態で https://trello.com/app-key へ行く。
「Developer API Keys」の「Key」をメモ。
トークンを取得
次の URL へ行って「Allow」を押し、トークンを取得する。
https://trello.com/1/authorize?key=【自分のkey】&name=&expiration=never&response_type=token&scope=read,write
【自分のkey】は先ほど取得した「Developer API Keys」の「Key」。
カードを追加したい(ボードの)リストの ID を取得
ボードの ID を取得
次の URL で自分の Trello のボード一覧が JSON で取得できる。カードを追加したいボードの ID をメモ。
https://trello.com/1/members/【自分のTrello名】/boards?key=【自分のkey】&token=【自分のtoken】&fields=name
リストの ID を取得
次の URL で該当ボードのリスト一覧が JSON で取得できる。カードを追加したいリストの ID をメモ。
https://trello.com/1/boards/【上で取得したBoardのID】/lists?key=【自分のkey】&token=【自分のtoken】&fields=name
Heroku 側の設定
Heroku の Config Variables に次の内容を設定。それぞれ上で取得したもの。Heroku 管理画面 > Setting からでも、コマンドラインからでも設定可能。
HUBOT_TRELLO_KEY
…Trello の自分の「Developer API Keys」の「Key」
HUBOT_TRELLO_TOKEN
…Trello の自分のトークン
HUBOT_TRELLO_POST_LIST
…Trello の投稿したいリストの ID
コマンドラインで設定するなら $ heroku config:add HUBOT_TRELLO_KEY=【自分のkey】
といった感じで。
Hubot スクリプト
node-trello を使うので入れておく。
$ npm install node-trello --save
#
# Description:
# Backlog to Trello
#
# Dependencies:
# "node-trello": "^1.1.1"
#
# Configuration:
# HUBOT_TRELLO_KEY
# HUBOT_TRELLO_TOKEN
# HUBOT_TRELLO_POST_LIST
# ※heroku 環境設定
#
# Commands:
#
#
backlogUrl = 'https://<自分のスペース>.backlog.jp/'
module.exports = (robot) ->
Trello = require("node-trello")
t = new Trello(process.env.HUBOT_TRELLO_KEY, process.env.HUBOT_TRELLO_TOKEN)
robot.router.post "/trello/:room", (req, res) ->
room = req.params.room
body = req.body
try
switch body.type
when 1
label = '課題の追加'
else
# 課題関連以外はスルー
return
# 投稿メッセージを整形
url = "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}"
title = "[#{body.project.projectKey}-#{body.content.key_id}] "
title += "#{body.content.summary}"
description = "#{url}\n"
description += "登録者:#{body.createdUser.name}\n\n"
description += "#{body.content.description}"
t.post "/1/cards/", {
name: title
desc: description
idList: process.env.HUBOT_TRELLO_POST_LIST_SNK
}, (err, data) ->
if (err)
console.log err
return
# # カードを追加したら Slack に投稿したい場合はここを利用
# if title?
# robot.messageRoom room, title
# res.end "OK"
# else
# robot.messageRoom room, "Backlog integration error."
# res.end "Error"
catch error
robot.send
res.end "Error"
<自分のスペース>だけ、自分の Backlog のスペースにあわせて変更。
Backlog の設定
次の場所から Webhook を追加します。
プロジェクト設定 > Webhook > Webhook を追加する
- Webhook 名:分かりやすければなんでも OK。to Trello など。
- 説明:空で OK。
- WebHook URL:https://<自分の heroku appのURL>/trello/<自分の Slack の通知させたい部屋>
例:https://XXXXX.herokuapp.com/trello/testtest
slack に通知させなくて良い場合、<自分の Slack の通知させたい部屋> は適当で OK。 - 通知するイベント:「すべて」でOK。(hubot 側で絞るので)
おわり
社外でのやりとりには Backlog、社内で細かいやりとりには Trello、という環境で都度タスクを Trello に手動登録するのは大変なので hubot に頑張ってもらうようにしました。
Due date も登録できたらな~と思ったんですが、Backlog の最近の更新の取得 API に Due date がないようだったので断念。