github의 멘션을 slack의 멘션으로 변경
10907 단어 슬랙incoming-webhookGitHubmention
코드
Google App Script에 작성하세요.
htps : // sc pt. 오, ぇ. 코 m / 칭찬
function doPost(e) {
const params = JSON.parse(e.postData.getDataAsString())
const paramsBody = params.comment.body
const githubMessageSender = params.sender.login
const githubHookAction = params.action
const githubHookIssueTitle = params.issue.title
const githubHookIssueNumber = params.issue.number
const githubMessageUrl = params.comment.html_url
const slackMessageReceivers = getSlackMessageReceivers(accountsList, paramsBody)
const githubMessageSenderSlackAccount = getGithubMessageSenderSlackAccount(accountsList, githubMessageSender)
const payloadData = {
attachments: [
{
fallback: "hogehoge-text",
color: "#FF66AD",
pretext: slackMessageReceivers,
author_name: ':octocat: github to mention',
title: `${githubHookAction} issue ${githubHookIssueTitle} #${githubHookIssueNumber}`,
title_link: githubMessageUrl,
text: `📩 ${paramsBody}`,
footer: `Sender: @${githubMessageSenderSlackAccount}`,
}
]
}
var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payloadData)
};
UrlFetchApp.fetch('https://hooks.slack.com/services/slack-web-hook-url', options);
}
// アカウントのリストです
const accountsList = [
{
github: 'satou-tarou-hoge',
slack: 'satou-tarou-hoge',
},
{
github: 'yamada-hanako-hoge',
slack: 'yamada-hanako-hoge',
}
]
// githubから送信したメッセージの中からメンションを探して返します
function getSlackMessageReceivers(list, paramsBody) {
let result = ''
list.forEach((account, i) => {
const found = paramsBody.indexOf('@' + account.github + ' ') !== -1
if (found) {
result += `<@${accountsList[i].slack}> `
}
})
return result
}
// githubからメッセージを送信したアカウントに紐づくslackアカウントを返します
function getGithubMessageSenderSlackAccount(list, githubMessageSender) {
const found = list.find(account => {
const result = account.slack === githubMessageSender
return result
})
return found.slack
}
위의 작업이 완료되면 publish에서 Deploy as web app를 선택하고 publish합니다.
publish 후에 표시되는 엔드포인트를 github에서 두드리십시오.
위 코드에서
https://hooks.slack.com/services/slack-web-hook-url
를 자신의 slack의 Incoming webhook으로 설정하십시오.htps : // 아피. scck. 이 m/아 ps 봇을 만들고 Incoming webhook을 설정합니다. 그 url입니다.
Google App Script는 가져오지 않아도 다른 파일을 호출할 수 있어 조금 기분 나빴다.
github이 인수했다? pull panda가 빨리 사용하고 싶다.
slack의 github notify가 mention을 서로 변환해 주면 좋겠는데.
Reference
이 문제에 관하여(github의 멘션을 slack의 멘션으로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kajirikajiri/items/95b138472ba1eac494fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)