あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

Slack-Eject

これは Eject Advent Calendar 2016 24日目の記事です。

はじめに

(☝ ՞ਊ ՞)☝ういーん
Eject AC 始まってから、なかなか記事書く時間が取れず残念な感じでしたが、24日目にギリギリ間に合いました。
今回はEject工作におけるクライアントとしてSlackのbotを作成したので、それの紹介をしたいと思います。 ネタ的には今年のOSC名古屋で出してました。

きっかけ

Ejectコマンド工作において、一番面倒なのはクライアントの用意です。
外部からアクセスできるようにして、適当にUI作ってetc…
また、工作ごとに作っていては埒があきません。(専用で作った方がいい場合も多々ありますが)
そこで、簡単に楽にを目標にSlackをクライアントを使ったBotを作成してみました。

Slack-Eject

とりあえずソースはこちら↓ github.com

これはSlackでBotに対して特定のワードを打ち込むと反応するというものです。 今回は eject /dev/cdrom というワードに反応するようにしました。
ワードに引っかかったら、子プロセスで実際にejectコマンドを実行するようにしました。 展示用にワードを設定しているので、かなり面倒なワードですが、実際に使う時はもっと短いといいでしょう。

一応上記機能と同様の実装で、デバイスの検索やドライブの開閉状態の確認なども実装しています。

使用言語はnode.jsで、botkitというライブラリを使って作りました。
実装はいたって簡単で、 controller.hears() の第一引数で反応するワードを正規表現で書き、 第二引数で反応するメッセージタイプを設定します。 あとは function(bot, msg) 内で実行したい処理を書いてあげればクライアントの完成です。

ちなみに実行方法は token=BOTのトークン node app.js です。

簡単でしょう?
これでクライアントのことを気にせずにEject工作が捗るぞ〜(☝ ՞ਊ ՞)☝

終わり