github의 멘션을 slack의 멘션으로 변경

이런 일을 할 수 있습니다.


코드



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을 서로 변환해 주면 좋겠는데.

좋은 웹페이지 즐겨찾기