2018/09/28HubotとHerokuを使ってSlackに通知を送るボットを作成してみたチャットツールのSlackが人気になってきましたね。Slackが最近話題なので、移行してみようということになりました。今まで、会社でのチャットツールではチャットワークをずっと使っていました。日本ではかなり有名なチャットツールでけっこうな大企業でも利用されています。2つ目はかなり助かっています。会社以外で関わっているプロジェクトがあったりすると、チャットワークだと同じ画面から参照することになるのですが、Slackだと分けて閲覧できるので。今回は3つの目のWebサービスとの連携ですね。他のWebサービスと連携して、Slackに通知を飛ばしたり、Slackから他のサービスに投稿したりすることができちゃいます。他のサービスでもできたりすることはあるんですが、Slackだとその設定がすごく楽なんですよね。今回はそのテストとしてhubot、herokuを使って他のサービスと連携した簡単なSlackボットを作成してみました。SlackにBOTを作成するの3つです。目次Hubotのインストール&起動HerokuにデプロイするSlackにBOTを作るSlackのBOTをカスタマイズしてみるまとめHubotのインストール&起動Hubotとは、かの有名なGitHubが開発したチャット用のbot開発向けフレームワークです。Slackなどのチャットツールに簡単にBOTを作成することができます。ローカル環境でそのHubotを動かします。Hubotの動作にはredisが必要なので、redisをインストールします。redisインストールが完了したら、起動します。redis-server続いて、CoffeeScriptをインストールします。hubotのスクリプトはCoffeeScriptになっているので。coffee-scriptその後、hubotをインストールします。hubothubot2.9以降は、新規でhubotを作成するときにgenerator-hubotとyoを使うので、こちらをインストールしましょう。generator-hubotこれでインストールは完了です。BOTを作成してみましょう。適当なディレクトリを作成して、新規hubotを作成します。hubot上記コマンドを実行すると、こんな感じのAAがでます。adapterが聞かれますが、テストなので適当でOKです。後から変更することもできます。インストールが完了すると、ディレクトリの中身を見ると以下のようなファイルが入っています。実際Hubotを起動してみましょう。Hubotの起動コマンドは「bin/hubot」です。起動するとhubotのコマンドラインになります。bin/hubothogebot>hubotが実際に起動したら、動作確認をしてみます。ping」と入力してみましょう。PONG無事、PONGと返ってきたらOKです。Herokuにデプロイするhubotの動作が確認できたら、hubotにソースコードをデプロイします。Herokuにアクセスして登録します。Heroku続いて、下記ページからToolbeltをインストールしましょう。ToolbeltHerokuに登録して、Toolbeltをインストールしたら、herokuにログインします。loginログイン後はherokuにアプリケーションを作成します。XXXXXXXXXログインができたら、herokuにコミットします。masterさて、heroku上で実行していくわけですが、クレジットカードの登録をする必要があります。登録しないと実行できないというね...。登録しておきましょう。いつの間にか課金されているパターンが怖いので、先駆者にならってherokuのサーバのサイズを最小にしておきます。web=1ここまで完了したらredisを実行していきます。rediscloudSlackにBOTを作るさて、Slackに反映させていきましょう。hubotとslackを連携させるパッケージをインストールします。--save続いて、Procfileというファイルに下記を記述します。slackここまでやったらあとはSlack側の設定です。Integrations」からhubotを選択します。ユーザーネームを適当に設定します。作成後にTOKENが表示されます。このTOKENをherokuのconfigに追加します。HUBOT_SLACK_TOKEN=XXXXXXXXこれで設定は完了です。試しにテストしてみます。無事レスポンスが返ってきました。SlackのBOTをカスタマイズしてみるせっかくなので、カスタマイズしてみました。ソースは「scripts」フォルダの中に「.coffee」ファイルを作成して記述します。scriptsフォルダの中に入っている.coffeeの内容が全て読み取られます。records[0].images.standard_resolution.url[/coffee]BOTに対して、ラーメンを注文するとラーメンの画像を返してくれるという、かなりどうでもいいBOTを作成してみました。写真の取得はinstagramのAPIを使ってみました。まとめこんな感じで、BOTでいろいろ有効的なことできます。業務的な事例では、Redmineのタスク期限をSlackに通知が送られるようにしたり、Slackから本番環境へのデプロイができたりなど。使ってないので、文法がいまいちわからないんですよねー。この辺はドットインストールをざっと見て書きました。実際にいろいろ作ってみようかなと思います。CAMPがオススメ↓この記事を書いた人ねづ『NEZU.log』運営管理者。Webエンジニアの傍ら、趣味でこのブログを運営。2015年は海外情報(主にアジア圏)と効率のよい生活の情報発信がテーマ。自分なりのSASSの使い方(mixin、extendなど)をメモってみたFacebookページのフィードやアルバムをjavascript(jquery)で取得するVPSサーバとレンタルサーバの違いを比較してまとめてみたこのブログへのコメントコメントを残す返信をキャンセルする。妻と娘(3ヶ月)と3人暮らし。旅」をテーマに"パパ目線の子育て"と"子連れ旅行"についてブログを書いてます。ANA&JAL両方とも上級会員(SFC&JGC)、SPGアメックス所有して、オトクな旅行を追求するのが趣味。本業はメディア系の企業でプロダクト企画の仕事。