文系がslackbotを作ってみたので、手順をまとめる(202008時点)
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とか使って操作する。(ターミナルは使っちゃだめ)
Author And Source
この問題について(文系がslackbotを作ってみたので、手順をまとめる(202008時点)), 我々は、より多くの情報をここで見つけました https://qiita.com/shuredinger_chan/items/9ab642f82264b891e300著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .