⚡
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