LoginSignup
25
22

More than 5 years have passed since last update.

【Hubot】BacklogからHubotを経由してChatworkに課題の操作を通知

Last updated at Posted at 2015-03-20

実現したこと

Backlogで課題を追加、もしくは更新・削除すると・・・

スクリーンショット 2015-03-19 20.36.05.png

という形で、リアルタイムでチャットワークに通知が送られます。
こんな感じでBacklogとチャットツールが連携されれば、メールから課題を辿る必要が無くなるので、ますますメールの存在感が減っていくような気がしました。

具体的な設定に関しては、ほとんどこちらを参考にさせていただいてますー。
BacklogでWebhookが追加されたよ!!!Hubot経由でSlackに連携してみた

準備

  • Backlogでプロジェクトを用意
  • Hubotをサーバにデプロイしておく
  • Chatworkで通知する部屋を用意

Hubot側の設定

適当な名前でスクリプトを作成する

backlog.coffee


backlogUrl = 'https://XXXXX.backlog.jp/'

module.exports = (robot) ->
  robot.router.post "/room/:room", (req, res) ->
    room = req.params.room
    body = req.body

    console.log 'body type = ' + body.type
    console.log 'room = ' + room

    try
      switch body.type
          when 1
              label = '課題が追加'
          when 2, 3
              label = '課題が更新'
          when 4
              label = '課題が削除'
          else
              return


      url = "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}"

      if body.content.comment?.id?
          url += "#comment-#{body.content.comment.id}"

      message = "[info][title]Backlogより[/title]"
      message += "#{body.createdUser.name}さんによって#{label}されました\n"
      message += "[#{body.project.projectKey}-#{body.content.key_id}]"
      message += "#{body.content.summary}\n"

      if body.content.comment?.content?
          message += "#{body.content.comment.content}\n"
      message += "#{url}[/info]"

      console.log 'message = ' + message

      if message?
          robot.messageRoom room, message
          res.end "OK"
      else
          robot.messageRoom room, "Backlog integration error."
          res.end "Error"
    catch error
      robot.send
      res.end "Error"

メッセージの整形のところはチャットワークに合わせて弄ってます。ここに来て、チャットワーク記法が意外に便利なんだと思えてきました。

Backlog側の設定

プロジェクトの「プロジェクト設定」から「Webhook」を選択します。
には以下のような形式で入力します。

http://<Hubotのホスト名>/room/<ChatworkのルームID>

スクリーンショット 2015-03-20 10.49.34.png

保存する前に、「実行」をクリックするとWebhookのテスト送信が可能。

<通知するイベント>でBacklogの何の操作を送信するかを選べるようになっていて、【すべて】に✔️を入れると以下の様なレスポンスボディが送られます。


[
    {
        "id": 3153,
        "project": {
            "id": 92,
            "projectKey": "SUB",
            "name": "サブタスク",
            "chartEnabled": true,
            "subtaskingEnabled": true,
            "textFormattingRule": null,
            "archived": false,
            "displayOrder": 0
        },
        "type": 2,
        "content": {
            "id": 4809,
            "key_id": 121,
            "summary": "コメント",
            "description": "",
            "comment": {
                "id": 7237,
                "content": ""
            },
            "changes": [
                {
                    "field": "milestone",
                    "new_value": "R2014-07-23",
                    "old_value": "",
                    "type": "standard"
                },
                {
                    "field": "status",
                    "new_value": "4",
                    "old_value": "1",
                    "type": "standard"
                }
            ]
        },
        "notifications": [
            {
                "id": 25,
                "alreadyRead": false,
                "reason": 2,
                "user": {
                    "id": 5686,
                    "userId": "takada",
                    "name": "takada",
                    "roleType": 2,
                    "lang": "ja",
                    "mailAddress": "takada@nulab.example"
                }
                "resourceAlreadyRead":false
            },
        ],
        "createdUser": {
            "id": 1,
            "userId": "admin",
            "name": "admin",
            "roleType": 1,
            "lang": "ja",
            "mailAddress": "eguchi@nulab.example"
        },
        "created": "2013-12-27T07:50:44Z"
    },

]

パラメータの「type」も1〜17まであるので、通知したい内容によってうまく表示を変えれますね。

”backlog.coffee”側で「type」によって表示を整形すれば、わかりやすくなると思います。

詳しくは最近の更新の取得を参考にしてください。

25
22
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
25
22