⚡
Slack Boltを試してみる
この記事は個人blogにもアップロードしています。
概要
ChatGPTのAPIをSlackbotを作って試してみたいと思って、先にSlack Boltを試すことになりました。
Boltとは
- SlackにBotを待機させて、チャンネルの特定の文字が入力されたり、メンションが飛んだりするなどのイベントをリッスンして、サーバからSlackの方に操作を加えることができるます。
- 質問という文字を検知し、解答を返す。などができます。
Boltを試してみる
SlackのAppを作る
https://api.slack.com/app で新しくアプリを作成します。
From scratch > appの名前と、使うslackのworkspaceを選択します。
Tokenの設定
Boltで必要なtokenは以下の三つです。
const app = new App({
token: process.env.SLACK_BOT_TOKEN, // ①
signingSecret: process.env.SLACK_SIGNING_SECRET, // ②
socketMode: true,
appToken: process.env.SLACK_APP_TOKEN, // ③
port: 3000,
});
設定していきましょう。番号がついているのは後で利用するため、ちゃんと残します。
- Basic Information > App Credentials > Signing Secret
- copyしておく⇒ ②
- Basic Information > App-Level Tokens > Generate Token and Scopes
-
connections:write
のscopeを追加 - Tokenをcopyしておく ⇒ ③
-
- Basic Information > Display Information
- slack Appの名前やiconを追加する
- OAuth & Permissions > Scopes
- 以下を追加する
chat:write
app_mentions:read
channels:history
channels:history
groups:history
im:history
mpim:history
-
Install App to Workspace
でtokenが表示されるのでcopyしておく ⇒ ①
- 以下を追加する
Event 設定
- Socket Mode
- onにする
- Event Subscription
- onにする
- Subscribe to bot eventsに以下を追加する
-
save change
を押すとreinstall your app
が出るので必ず押す!
簡単に試す
Boltのドキュメントにあるコードをそのまま使ってみます。
Boltをinstall
$ npm install @slack/bolt
app.jsを作成して貼り付ける。
envの情報は上記でコピーしたTokenたちを貼ります。もしくはdotenvを入れてenvファイルからTokenを取得します。
app.js
const { App } = require('@slack/bolt');
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
socketMode: true,
appToken: process.env.SLACK_APP_TOKEN,
// ソケットモードではポートをリッスンしませんが、アプリを OAuth フローに対応させる場合、
// 何らかのポートをリッスンする必要があります
port: process.env.PORT || 3000
});
// "hello" を含むメッセージをリッスンします
app.message('hello', async ({ message, say }) => {
// イベントがトリガーされたチャンネルに say() でメッセージを送信します
await say(`Hey there <@${message.user}>!`);
});
(async () => {
// アプリを起動します
await app.start();
console.log('⚡️ Bolt app is running!');
})();
Boltを立ち上げる
$ node app.js
[INFO] socket-mode:SocketModeClient:0 Going to establish a new connection to Slack ...
⚡️ Bolt app is running!
[INFO] socket-mode:SocketModeClient:0 Now connected to Slack
helloと投稿すると返事が返ってくることがわかります。
次はチャンネルにメンション付きの投稿がある場合、それを拾ってchatGPTと会話をさせるのを試してみます。
Ref
- Bolt tutorial
- https://api.slack.com/lang/ja-jp
-
velog
- Bolt利用準備が詳しく書いてある(韓国語)
Discussion