簡単なSlackボットの作り方

カテゴリ:インターン生ブログ

公開日:2020.04.24 最終更新日:2020.05.07
このエントリーをはてなブックマークに追加

Slackとは

Slack(スラック)とは、チャットができるコミュニケーションツールです。チャットアプリが数多く存在する中で、今回Slackを紹介するのは、ソースコードを表示する機能や他のサービスとの連携、各デバイスへの通知が充実しているからです。開発者に人気なので、是非登録して使ってみましょう!

 

Slackを登録

https://slack.com/intl/ja-jp/

上記リンクからSlackのホームページへ移動し、ワークスペースを作成しましょう。メールアドレスによる認証で比較的簡単に登録できます。ワークスペースというのが共有コミュニティで、その中のチャンネルが共有チャット部屋になります。新しいチャンネルを作る、または既存のチャンネルを検索して参加することもできるので利用してみてください。

Hubotの導入

Hubot(ヒューボット)はGithub社が作ったbotを作成するためのフレームワークです。MITライセンスでオープンソースソフトウェアとして公開されていて、様々なアダプターと組み合わせることで、数多くのチャットツールで利用することができます。

それでは、コンソールに下記のコマンドを入力して、必要なモジュールを一気にインストールします!

yarn global add yo@3.0.0
yarn global add generator-hubot
yarn global add coffeescript@1.12.7

yoはYeoman(ヨーマン)というGoogle社が作成した雛形作成ツールで、genertor-hubotはYeomanを利用したHubotというbotのジェネレーターです。また、CoffeeScriptはJavaScritをより便利に書くために作られた言語の一種で、実行前に内部的にJSへ変換されます。

Hubotを作る

yo hubot

上記コードを実行すると英語のメッセージとともにhubotの作成が開始します。最初の “We’re constantly looking for ways to make yo better !” は改善するために利用者の匿名データを、yoの開発者へ送信して良いかを尋ねるメッセージなのでyesと入力しましょう。

続いて、オーナー名→ボット名→説明書きを入力してください。その後注意が必要なのが、Bot adapter(ボットアダプター)を入力する画面になったら “slack” と入力してEnterを押します。これを入力し忘れるとslackとの連携ができなくなるので注意しましょう!

試しに下記のような簡単なJSファイル(hello.js)を作成しましょう。これはbotがSlack上で “hello>” という文字に反応し、”Hello,@userName” と発言するプログラムです。

‘use strict’;
module.exports = (robot) => {
robot.hear(/hello>/i, (msg) => {
const user_id = msg.message.user.id;
msg.send(Hello, <@${user_id}>);
});
};

Slack上での設定

・Slack https://slack.com/services/new

上記リンクからアクセスし検索欄にHubotと入力して検索してください。そして出てきたHubotをインストールします。Hubotのユーザー名を入力してHubotインテグレーションの追加をクリックします。すると、下記のような文字列が表示されるはずなので、これをどこかに控えておきます。

HUBOT_SLACK_TOKEN=xoxb-16455131522-XXXXXXXXXXXXXXXXXXXX

次にbotを追加したいチャンネルに入り、ヘッダーの右の方にある歯車の設定のボタンをクリックして、”アプリを追加する” を選択します。検索欄で先程のHubotの名前を入力し追加します。

Hubotの起動

コンソールで下記のコードを入力します。xoxb-以降の文字列は先程控えた物を使用します。env というコマンドは、環境変数の設定コマンドで、指定した変数に値を代入した状態で bin/hubot を実行するという意味です。

env HUBOT_SLACK_TOKEN=xoxb-16455131522-XXXXXXXXXXXXXXXXXXXX bin/hubot –adapter slack

[Thu Feb 07 2019 16:56:54 GMT+0900 (GMT+09:00)] INFO hubot-slack adapter v4.6.0
warn: SlackDataStore is deprecated and will be removed in the next major version. See project documentation for a migration guide.
warn: SlackDataStore is deprecated and will be removed in the next major version. See project documentation for a migration guide.
[Thu Feb 07 2019 16:56:55 GMT+0900 (GMT+09:00)] INFO Logged in as @yoshimura-hubot-study in workspace sifue-dev
[Thu Feb 07 2019 16:56:55 GMT+0900 (GMT+09:00)] INFO Connected to Slack RTM
[Thu Feb 07 2019 16:56:55 GMT+0900 (GMT+09:00)] INFO /home/vagrant/workspace/hubot-study/scripts/hello.js is using deprecated documentation syntax
[Thu Feb 07 2019 16:56:55 GMT+0900 (GMT+09:00)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.
Your hubot-scripts.json is empty, so you just need to remove it.
[Thu Feb 07 2019 16:56:55 GMT+0900 (GMT+09:00)] INFO hubot-redis-brain: Using default redis on localhost:6379
[Thu Feb 07 2019 16:56:55 GMT+0900 (GMT+09:00)] ERROR hubot-heroku-keepalive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web.url | cut -d= -f2)

上記のようなコードが表示されれば成功です。

では早速、botを導入したチャンネルで “hello>”と入力してみましょう! “Hello,@userName” と表示されたら実装は完了です!

このHubotを利用することで、あるメッセージに対する自動返信であったり、会話によりプログラムを実行するサービスを作ることも可能です。今、流行りのSlackを是非使いこなしましょう!

一覧へ戻る