Backlog를 Slack과 연결할 때 알림을 받고 싶은 사람에게 Slack의 멘션을 날리는 쉬운 방법
실장 방법은 하기의 2개가 매우, 매우 참고가 된다. heroku로 움직이는 방법도 써 있으므로 거의 이것을 흉내내면 좋다
단지 하나만 위 링크의 스크립트를 사용하면 문제가있다.
그대로 스크립트를 복사하면 발생한 과제
Backlog 사용자 이름과 Slack 사용자 이름이 같다고 티켓을 만든 사람에게 멘션이 날아 버린다.
속에 말하는 멘션 지옥에 빠져 버려, Slack의 통지를 보지 않게 되어 버려 본말 전도인 것이다
문제 캡처
노란색으로 강조되는 곳에서 멘션이 효과가 있습니다.
문제 해결
API 제휴해 Slack에 표시되는 캐릭터 라인에 Slack 유저명이 있으면 자동적으로 멘션이 붙는 특성을 살려,
티켓 업데이트를 알리고 싶은 사람에게 멘션이 날 수 있도록
Webhook 연계할 수 있는 Backlog의 API는 최근 업데이트 받기 하는 것으로, 링크처와 같은 JSON을 Hubot가 받는다
이 위 링크를 확인하고 API의 사양을 보면 notifications에 있는 유저를 통지하고 싶은 사람으로 하면 좋을 것 같다.
Backlog 티켓 업데이트 알림 필드에 멘션을 보내고 싶은 사용자를 지정하고 티켓을 업데이트하면 JSON의 notifications에 알림 대상 사용자가 들어온다
Backlog 티켓 업데이트 위치의 알림 사용자 설정 위치
나중에 설명하는 스크립트를 배포하고 티켓 알림 필드에 사용자 이름을 지정하면 아래 이미지와 같이 연락하고 싶은 사람에게 Slack 위로 멘션이 날아갑니다.
통보하고 싶은 사람에게 멘션 날아가는 캡쳐
대상 Hubot 스크립트
기본은 처음의 링크에 있는 스크립트와 같지만, notifications를 취득해 송신하도록(듯이) 재기록하고 있다
# Description:
# Backlog to Slack
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 = '課題の更新'
else
# 課題関連以外はスルー
return
# 投稿メッセージを整形
url = "#{process.env.BACKLOG_URL}/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}] - "
# ここでチケットを作った作成者のユーザ名がbyの後ろについてしまい、知らせたい人じゃない人にメンションが飛んでしまいがち
# message += "#{body.content.summary} _by #{body.createdUser.name}_\n>>> "
message += "#{body.content.summary}"
# notificatonに通知したい人がいればその名前をメンションしてくれる
if body.notifications.length > 0
message += "_to "
for a in body.notifications
console.log a.user.name
message += "#{a.user.name} "
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
Reference
이 문제에 관하여(Backlog를 Slack과 연결할 때 알림을 받고 싶은 사람에게 Slack의 멘션을 날리는 쉬운 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kon_yu/items/8e06ee1e638000a5c544텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)