Chatworkから翌日の昼に食べられる弁当を予約できるCRUDアプリケーション。 勝どきオフィスに在籍する全ての社員が利用可能です。 node.js + expressで構成され、deamon管理はforeverを利用しています。 一般的なCRUD機能を持っており、管理画面から注文管理ができます。
nodeがChatWorkを監視し、ユーザからの有効なコマンドが見つかればステート遷移します。 定期実行にはnode-cronを使っています。 ChatWorkAPIのAPI制限が100query/5分なので、最大で3秒に1回巡回することができますが、ユーザがChatWorkを通してbotとやり取りする際にクエリを消費するので、余裕を持って7秒に一回実行させています。
また、新しく社員が加入したときの手間を減らすため、深夜帯にルームに自動で社員を追加する処理を行っています。 これらの処理は全て/app.jsに書いています。
- Controller
- /routes/*
- View
- /views/*
- Model
- /model.js
ControllerとViewのフォルダはほぼ固定、Modelは自由に決定できます。 これらの定義は/app.jsで行います。
Amazon Linux AMI release 2014.09 / CentOS 6.4 ~
- ChatWorkの@Bentooルームで有効なコマンド一覧。
- @list
- 明日の弁当メニューを表示します。
- @order 弁当番号
- 弁当を注文します。(例:@order 2)
- @yes
- @orderで弁当を注文した後に注文を確定します。
- @no
- 注文をやり直します。
- @ol
- 自分の注文した弁当を確認します。
- @del 番号
- 自分の注文した弁当を取り消します。
node-cronの起動時間は9:00-20:00です。 注文は前日17:00までに行わなければならないため、17:00を過ぎたコマンド入力には「時間外です」という警告がリプライされます。
以下はインストール済みとします。
node.js(0.10.29) npm(1.3.6) mongo(2.6.7)
まずは/app.jsの51行目,52行目のroom_idとToken変数を@Bentoo用のルームIDとChatWorkのAPIトークンに書き換えます。
var room_id = "---";
var Token = "---";
次にmongoDBにstudyという名前のテーブルを準備します。 違うテーブル名を使いたければ/model.jsを編集します。
$ mongo
MongoDB shell version: 2.6.7
connecting to: test
> use study
> exit
bye
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/study');//←このstudyを書き換える。
設置間もない状況ではtimezone管理用のnode-timeがインストールされていないので用意します。
$ npm install time
インストールできたら起動しましょう。 念のためnpmをアップデートしておきます。
$ npm update
$ cd /var/www/bentoo
$ forever start ./bin/www
foreverが起動したら
http://(HostName or IP Address):3000/
で管理画面の確認ができます。 foreverはコンソール出力をしてくれないので、もしforeverが正常に稼働しているかどうか確認したくなったら以下のコマンドを入力してください。 以下のように出れば正常に稼働しています。
$ forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] SpRf /usr/bin/node bin/www 11837 11839 /home/t_shirai/.forever/SpRf.log 0:4:53:44.134
foreverの使い方についてはnode.js node.jsスクリプトをforeverでデーモン化する。を参考にしてください。
11368 11384 11415 11423 11422 11430 11433 11439 11441 11458 11465