Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

大学の研究室の課題で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作る

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした