知識のアウトプットをするブログ

なんでもブログに書き記す

【Hubot】寂しかったので、お喋りする相手を作る -下準備編-

f:id:seisyo58:20181101230537j:plain
雑談用のslackチャンネルを作ったけど、誰もいない...
相手がいないなら作ればいいじゃない!
f:id:seisyo58:20181101220157j:plain

Slackとは

Slackとは、チャットツールである。残念ながらSlackマスターではないので、細かい説明はできないが、とにかくすごいチャットツール。
そしてこのSlack、Appという、機能を簡単に追加するための環境が整っている。その中にHubotがある。

Hubotとは

f:id:seisyo58:20181101220853j:plain
要するに、ボットだ。特定のキーワードに反応して、返事をすることが出来る。今回は、これの中身を作っていく。

設定完了!

あれやこれやと設定完了した。

カテゴリ 説明
名前 tanaka58 た(ただの)な(なんでもない)か(会話ロボ)58(私の名seisyo58より)
アイコン キャノン(XLR)端子(オス) 放送部でいつもお世話になっているから(謎)

お喋りするなら、田中さんがいいなと、前々から思ってた。田中さんって、どこにでもいそうだし(失礼)。
あと、アイアンマンにJ.A.R.V.I.SってAIがいて由来が Stands for Just A Rather Very Intelligent Systemの頭文字。
たなかも ただの なんでもない 会話ロボ の頭文字だし、アイアンマンリスペクト。
f:id:seisyo58:20181101221531j:plain
この時点でAPIキーを入手できるので、これを使用して、中身を作っていく。

Slack上での設定が完了したので、次はサーバーの設定をしていく。
今回はサーバーとして、家に転がっていたRaspberry Pi 3 Model Bを用いる。

必要なモノをインストール

Hubotを動かすにはいくつかサーバー(以下ラズパイ)に導入(インストール)する必要がある。

Node.jsとnpm

Node.jsとnpmが必要なので、導入する。導入の手順は割愛。

$ node -v
v7.8.0
$ npm -v
6.0.0
npm経由で導入するものたち
$ npm install -g hubot yo generator-hubot coffee-script

同時に4つのものを導入している。
これでOK!導入完了!

作っていく

hubot用のディレクトリを用意、その中に移動

$ mkdir hubot
$ cd hubot/
Botを生成

yoコマンドで、ボットの生成開始

$ yo hubot
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes
                     _____________________________
                    /                             \
   //\              |      Extracting input for    |
  ////\    _____    |   self-replication process   |
 //////\  /_____\   \                             /
 ======= |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

? Owner <適当なメールアドレス>
? Bot name <ボットの名前>
? Description A simple helpful robot for your Company <なにも入力せずエンター>
? Bot adapter slack
   create bin/hubot
   create bin/hubot.cmd
   create Procfile
   create README.md
   create external-scripts.json
   create hubot-scripts.json
   create .gitignore
   create package.json
   create scripts/example.coffee
   create .editorconfig
                     _____________________________
 _____              /                             \
 \    \             |   Self-replication process   |
 |    |    _____    |          complete...         |
 |__\\|   /_____\   \     Good luck with that.    /
   |//+  |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

+ hubot@3.1.1
+ hubot-pugme@0.1.1
+ hubot-google-images@0.2.7
+ hubot-diagnostics@1.0.0
+ hubot-redis-brain@1.0.0
+ hubot-scripts@2.17.2
+ hubot-heroku-keepalive@1.0.3
+ hubot-maps@0.0.3
+ hubot-rules@1.0.0
+ hubot-google-translate@0.2.1
+ hubot-slack@4.5.5
+ hubot-help@1.0.1
+ hubot-shipit@0.2.1
added 157 packages from 126 contributors in 33.18s
[+] no known vulnerabilities found [268 packages audited]

AA出してくるとか、好き。

起動確認
$ ./bin/hubot

tanaka58> tanaka58 ping
tanaka58> PONG
tanaka58> ping
tanaka58> hei
tanaka58> yahho
tanaka58> tanaka58 hey
tanaka58> tanaka58 ping
tanaka58> PONG

PONG以外は全部私の入力。どうやらまだ、名前+pingの組み合わせしか反応してくれないらしい。が、起動の確認はできた。

Slackに接続

最初に取得したAPIキーをセットして、アダプタでSlackを指定して起動

$ export HUBOT_SLACK_TOKEN=<APIキー>
$ ./bin/hubot --adapter slack

f:id:seisyo58:20181101225557j:plain
やったー!pingと言ったらPONGと返してくれる田中さんが出来上がった!

まだまだこれから

実はこいつ、CoffeeScriptという言語で、スクリプトを書けば、様々な機能を追加できる。それはまた別記事に。