CentOS + hubot で Slack に指定時刻に自動発言する
最近 Slack を始めた。最初は Rocket.Chat や Mattermost などを自前で作ろうとしていたが(その過程はブログで書いた)うまくいかなかったので、素直に Slack を使うことにした。
もともと家族との連絡用で使う程度なので、Slack はリマインダーとして使うつもりだった。すなわち、ゴミの日や今日の予定、天気などを教えてくれる、その程度でよかった。実はそういうのは、以下のサイト等を参考に簡単に Slack に実装できる。
Slack Bot:毎朝Googleカレンダーの予定を通知してくる秘書ねこBotの作り方 | デザインメモ 2.0
https://designmemo.jp/creative/bot-googlecalendar-slack.html
Slack に RSS フィードを追加する – Slack
https://get.slack.help/hc/ja/articles/218688467-Slack-に-RSS-フィードを追加する
【GAS】気象庁のサイトから今日の天気を取得してSlackへ流す – Qiita
https://qiita.com/ShishidoToru/items/0ba8f71a2d99a96ca233
「Slack」の便利な使い方。毎日自動で天気予報を通知する方法。【my Things活用】
https://rough-log.com/666
その他、定時つぶやきは Google Apps Script で実現でき、Raspberry Pi の motionEye で動体検知した際も curl コマンドで Slack へ通知できるようになった。
こういった方法はサーバーレスで実現できるのはいいんだけど、もっと自分でカスタマイズができるようにしたかった。特に、Google Apps Script を使ったつぶやきは、ピンポイントで投稿時間をしていできない。だから、自分でサーバーを立てて、bot を作ることにした。そのために、お名前.com の VPS 上の CentOS を利用する。
***
お名前.com の VPS 上の CentOS に hubot をインストールし、Slack へ連携させたことを書いた。
お名前.com VPS に hubot をインストール – with a Christian Wife
https://wacw.cf/2018/02/10/installing-hubot-on-vps/
次は、hubot で指定時刻に Slack で自動発言させてみよう。
(1)node-cron をインストールする。
$ npm install cron --save
(2)/[作成した bot ]/scripts に、例えば cron.coffee というスクリプトファイルを作成し、以下のように記述する。
cronJob = require('cron').CronJob
module.exports = (robot) ->
cronjob = new cronJob('0 0 12 * * 1-5', () =>
envelope = room: "[チャンネル名]"
robot.send envelope, "平日の12時です。"
)
cronjob.start()
あるいは以下のように記述することもできる。
cronJob = require('cron').CronJob
module.exports = (robot) ->
send = (channel, msg) ->
robot.send {room: channel}, msg
new cronJob('0 0 22 * * *', () ->
send '#[チャンネル名]', "22:00 です。"
).start()
new cronJob('0 00 13 * * *', () ->
send '#[チャンネル名]', "13:00 です。"
).start()
(3)hubot 実行用のシェルスクリプト(hoge.sh)を再実行すれば、自動発言ができるようになるはずだ。
私は pm2 で hubot をデーモン化しているので、pm2 で hoge.sh を再起動すればいい。
$ pm2 restart ./hoge.sh
なお、実行中の pm2 のリストは以下のコマンドで確認できる。
$ pm2 list
参考:
hubotでcron風に特定の時間に処理を実行させる方法 – Qiita
https://qiita.com/kon_yu/items/ff884d81f9c1db9b574b
hubotで指定した時間になったら発言するスクリプト – 猫のプロトコル
http://protocol.nekono.tokyo/2017/08/10/hubotで指定した時間になったら発言するスクリプト/
Recent Posts
Archives