Beeeat’s log

Beeeat’s log

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

Slack Bolt で Slack App の開発ができる Docker 環境を作ってみた

この記事はSlack Advent Calendar 202020日目の記事です. 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. と表示されて混乱していました😅

f:id:bake0937:20201220212110p:plain

プロジェクト直下に.envを作成し,以下の項目を設定します.

# .env
# ここに Signing Secret を入れる
SLACK_SIGNING_SECRET=12345678910
# ここに Bot User OAuth Access Token を入れる
SLACK_BOT_TOKEN=xoxb-☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓☓

docker-compose buildをすると,package.jsonに入っている@slack/boltdotenvがインストールされます.

$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 を含めたメッセージを送ると返事をしてくれます👋.

f:id:bake0937:20201220211026p:plain

まとめと所感

今回は Slack Bolt で Slack App の開発ができる Docker 環境を作ってみました.

Slack Bolt を触るのはだいぶ久しぶりでしたが,やはり楽しいですね. 今回はだいぶSlack App入門的な記事になりましたが,これからこのDocker環境をベースに便利で楽しい Slack App を作ってみようと思います.