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 がないようだったので断念。