メインコンテンツまでスキップ

ソケットモードの使用

ソケットモード は、アプリに WebSocket での接続と、そのコネクション経由でのデータ受信を可能とします。コネクションをハンドリングするために @slack/bolt@3.0.0 以上では SokcetModeReceiver というレシーバーが提供されています。ソケットモードを使う前に、アプリの管理画面でソケットモードの機能が有効になっていることを確認しておいてください。

SocketModeReceiver を使う方法は App インスタンスの初期化時にコンストラクターに socketMode: trueappToken: YOUR_APP_TOKEN を渡すだけです。App Level Token は、アプリ管理画面の Basic Information セクションから取得できます。

const { App } = require('@slack/bolt');

const app = new App({
token: process.env.BOT_TOKEN,
socketMode: true,
appToken: process.env.APP_TOKEN,
});

(async () => {
await app.start();
console.log('⚡️ Bolt app started');
})();

ソケットモードレシーバーのカスタム初期化

以下のように @slack/bolt から SocketModeReceiver を import して、カスタムされたインスタンスとして定義することができます。

const { App, SocketModeReceiver } = require('@slack/bolt');

const socketModeReceiver = new SocketModeReceiver({
appToken: process.env.APP_TOKEN,

// OAuth フローの実装を合わせて使う場合は、以下を有効にしてください
// clientId: process.env.CLIENT_ID,
// clientSecret: process.env.CLIENT_SECRET,
// stateSecret: process.env.SLACK_STATE_SECRET,
// scopes: ['channels:read', 'chat:write', 'app_mentions:read', 'channels:manage', 'commands'],
});

const app = new App({
receiver: socketModeReceiver,
// OAuth を使うなら以下の token 指定は不要です
token: process.env.BOT_TOKEN
});

(async () => {
await app.start();
console.log('⚡️ Bolt app started');
})();