Hubotで対話(2016年AdventCalendarラスト)

みなさんこんにちは.

先月,三鍵君に代表を引継いでもらいました.元代表のnnnです.

アドベントカレンダーもついに最終日を迎えました.ここまで頑張ってくれた部員たちにはとても感謝しています.そしてブログを読んでくださっている方々,本当にありがとうございます.

最近ロ技研でslackを導入したこともあり,slackを使って何かできないかと思いbotをいくつか作ってみました.

botをつくるにあたって,BotkitとHubotがよく使われるようですが,トップに出てきたHubotのほうを使用しました.

はじめにHubotの紹介,つぎにhubot で”hello world” する手順について説明したいと思います.そしておまけで修造botと会話したスクショを載せます.最後に元代表として言葉を残したいと思います.

1分でわかるHubot

Hubotとはbotを作り動かすためのフレームワークです.

Hubotの良い点は3つ挙げられると思います.

  • slackやTwitterなど様々なチャットツールに接続することができる
  • botの動きを定義するスクリプトをCoffeescriptまたはJavascriptで拡張できる
  • そのスクリプトを他のチャットツールにそのまま使いまわせる

Hubotのアーキテクチャは以下の図の通りです.

TH400_001.png

引用: http://gihyo.jp/dev/serial/01/hubot/0001

Hubotを起動するとRobotが実行されます.Robotはチャットツールからアダプターを介してメッセージを受け取り,スクリプトを実行して再びアダプターを介してチャットツールに出力を返します.

したがって,拡張スクリプトをつくればbotが動きます.

お分かりいただけたでしょうか.

5分でつくるslackbot

プログラミングの定番,”hello world”をしてみましょう.

先に,以下のURLからslackのhubotのAPIトークンを発行しておきます.

https://slack.com/apps/search?q=hubot

発行したら以下のコマンドで環境変数に設定しておきます.

$ export HUBOT_SLACK_TOKEN=APIトークン

Node.js と npm をインストールします.以下のコマンドを入力.

$ sudo yum install epel-release
$ sudo yum install nodejs npm

つづいて,Hubot,coffee-script, yeoman, generator-hubotをインストールします.

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

任意でディレクトリを作成して,botを作成します.

$ mkdir mybot;cd $_
$ yo hubot
                     _____________________________
                    /                             \
   //\              |      Extracting input for    |
  ////\    _____    |   self-replication process   |
 //////\  /_____\   \                             /
 ======= |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|
? Owner user
? Bot name mybot
? Description test
? Bot adapter slack
上のようなHUBOT君が登場して,Owner, Bot nameなどいろいろ聞かれますが,
adapter 以外は適当に答えてもいいようです.
つぎにscriptsディレクトリにある,example.coffeeを以下のように書き換えます.
module.exports = (robot) ->
   robot.respond /hello$/, (msg) ->
     msg.send "world"

最後にmybotディレクトリに戻って,以下のコマンドを実行します.

$ ./bin/hubot --adapter slack

できたら,slackでbotにDMを送ってみましょう.

“hello” と打つと”world”と返してくれると思います.

以上で終わりです.お疲れさまでした.

おまけ

docomoの雑談対話APIと連携させると次のようなこともできます.

2016-12-24.png
なかなかいい感じに対話できました.
ソースコードは以下のものを使わせていただきました.
https://gist.github.com/FromAtom/066215d061eb9837e77e#file-docomo-dialog-api-coffee

おわりに

今年のロ技研アドベントカレンダー企画もこれで無事終了です.

最後まで読んでくださった方々,本当にありがとうございました.部員の皆さんもお疲れさまでした.

今年は部員の数が増えたこともあり,全体的に活気のあるサークルになったと思います.また,F^3RCやかわロボで勝利を収めたり,Googleのハッカソンで優秀賞を取ったりと,勢いづいていると思います.代表をやっていて,後輩が実績を残してくれて本当にありがたく思います.

来年度のロ技研は,今年度よりも多くのロボコンに出場する予定です.

ロボコンに出場する部員含め,皆さんがんばってください!

今後ともロ技研をよろしくお願いします.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中