backlogの課題が追加&更新された時に、hubotを通じてslackのチャンネルに投稿できるようにしました。
個人通知出来るように、slackAPIのuser.list(https://api.slack.com/methods/users.list/test)を使用し、
backlogから取得した通知相手の名前を元にユーザーIDをslackに投稿したいのですが、
下記の①と②の記述を使用して、①のコメントアウトの「ユーザー名を取得」の部分を元に、②ユーザー名からユーザーIDを投稿する方法ってありますか?
どちらも動作は正常です。
①backlogの課題が更新&追加された時にslackのチャンネルに投稿
# Description: # Backlog to Slack backlogUrl = 'https://backlog.jp/' module.exports = (robot) -> robot.router.post "/slackroom/: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 = '課題の更新' else # 課題関連以外はスルー return # 投稿メッセージを整形 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" # notificatonに通知したい人がいればその名前をメンションしてくれる if body.notifications.length > 0 for a in body.notifications console.log a.user.name console.log a.user.id message += "#{a.user.name} #ユーザー名を取得 message += "\n[#{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}" console.log 'message = ' + message # Slack に投稿 if message? robot.messageRoom room, message # robot.messageRoom room, message res.end "OK" else robot.messageRoom room, "Backlog integration error." res.end "Error" catch error console.log error robot.send
②slackAPI [test 名前] でusers.listから一致する名前のユーザーIDを投稿
request = require('request') module.exports = (robot) -> robot.hear /test (.*)?/, (msg) -> text = msg.match[1] request.get url: "https://slack.com/api/users.list?token=#{process.env.HUBOT_SLACK_TOKEN}" , (err, response, body) -> # Slack APIからメンバーを取得 memberid = (member.id for member in JSON.parse(body).members when member.profile.display_name is text) msg.send "<@#{memberid}>"
あなたの回答
tips
プレビュー