Slack Bot이 [debug: No handler for tick] 이외 호소하지 않게 되었을 때의 대처 메모
전제
실행 환경
Platform
버전
OS
Windows8.1
Node
v6.3.0
기타
첫 javascript ... 첫 Node.js (변명)
사건
Slack Bot(botkit)이 처음에는 직무를 수행하고 있는데 일정 시간 경과하면
debug: No handler for tick
debug: No handler for tick
debug: No handler for tick
이외의 로그를 토하지 않습니다. (debug: true인 경우)
Slack의 상태도 away와 완전히 직무 포기 ...
구글 선생님, 커뮤니케이션? 하지만 잘 안 된다든가.
그래서 본래는 정상 가동하는 것을 목표로 할지도 모릅니다만, 황치료해 보았습니다.
준비
forever 에서 영속화.
사용하려면 slack_bot.js의 변조가 필요합니다.
//トークンを埋め込むため、環境設定にトークンが設定されているかの判定はコメントアウト
//if (!process.env.token) {
// console.log('Error: Specify token in environment');
// process.exit(1);
//}
(中略)
//トークンを埋め込む
var SLACK_TOKEN = 'botのAPI Token';
var bot = controller.spawn({
// token: process.env.token
token:SLACK_TOKEN
}).startRTM();
준비가 완료되었음을
Bot과 shutdown 대화에서 프로세스를 끊은 후 자동 복귀할지 확인합니다.
이상으로, 준비 완료입니다.
대처
직무 포기 때문에 상태가 away 가 되면 프로세스를 절단하자!
그리고 forever의 영속화에 의한 강제 부활을 해 버리자! 라는 결론에 이르렀습니다.
그래서 node-cron 을 이용했습니다.
var CronJob = require('cron').CronJob;
cron = new CronJob({
//定時刻設定
cronTime: '00 00 * * * 1-5',
onTick: function(){
//users.getPresence を利用した状態確認
bot.api.users.getPresence({},function(err,response){
presence = response["presence"]
if(presence =="away"){
process.exit();
}
})
},
start:true,
timeZone:'Asia/Tokyo'
});
cron.start();
cron 에서 정기적으로 Slack API users.getPresence 를 실행해 상태를 확인해, active 이외의 경우는 프로세스를 절단, 그리고 forever 로의 자동 기동을 기다리는 흐름으로 완료합니다.
bot 상태에 관계없이 Slack API를 사용할 수 있었기 때문에 bot 문제입니까?
Reference
이 문제에 관하여(Slack Bot이 [debug: No handler for tick] 이외 호소하지 않게 되었을 때의 대처 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/feb_acchan/items/857b191798c60fd948a2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Slack Bot(botkit)이 처음에는 직무를 수행하고 있는데 일정 시간 경과하면
debug: No handler for tick
debug: No handler for tick
debug: No handler for tick
이외의 로그를 토하지 않습니다. (debug: true인 경우)
Slack의 상태도 away와 완전히 직무 포기 ...
구글 선생님, 커뮤니케이션? 하지만 잘 안 된다든가.
그래서 본래는 정상 가동하는 것을 목표로 할지도 모릅니다만, 황치료해 보았습니다.
준비
forever 에서 영속화.
사용하려면 slack_bot.js의 변조가 필요합니다.
//トークンを埋め込むため、環境設定にトークンが設定されているかの判定はコメントアウト
//if (!process.env.token) {
// console.log('Error: Specify token in environment');
// process.exit(1);
//}
(中略)
//トークンを埋め込む
var SLACK_TOKEN = 'botのAPI Token';
var bot = controller.spawn({
// token: process.env.token
token:SLACK_TOKEN
}).startRTM();
준비가 완료되었음을
Bot과 shutdown 대화에서 프로세스를 끊은 후 자동 복귀할지 확인합니다.
이상으로, 준비 완료입니다.
대처
직무 포기 때문에 상태가 away 가 되면 프로세스를 절단하자!
그리고 forever의 영속화에 의한 강제 부활을 해 버리자! 라는 결론에 이르렀습니다.
그래서 node-cron 을 이용했습니다.
var CronJob = require('cron').CronJob;
cron = new CronJob({
//定時刻設定
cronTime: '00 00 * * * 1-5',
onTick: function(){
//users.getPresence を利用した状態確認
bot.api.users.getPresence({},function(err,response){
presence = response["presence"]
if(presence =="away"){
process.exit();
}
})
},
start:true,
timeZone:'Asia/Tokyo'
});
cron.start();
cron 에서 정기적으로 Slack API users.getPresence 를 실행해 상태를 확인해, active 이외의 경우는 프로세스를 절단, 그리고 forever 로의 자동 기동을 기다리는 흐름으로 완료합니다.
bot 상태에 관계없이 Slack API를 사용할 수 있었기 때문에 bot 문제입니까?
Reference
이 문제에 관하여(Slack Bot이 [debug: No handler for tick] 이외 호소하지 않게 되었을 때의 대처 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/feb_acchan/items/857b191798c60fd948a2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//トークンを埋め込むため、環境設定にトークンが設定されているかの判定はコメントアウト
//if (!process.env.token) {
// console.log('Error: Specify token in environment');
// process.exit(1);
//}
(中略)
//トークンを埋め込む
var SLACK_TOKEN = 'botのAPI Token';
var bot = controller.spawn({
// token: process.env.token
token:SLACK_TOKEN
}).startRTM();
직무 포기 때문에 상태가 away 가 되면 프로세스를 절단하자!
그리고 forever의 영속화에 의한 강제 부활을 해 버리자! 라는 결론에 이르렀습니다.
그래서 node-cron 을 이용했습니다.
var CronJob = require('cron').CronJob;
cron = new CronJob({
//定時刻設定
cronTime: '00 00 * * * 1-5',
onTick: function(){
//users.getPresence を利用した状態確認
bot.api.users.getPresence({},function(err,response){
presence = response["presence"]
if(presence =="away"){
process.exit();
}
})
},
start:true,
timeZone:'Asia/Tokyo'
});
cron.start();
cron 에서 정기적으로 Slack API users.getPresence 를 실행해 상태를 확인해, active 이외의 경우는 프로세스를 절단, 그리고 forever 로의 자동 기동을 기다리는 흐름으로 완료합니다.
bot 상태에 관계없이 Slack API를 사용할 수 있었기 때문에 bot 문제입니까?
Reference
이 문제에 관하여(Slack Bot이 [debug: No handler for tick] 이외 호소하지 않게 되었을 때의 대처 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/feb_acchan/items/857b191798c60fd948a2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)