nodejs : 예약 된 Slack bot의 간단한 샘플
샘플로서, 하루의 끝에 당일의 github의 contribution수를 slack에 날리는 bot를 만들었습니다.
htps : // 기주 b. 코 m / 니시 무라 / 다 y - SUMA RY
카츠만으로 설명하고 싶습니다.
준비
Slack에서 bot에 대한 Incoming Webhook을 만듭니다.
htps : // 아피. scck. 코 m / 닌코 민 g ぇ b 호오 ks
게시할 채널을 선택하고 진행하면
Webhook URL
를 얻을 수 있습니다.이것을 복사하여 그대로 등록을 완료합니다.
Commander 넣기
github 사용자 이름과 bot 게시 시간 일정을 프로그램에 전달할 수 있도록,
commander 을 npm install합니다.
이것은 node측으로부터 커멘드 라인의 조작을 용이하게 하는 패키지로,
나중에
--schedule
등의 옵션을 붙여 스크립트를 실행하는 것으로,자유롭게 bot의 게시 시간을 설정할 수 있습니다.
index.js
const program = require('commander')
program
.version('0.1.0')
.option('--github <string>', 'Add github username')
.option(
'--schedule [string]',
'cron pattern, defaults to 20:00 every day',
'00 20 * * *'
)
.parse(process.argv)
이렇게 하면, 예를 들면
node index.js --github 'akira'
라고 하는 커멘드를 실행했을 때, program.github
그리고 akira
를 취할 수 있게 됩니다.node-schedule 넣기
bot 게시 시간을 결정하려면 node-schedule 을 npm install합니다.
index.js
const schedule = require('node-schedule')
const pattern = program.schedule || '00 20 * * *'
const j = schedule.scheduleJob(pattern, () => {
// slackに投稿する処理
})
이전 단계에서
--schedule
옵션에 전달한 패턴대로 slack 알림의 함수를 트리거할 수 있습니다.예를 들어,
00 20 * * *
그러면 매일 20시에 됩니다.* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
슬랙 게시물 처리
방금 얻은
Webhook URL
에 메시지를 POST합니다.Webhook URL
는 그대로 코드에 넣지 말고, 환경 변수로서 등록해 주세요.const request = require('request')
const DEFAULT_PARAMS = {
url: process.env.SLACK_WEB_HOOK_URL, // 環境変数
form: 'payload={text: "default message",username: "test bot",icon_emoji: ":bar_chart:"}',
headers,
json: true
}
request.post(DEFAULT_PARAMS, (error, response, body) => {
if (!error && response.statusCode == 200) {
return console.log(body) // logs 'ok'
}
console.log('error: ' + response)
})
움직이다
node index.js --github 'USER_NAME' --schedule 'SCHEDULE_PATTERN'
우선 이것으로 움직입니다만, 이 스크립트를 계속 실행하고 싶기 때문에, forever 라고 하는 패키지를 사용합니다.
Forever로 영속화
npm install -g forever
로 전역 설치 한 경우 forever index.js --github 'USER_NAME' --schedule 'SCHEDULE_PATTERN'
./node_modules/.bin/forever index.js --github 'USER_NAME' --schedule 'SCHEDULE_PATTERN'
이제 slack bot 스크립트를 계속 실행할 수 있습니다.
요약
Reference
이 문제에 관하여(nodejs : 예약 된 Slack bot의 간단한 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nnishimura/items/26b6e4a185014e583bfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)