Hubotを定期的に動かして発言させる

Hubotでcronでスクリプトを定期的に実行させる様に定期的に動かして例えばサービスのパラメータ等を通知させるのはどうするとよいのか調べたのでその際のメモ。

node-cronというnpmパッケージがあるので、これを利用するとcronと同じ書式でスケジューリングすることができます。

以下、REMPチームで利用しているHubotを毎時0分に利用状況を通知させる様にした際の例(を少し変えたもの)です。

cronJob = require('cron').CronJob
module.exports = (robot) ->
  new cronJob('0 * * * *', () ->
    http = robot.http('http://remp001/****').get()
    http (err, res, body) ->
      if(!err)
        json = JSON.parse body
        robot.send {room:'remp'}, "再生回数: #{json.today_play_count}"
        robot.send {room:'remp'}, "検索回数: #{json.today_search_count}"
   ).start()

流れとしてはソースコードそのままですが

  1. node-cronで毎時0分に稼働させるジョブを作成
  2. REMP に用意しているサービスステータス取得のAPIへGETリクエスト
  3. JSONが返ってくるのでparseする
  4. Hubotに指定したチャットルームにそのパラメータを喋らせる

これだけ。

こうするとで定期的にHubotを動かしてチャットルームにREMPの利用状況を1時間毎に通知できる様になりました。いままで、こういった通知をちょっとしたスクリプトを書いてcronに登録して通知させたりしていたのですが徐々にHubotに寄せて行こうと思います。

併せて読みたい

hideack/remp_hubot · GitHub hideack/remp_hubot · GitHub hideack/remp_hubot · GitHub このエントリーをはてなブックマークに追加