46
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Backlogの課題が追加されたらHubotからTrelloにカードを追加する

Last updated at Posted at 2015-04-27

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

backlog-to-trello.coffee
#
# 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 がないようだったので断念。

参考

46
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?