無料利用枠内の heroku でボットを実行しています。Slack でユーザーからメッセージを受信したときにアプリケーションを起動する方法を探しています。
Procfile に Web ワーカーがあります。
web: npm start
また、Web サーバーとボットキットもセットアップします。
var app = express();
var port = process.env.PORT || 3000;
app.listen(port, function (err) {
if (err) throw err;
console.log('Bot up!');
});
var controller = Botkit.slackbot({
debug: false
});
var bot = controller.spawn({
token: botConfig.SLACK_BOT_KEY
}).startRTM();
ボットは通常どおり起動し、30~ 分間非アクティブになるとアイドル状態になります
2016-09-27T18:55:18.013318+00:00 app[web.1]: info: ** API CALL: https://slack.com/api/rtm.start
2016-09-27T18:55:18.027341+00:00 app[web.1]: Bot up!
2016-09-27T18:55:18.253156+00:00 app[web.1]: notice: ** BOT ID: bot ...attempting to connect to RTM!
2016-09-27T18:55:18.298822+00:00 app[web.1]: notice: RTM websocket opened
2016-09-27T18:55:18.346493+00:00 heroku[web.1]: State changed from starting to up
2016-09-27T19:25:42.535535+00:00 heroku[web.1]: Idling
2016-09-27T19:25:42.536182+00:00 heroku[web.1]: State changed from up to down
2016-09-27T19:25:46.877746+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2016-09-27T19:25:48.014988+00:00 heroku[web.1]: Process exited with status 143
ここで、slack でボットにメッセージを送信すると、ボットは応答しなくなり、リクエストを webserver に送信しない限り、アプリケーションは起動しません。
dyno 時間を消費するため、ボットがアイドル状態になるのを防ぎたくありません。ユーザーが Slack 経由でボットにメッセージを送信したときにアプリを起動する方法はありますか?