50
52

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でWebhookが追加されたよ!!!Hubot経由でSlackに連携してみた

Last updated at Posted at 2015-02-20

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についてまったくよくわからず書いてますので、間違ってるところがあったらぜひご指摘ください。

50
52
1

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
50
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?