0

無料利用枠内の 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 経由でボットにメッセージを送信したときにアプリを起動する方法はありますか?

4

1 に答える 1