Help us understand the problem. What is going on with this article?

BacklogでWebhookが追加されたよ!!!Hubot経由でSlackに連携してみた

More than 3 years have passed since last update.

Backlog が Webhook に対応した!

つい昨日、Backlog が Webhook に対応したというお知らせがありました!!!

今まで、Backlog の課題更新をお知らせをSlackで受け取るには、RSS フィードや Backlog API を使う方法があったようです。今回の Webhook を使ってみたら、リアルタイムに通知が飛んでくるので大変便利になりました。

参考にしたもの

Hubot と Slack の連携は、ネットでいろいろ調べたら出来ました。
Backlog API の更新情報を Slack に投げる部分は、いつかやろうと以前からストックしていた Qiita の記事「Backlog API V2 を使って、課題を Slack に連携させる」を大いに参考にしています。

手順

  • Hubot をインストールする
  • Hubot-Slack アダプタのバージョンを確認
  • Hubot に Script を設置
  • Backlog の Webhook を設定

Hubot に Script を設置

以下のコードを、Hubot の Script フォルダに置きます。

backlog-notification.coffee
# Description:
#   Backlog to Slack
#
# Commands:
#   None

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

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

      switch body.type
          when 1
              label = '課題の追加'
          when 2, 3
              # 「更新」と「コメント」は実際は一緒に使うので、一緒に。
              label = '課題の更新'
          else
              # 課題関連以外はスルー
              continue

      # 投稿メッセージを整形
      url = "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}"
      if body.content.comment?.id?
          url += "#comment-#{body.content.comment.id}"

      message = "*Backlog #{label}*\n"
      message += "[#{body.project.projectKey}-#{body.content.key_id}] - "
      message += "#{body.content.summary} _by #{body.createdUser.name}_\n>>> "
      if body.content.comment?.content?
          message += "#{body.content.comment.content}\n"
      message += "#{url}"

      # Slack に投稿
      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 側の設定

Backlog のほうでは、「プロジェクト設定」ページにいくと「Webhook」という項目が増えています。
ここに「https://(Hubotの場所)/yoursecreturl/(つぶやかせたいチャンネル名)」というようなURLを登録すると、動きます。

更新の種類を切り替える番号の部分はBacklog APIの「最近の更新の取得」というところにあります。「課題の更新」と「課題のコメント追加」の番号は別なのですが、実際に使う場面を考えると「コメント付きの更新」が多いので、一緒にしてしまいました。

繰り返しますが、CoffeeScriptについてまったくよくわからず書いてますので、間違ってるところがあったらぜひご指摘ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away