LoginSignup
3
1

More than 3 years have passed since last update.

文系がslackbotを作ってみたので、手順をまとめる(202008時点)

Last updated at Posted at 2020-09-25

slackBot作成の流れをまとめる(2020年08月時点)

目的

slackやbotkitは基本敵に英語で書かれているが、
その仕様はここ数年で結構変わっており、過去の日本語の記事が使えない事が多かったのでここにまとめる。
ちゃんと理解するならリファレンスを読もう。
(2020年8月仕様なので、また変わるかもしれない。注意されたし)

使うもの

slack
 ・・・これがないと始まらない。
slackAPI
・・・ここでbotの本体と権限付与とかするページ。
botkit(4.n)
・・・botのアプリ作成を手助けしてくれるスゴいツール。0.n系と仕様がそれなりに違うので注意されたし

基本的なbotの動き

一般的なAPIを使ってる時と動きは同じ。
slack→APPの部分とAPP→slackの部分で大きく切り分けられる。

slack→APP

slack上でEvent(※1)が発生した際にそれを検知し、アプリに既定の電文を送信する。
(※2:method毎に指定された引数を設定してslackに送信することで、外部からslackに干渉することができる)

APP⇒slack

受け取った電文を元に、APP内でmethod(※2)の引数を設定し、slackに電文を送信する。
(※1:slackで何かが動作する際には同時に「Event」というものが発行される)

 slackでbotを作ってみる

作るもの

botにmentionを飛ばしたら「hello]と回答するbot

1.botの皮を作る。

botの本体を作成して、Tokenを発行する。

リンク先が非常にわかりやすいのでこれに沿ってやれば大丈夫。
ただし画面がちょっと古かったり、ツールは古くなってるので使わない方が吉。
Slack の ボット に OAuth で 権限を追加する

【備考】
今回のケースで必要な権限スコープはBot Token Scopeのapp_mentions:readだけです。
権限スコープはTOKENをとったあとでも追加できるので、とりあえず1個だけ作ってやるのがいいと思います。

<追記>2020/11/05
一回目でも普通にインストールボタンを押すとできるようになったらしい。楽ですばらしい。

2.認証情報をコピーする

SlackAPIのBasicInformationタブにあるSIGHING_SECRETと
OAuthのタブにあるBotTokenをコピーする。
(今回はAuthTokenは不要。ユーザー代理で何かさせるときは必要になる)

3.Botkitでアプリ部分を作る

slackからapp_mentionが飛んで来た時の処理を書く。
以下の折り畳み部分をコピペする。
(javascriptで書くことになるので、少し学んで置くと吉)


サンプルプログラム
const { Botkit } = require('botkit');
const { SlackAdapter, SlackEventMiddleware } = require('botbuilder-adapter-slack');

var sSecret = YOUR_SIGNING_SECRET
var bToken = YOUR_BOTTOKEN

const adapter = new SlackAdapter({
    clientSigningSecret: sSecret,
    botToken: bToken,
    redirectUri:""
});

adapter.use(new SlackEventMiddleware());

let controller = new Botkit({
    adapter: adapter
});

controller.on("app_mention", async(bot,message) =>{
    await bot.reply(message, "hello");
});


トークン等の設定部分と最後のcontroller.onの部分以外はすべてコピペでOK。
(備考:基本的にTOKEN情報はプログラム内に記載せずに、環境変数に入れるのが一般的なので、
 運用時には環境変数に入れて実行しよう)

追記メモ:
botkit導入手順
git cloneでgithubからbotkitを持ってくる。
npm install でbotkitをインストールする。
npm install --save botbuilder-adapter-slack でslackbuilderをインストールする。
node xxxx.jsで実行

4.サーバーを建てる

何でもいいのでサーバーを建てる。
短時間で良いのならばngrokで良いと思う。お金かからないし。
参考:ngrokが便利すぎる

APPとslackを繋ぐ

APPとngrokを動かした状態で、slackapiの「Event Subscription」タブにあるRequestURLに
ngrokのアドレス+エンドポイントを記載するとVerifiedと出るのでセーブする。

これでslackで作ったbot宛にメンションをとばせば、helloと返ってくる。

終わり。

自分用メモ

外部鯖で動かすときのメモ
1.npmをインストールする
yum install nodejs
2.gitをインストールする
yum install git
3.githubの手順に沿ってやる
4.firewallのポートの穴をあける。
4.ちゃんとteratermとか使って操作する。(ターミナルは使っちゃだめ)

3
1
0

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
3
1