Slack Bolt で Slack App の開発ができる Docker 環境を作ってみた
この記事はSlack Advent Calendar 2020の20日目の記事です. Slack周りの開発は incoming webhook が多いためそろそろ本腰入れて,Bolt で開発してみようと最近思い始めました.
今回はかなり初歩的な話ですがその Slack Bolt で Slack App の開発ができる Docker 環境を作ってみたので今回はそれについてまとめてみます.
作ったもの
作ったものはこちらです. github.com
「Bolt 入門ガイド」で入力するコマンドを基に作ってみました. slack.dev
まだそこまで作り込めていませんが,少し工夫した点を言うとenv_file:
でプロジェクト直下に作成した..env
を読み込むようにしています.
# docker-compose.yml version: '3' services: bolt: build: . tty: true env_file: - ./.env volumes: - ./:/myapp - node_modules:/myapp/node_modules working_dir: /myapp command: node app.js ports: - 3000:3000 volumes: node_modules:
使い方
※動かすには「Bolt 入門ガイド」にあるイベントの設定まで進め,自分のワークスペースに Slack App を作る必要があります.
また,ngrok
も事前にローカルで起動しておきます.
$ngrok http 3000
起動後に発行されたURLを「Event Subscriptions」のRequest URLに「発行されたURL/slack/events」で登録し,「Save Changes」を押します.
ここをよく,「/slack/events」を忘れて「発行されたURL」のみで入力し,ngrok Request URL Your URL didn't respond with the value of the challenge parameter.
と表示されて混乱していました😅
プロジェクト直下に.env
を作成し,以下の項目を設定します.
# .env # ここに Signing Secret を入れる SLACK_SIGNING_SECRET=12345678910 # ここに Bot User OAuth Access Token を入れる SLACK_BOT_TOKEN=xoxb-☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓
docker-compose build
をすると,package.json
に入っている@slack/bolt
とdotenv
がインストールされます.
$docker-compose build
docker-compose up
またはdocker-compose run --rm --service-ports bolt node app.js
を実行し,Terminalに「⚡️ Bolt app is running!」が表示されれば成功です.
$docker-compose up Creating network "slack-bolt_default" with the default driver Creating slack-bolt_bolt_1 ... done Attaching to slack-bolt_bolt_1 bolt_1 | ⚡️ Bolt app is running!
特定のチャンネルまたは Slack App との DMで hello を含めたメッセージを送ると返事をしてくれます👋.
まとめと所感
今回は Slack Bolt で Slack App の開発ができる Docker 環境を作ってみました.
Slack Bolt を触るのはだいぶ久しぶりでしたが,やはり楽しいですね. 今回はだいぶSlack App入門的な記事になりましたが,これからこのDocker環境をベースに便利で楽しい Slack App を作ってみようと思います.