会話型の人工無脳を改良してみようとアレコレ調べてみたところ、面白いフレームワークを見つけたので紹介してみます。

HUBOT

HUBOT

GitHub社がMITライセンスで公開しているNode.js製フレームワークです。様々なチャットツールに対応しており、拡張も比較的簡単に行えます。

Node.js製のアプリケーションになるので”heroku”への公開がデフォルトになっていますが、ローカル環境でも実行可能です。

今回はMacのローカル環境で試した後Raspberry Piで実行してみました。

連携させるチャットアプリは、アカウントだけ作ったものの使いみちもなく放置していたSlackを利用しました。

インストール

思ったより試されている方が多く情報が豊富にあるのでそれ程迷わずに導入出来ます。

Node.jsはインストール済みとして始めます。(Raspberry Piでv4.0.0以降のNode.jsをインストールするには Raspberry Piに最新版Node.jsをダウンロード この方法が簡単だと思います)

1
$ sudo npm install -g hubot hubot-slack yo generator-hubot coffee-script

私の環境では sudo からのインストールで上手くいきました。

1
2
3
$ cd work
$ mkdir samuell9000
$ bin/hubot

ディレクトリを作り実行コマンドでこんなロボットが出てきたら

インストール成功です。

1
2
3
4
5
? Owner pon_dad
? Bot name samuell9000
? Description Super Cool Bot
? Bot adapter (campfire) slackgot back false
? Bot adapter slack

対話型の質問に答えます。Bot adapter は後で変更も出来ますがここでslackを指定することも出来ます。

1
$ bin/hubot

でサーバーが起動します。

1
2
samuell9000> samuell9000 ping
samuell9000> PONG

コマンドラインでBotと会話が出来る様になりました。

SlackでHUBOTを登録する

Slackのチームページにて Apps&integrations>Hubot>Configureを選択し、HUBOT_SLACK_TOKEN= を確認します。

トークンを指定してアプリを起動すれば、

1
2
$ HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx
$./bin/hubot --adapter slack

Slack側のHubotがオンラインになります。

※ トークンを都度入力しない様にsh ファイルに実行権限を与えると良い様です。

で、こんな感じ

会話部分は、Hubotのscript フォルダにモジュールとして記述すれば指定した通りに返事をしてくれます。

単語辞書を作ってもう少し会話らしくしたいのですがとりあえず3パターンのみ登録してみました。

hello.coffee

1
2
3
4
5
6
7
8
9
10
module.exports = (robot) ->
robot.hear /hey siri/i, (msg) ->
msg.send "Mother fucker."
console.log('say:Mother fucker.');
robot.respond /Le Big Mac/i, (msg) ->
msg.send "Le Big Mac!"
console.log('say:Le Big Mac!');
robot.hear /what/i, (msg) ->
msg.send "Ezekiel 25:17.The path of the righteous man is beset on all sides .And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy my brothers. And you will know my name is the Lord when I lay my vengeance upon thee."
console.log('say:Ezekiel 25:17.');

Macのブラウザからだとこんな感じ。

iPhoneアプリからも気の利いた返事をしてくれます。

まとめ

とりあえずSlackを使って会話することが出来ました。

Raspberry Piを利用する場合には、実行スクリプトを記述することも出来る様です。(HubotとSlackを使ってRaspberry Piにエアコンのスイッチを入れさせる。みたいな事も出来る様です)

もう少し色々試してみたいですね。では。

参考にさせていただきました

Raspberry Pi 自作Slackボットを作ろう~その2~ HubotのインストールとSlack連携(Herokuは使わない)- たぷん日記

HubotでSlackのボットを作成する- SEEDS BLOG