LoginSignup
61
61

More than 5 years have passed since last update.

Yeoman で Hubot を作成して Heroku へデプロイし Slack と連携する

Last updated at Posted at 2014-10-30

みんな大好き? Hubot ですが、GitHub チームが作ってる Yeoman の Hubot ジェネレータ があるので、これを元にボットを作成して Heroku へデプロイし、更に Slack と連携してチャット上の発言を監視、までやってみました。

1. 前提

  • 作業している手元の OS は Mac OS X 10.9.5 (Mavericks) です。
    • (なんか怖くて Yosemite にはしていない--;)
  • 手元に Node.js および Yeoman の環境があること。
  • Heroku のアカウントおよびコマンドラインツールがあること。
  • もしかして CoffeeScript を別途インストールする必要があるかも。
    • $ npm install -g coffee-script
    • ただ私の環境だと、無くても Hubot は動いてはいます。

ちなみに Hubot ジェネレータ(genetator-hubot) のバージョンは、現時点で 0.1.4 です。
(なんか更新が早そうなので、上手くいかない場合は GitHub 側で記載されている手順を確認してください。)

2. 環境構築の手順

① Hubot ジェネレータのインストールと起動

  • Node.js の npm コマンドでインストールします。

    $ npm install -g generator-hubot
    
  • 適当なワーク用のディレクトリを作成して、ジェネレータを起動します。

    $ mkdir hoge_dir
    $ cd hoge_dir
    $ yo hubot
    
  • Bot nameDescription を適当にいれ、Bot adapterslack と入力します。

    screen2.jpg

  • 次のようにファイルが展開されます。

    screen10.jpg

    package.json は次のような感じ。Google の画像とか Youtube とかも連携できるのだろうか?

    screen8.jpg

  • ローカルで動作確認します。

    $ cd hoge_dir
    $ bin/hubot
    

    なんか警告が出ますが、よく分らないのでスルーで^^;

    screen1.jpg

    Hubot のプロンプトで hubot ping と打ちます。PONGと返ってくればOK。

    screen6.jpg

② Heroku へのデプロイ

  • まずは Git でコミットします。

    $ cd hoge_dir
    $ git init
    $ git add .
    $ git commit -m "hoge comment"
    
  • Heroku へプッシュします。

    $ heroku create
    $ git push heroku master
    
  • 動作確認します。

    $ heroku open
    

    ブラウザが開いて、次のように表示されればOK。

    screen9 2.jpg

③ Slack 側の設定

  • integration メニューで、Hubot を選択します。

    screen7.jpg

    画面に表示されている HUBOT_SLACK_TOKENHUBOT_SLACK_TEAM は、後で使います。

    Hubot URL に、先程の Heroku の トップURL を入力して保存します。

    screen4.jpg

  • Heroku へ環境変数を追加します。

    $ heroku config:add HUBOT_SLACK_TOKEN=[Slackの画面で表示されたもの]
    $ heroku config:add HUBOT_SLACK_TEAM=[Slackの画面で表示されたもの]
    $ heroku config:add HUBOT_SLACK_BOTNAME=[呼びかける任意のBot名]
    $ heroku config:add HEROKU_URL=[先程の Heroku の トップURL]
    

    ちなみに上記のようにコマンドラインからでなくても、Heroku のダッシュボードから設定してもOKです。

    screen12.jpg

  • 動作確認してみます。今回は、ボット名は hogebot としました。Slack のオープンな CHANNELS で ping してみます。(PRIVATE GROUPS では使えない。)

    hubot_test___Yumemi_Slack 3.png

3. Slack の発言を監視してみる

Hubot で色々できそうなのですが、とりあえず、Slack の発言を監視して、特定の文字列が現れたら反応するようにしてみます。試しに、あいうえお という文字列を監視してみます。

scripts/hoge.coffee
module.exports = (robot) ->

  robot.hear /あいうえお/i, (msg) ->
    msg.send "呼びました?"

scripts ディレクトリに置いた任意のスクリプトファイルが自動的に読み込まれるぽい。

上記のファイルをコミット、Heroku へ反映して、Slack で発言してみます。

hubot_test___Yumemi_Slack 4.png

たったこれだけのソースで、簡単にできました^^

4. ほか

61
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
61