Slack+Hubot으로 여러 Bot 사이의 파이프라인 구축
이것이 유용하다면,
1. 開発者がチャンネルで `@hubot app build` とアプリのビルドを実行する
2. アプリBotがビルドを実行後、ビルド完了をチャンネルに通知する
3. Hubotがその通知を受け取り、デプロイBotをチャット経由で実行する
4. デプロイBotがデプロイ完了をチャットに通知する
5. Hubotがその通知を受け取り、 `@channel` を付けてデプロイ完了した旨を通知する
같은 것을 할 수 있게 됩니다.
또, 부차 효과로서 복수의 Bot간의 파이프라인을 구축하는 것으로 각각의 Bot가 느슨하게 결합으로 역할이 명확하게 되어, 코드의 전망도 좋아진다.
그래서 그것을 사용하여 Hubot 측을 어떻게 설정하고 있는지를 소개하는 항목입니다.
다음 예제에서는 "테스트가 떨어진 알림을 받고 committer에 mention을 붙여 알림"이라는 것을 구현합니다.
전제
코드 예
module.exports = (robot) ->
robot.adapter.client?.on? 'raw_message', (msg) ->
return if msg.type isnt 'message' || msg.subtype isnt 'bot_message'
return unless msg.attachments
match = msg.attachments[0].fallback.match(/Failed: (.+?)'s build/)
return if match is null
commit_user = match[1]
channel = robot.adapter.client.getChannelByID msg.channel
# プライベートチャンネルは取得出来ないためundefinedが返される
return if channel is undefined
text = "@#{commit_user} テストが落ちたよー!"
robot.send {room: "##{channel.name}"}, text
이런 식으로 신규 스크립트를 추가하면 움직입니다.
통상의 Outgoing Webhook의 경우는
msg.text
, Attachment 형식의 경우는 msg.attachments
안에 기대하는 텍스트가 들어오므로, 그것들을 정규 표현으로 매치시켜 판정한 후에 임의의 액션을 실행합니다.알림을 받는 채널은 사전에 hubot을 invite해야 합니다.
또, Slack의 사양상 프라이빗 그룹은 채널 ID→채널명의 역방향을 할 수 없기 때문에, Hubot가 프라이빗 그룹내에 있었다고 해도 움직이지 않기 때문에 주의가 필요합니다.
Reference
이 문제에 관하여(Slack+Hubot으로 여러 Bot 사이의 파이프라인 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Vexus2/items/c19422bc3746b851eff9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)