そろそろslackも活用せないかんなぁと思って、いろいろゴニョゴニョやってみて、結構な活用方法やノウハウがネット上に転がってます。
んで、Backlog→Slackへの通知(bot)に関する情報となると、なぜかミニマムな情報しかない。
(課題の追加・編集だけを通知、みたいな?)
http://d.hatena.ne.jp/itog/20150226/1424939686あたりを参考にさせていただき、通知内容を充実させてスクリプトを晒してみる。
課題関連やWiki関連、git関連の通知フォーマットがまったく異なるので、そのフォーマットにあわせてslackに吐き出す部分の追記・修正が主なところ。ご参考になれば。
※HubotやらHerokuについての情報はGoogle先生に聞いてみてください
backlogUrl = 'https://<BacklogのスペースID>.backlog.jp/'
module.exports = (robot) ->
robot.router.post "/<任意の文字列>/:room", (req, res) ->
{ room } = req.params
{ body } = req
try
switch body.type
when 1
msg = "*Backlog [#{body.project.projectKey}-#{body.content.key_id}] #{body.content.summary} _by #{body.createdUser.name}_*\n"
msg += "課題が追加されました\n";
msg += "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}"
msg += ">>> #{body.content.comment.content}\n"
when 2, 3
msg = "*Backlog [#{body.project.projectKey}-#{body.content.key_id}] #{body.content.summary} _by #{body.createdUser.name}_*\n"
msg += "課題が更新されました\n";
msg += "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}#comment-#{body.content.comment.id}"
msg += ">>> #{body.content.comment.content}\n"
when 5
msg = "*Backlog [#{body.project.projectKey}] #{body.content.name} _by #{body.createdUser.name}_*\n"
msg += "Wikiページが登録されました\n";
msg += "#{backlogUrl}wiki/#{body.project.projectKey}/#{body.content.name}\n"
msg += ">>> #{body.content.content}\n"
when 6
msg = "*Backlog [#{body.project.projectKey}] #{body.content.name} _by #{body.createdUser.name}_*\n"
msg += "Wikiページが更新されました\n";
msg += "#{backlogUrl}wiki/#{body.project.projectKey}/#{body.content.name}\n"
msg += ">>> #{body.content.content}\n"
when 8
msg = "*Backlog [#{body.project.projectKey}] #{body.content.dir}#{body.content.name} _by #{body.createdUser.name}_*\n"
msg += "共有ファイルが追加されました\n";
msg += "#{backlogUrl}file/#{body.project.projectKey}#{body.content.dir}#{body.content.name}\n";
when 9
msg = "*Backlog [#{body.project.projectKey}] #{body.content.dir}#{body.content.name} _by #{body.createdUser.name}_*\n"
msg += "共有ファイルが更新されました\n";
msg += "#{backlogUrl}file/#{body.project.projectKey}#{body.content.dir}#{body.content.name}\n";
when 12
ref = body.content.ref.split("/").pop()
msg = "*Backlog [#{body.project.projectKey}] #{body.content.revisions[0].comment} _by #{body.createdUser.name}_*\n"
msg += "GIT リポジトリ#{body.content.repository.name} の #{ref}にプッシュされました\n";
msg += "#{backlogUrl}git/#{body.project.projectKey}/#{body.content.repository.name}/#{body.content.revision_type}/#{body.content.revisions[0].rev}";
when 14
msg = "*Backlog [#{body.project.projectKey}] 課題をまとめて操作 _by #{body.createdUser.name}_*\n"
msg += "課題がまとめて更新されました\n";
msg += ">>> "
for link in body.content.link
msg += "[#{body.project.projectKey}-#{link.key_id}] #{link.title}\n"
msg += "#{backlogUrl}view/#{body.project.projectKey}-#{link.key_id}\n\n"
else
# 上記以外はスルー
return
# Slack に投稿
if msg?
robot.messageRoom room, msg
res.end "OK"
else
robot.messageRoom room, "Backlog integration error."
res.end "Error"
catch error
robot.send
res.end "Error"