LoginSignup
6

More than 5 years have passed since last update.

【Node.js】expressとbotkitを使って自分のURLを叩いたらBotがSlackにつぶやくサンプル【SlackBot】

Last updated at Posted at 2017-02-06

はじめに

大学の研究室の課題で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 Configuration』を押下
キャプチャ.PNG

適当な名前を打ち込み『Add bot integration』を押下
キャプチャ2.PNG

トークンをメモしておく
キャプチャ3.PNG

フォルダ名/プロジェクト名/routes/index.jsに
BotKitを利用できるようにするコードを記述する

routes/index.js
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がつぶやくように記述する

routes/index.js
/* 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がつぶやけば成功
キャプチャ4.PNG

今回のシステムの仕組み

以下のような流れになっているので、ルーティングを設定することで、『/hello』や『/bye』などにアクセスがあった時に
違う内容をつぶやくBotなどが作ることができる
※routesディレクトリ以下にファイルをファイルを作成する必要あり
usersというルーティングが既存で行われているので、それを参考するといい

キャプチャ6.PNG

参考サイト

量産型エンジニアの憂鬱|botkit使って定期的につぶやくslackbot作る

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
6