はじめに
大学の研究室の課題でSlack Botを利用したシステムを開発することになり、WebAPIの作成をしました
今回のサンプルプログラム
https://github.com/Kurowasi/SlackBot_WebAPI
Expressとは
Webアプリケーションを簡単に作るモジュール
BotKit
SlackでのBotを簡単に作るモジュール
手順
Expressを使ってWebアプリケーションを構築する
まずアプリを入れておくディレクトリの作成
$ mkdir hoge
$ cd hoge
$ npm init
expressを使える準備を行う
$ npm install --save express
$ npm install --save express-generator
expressを利用してWebアプリケーションを構築する
$ express -e プロジェクト名
$ cd プロジェクト名
$ npm install
成功したか確認
$ npm start
以下のように出たら成功
> プロジェクト名@0.0.0 start ディレクトリ名
> node ./bin/www
BotKitを使ってSlack Botを作成する
プロジェクト名のディレクトリに移動する(ディレクトリ名/プロジェクト名)
npm install --save botkit
以下のURLにアクセスしてBotを作成する
https://slack.com/apps/manage/A0F7YS25R-bots
適当な名前を打ち込み『Add bot integration』を押下
フォルダ名/プロジェクト名/routes/index.jsに
BotKitを利用できるようにするコードを記述する
var express = require('express');
var router = express.Router();
/**
* 以下のコードを追加する
*/
var Botkit = require('botkit');
var controller = Botkit.slackbot();
var bot = controller.spawn({
token: "メモしておいたトークンを書く"
}).startRTM(function(err, bot, payload){
if (err) {
throw new Error('Could not connect to Slack');
}
});
フォルダ名/プロジェクト名/routes/index.jsに
Botがつぶやくように記述する
/* GET home page. */
router.get('/', function(req, res, next) {
bot.say({
channel: 'general', //つぶやきたいチャンネル
text: 'WebAPI完成', //つぶやきたい内容
username: 'hoge', //つぶやくBot名
icon_url: ''
});
res.render('index', { title: 'Express' });
});
うまくいってるか確認する
サーバを起動する
$ cd 自分で作成したディレクトリ名
$ cd プロジェクト名
$ npm start
以下のように表示されたら成功
> プロジェクト名@0.0.0 start 今いるディレクトリ
> node ./bin/www
info: ** No persistent storage method specified! Data may be lost when process shuts down.
info: ** Setting up custom handlers for processing Slack messages
info: ** API CALL: https://slack.com/api/rtm.start
notice: ** BOT ID: hoge ...attempting to connect to RTM!
notice: RTM websocket opened
ブラウザを開き以下のURLを叩く
http://localhost:3000/
以下のように
generalチャンネルでBotがつぶやけば成功
今回のシステムの仕組み
以下のような流れになっているので、ルーティングを設定することで、『/hello』や『/bye』などにアクセスがあった時に
違う内容をつぶやくBotなどが作ることができる
※routesディレクトリ以下にファイルをファイルを作成する必要あり
usersというルーティングが既存で行われているので、それを参考するといい