本記事ではSlackbotでJavaScriptを作成する方法について解説しています。

◆Slackbotとは?
Slackbotはインターネット上の操作を自動実行するためのプログラムです。
Slackbotの場合はSlackからBotに指示をすることでプログラムを自動実行できます。ユーザーと同じように会話ができる他、特定の言葉をSlackに入力することでスクリプトの実行を始めとした様々な処理を行うことができるようになります。

◆関連記事
SlackbotをPythonで作成しよう

SlackbotをNode.js+Botkitで作成する

JavaScript(Node.js)でSlackbotを導入する方法はいくつかありますが、今回はBotkitのパッケージを使用して導入する方法を紹介します。

Botkitパッケージのインストール

npmコマンドでBotkitパッケージをインストールします。

$ npm install botkit

Slackbot用のAPIトークンを取得する

SlackよりBotに使う為のAPIトークンを取得します。

◆APIの取得手順
1.ワークスペースのAPPフォルダに移動します。
https://xxxxxxxxx.slack.com/apps

2.サイドメニューの「カテゴリ」から「Bot関連を選択」します。
3.「Hubot」を選択します。
4.「設定の追加」ボタンをクリックします。
5.名前を入力して「Hubotインテグレーションの追加」を押します。
6.「API トークン」に書かれている内容をコピーします。

◆今回作成したBot:ターコイズくん

画像はSlackの「ghost」を使用しています。

◆関連記事
SlackbotのAPIトークンを取得する(動画あり)

ファイルの記述

パッケージにsampleファイル「slack_bot.js」があるのでこちらをコピーして必要な箇所を修正します。

node_modules
┗botkit
__┗examples
____┗slack_bot.js

BotkitのパスとAPIトークンの書き換えが必要です。

◆記述例

◆起動方法
nodeコマンドで起動します。

node slack_bot.js

◆実行結果
Botkitの実行例

応答内容は「controller.hears()」に記述します。
第一引数は反応するメッセージです。
[‘こんにちは’, ‘Hello’] のようにカンマで区切ることで複数のメッセージを指定できます。

第二引数はメッセージに対する応答方法です。メンション(@でターゲットを指定すること)がある場合に応答、メンションがなくても応答、ダイレクトメッセージの時に応答など細かく指定することができます。
カンマ区切りで複数指定可能です。
‘direct_message,direct_mention,mention’

direct_message:ダイレクトメッセージの場合に応答します
direct_mention,mention:メンションされた場合に応答します
ambient:メンションがない場合に応答します

◆「direct_mention」と「mention」の違い
「direct_mention」は先頭でメンションされた場合のみ応答します。
対して「mention」はメッセージ中のどこか(先頭以外)でメンションされていれば応答します。

「direct_mention」の場合
Botkitの実行例

先頭でメンションした場合のみ応答します。

「mention」の場合
mentionの実行例

先頭以外でメンションした場合のみ応答します。

全てのメンションに対して応答したい場合は「direct_mention」と「mention」の両方を指定しましょう。

◆応答方法
応答は「controller.storage.users.get()」の中に記述します。
「bot.reply()」の中にメッセージを記述します。

ちょっと長いので以下のように関数化しておくと良いでしょう。

以上、JavaScriptでSlackbotを作成する手順についてでした。

今回は挨拶を返すだけでしたが、Slackbotを活用することでスクリプトの実行やファイルの内容を読み込んで表示するなど様々な処理が可能です。
是非、試してみてください。

◆オススメ記事
JavaScriptでSlackbotにリアクションをさせよう

◆関連記事
SlackbotをPythonで作成しよう