Bolt x herokuを試す
目的
slack workflowの拡張ステップの作成を試したい
今回のゴール設定
- workflowでformからタイトルと内容入力すると、サマリが表示される
- お金をかけずに最低限システムを運用できる
- 構築になるべく手間暇をかけない
アプローチ
- 公式フレームワークのBoltを利用してローカル挙動確認
2. Herokuにデプロイして確認※公開できないSlack workspaceなので意味合いが薄いことに気づいた
今後
- bolt2系から3秒以内レスの制約が緩くなったみたいなので、serverlessもできるもわりと現実的なのかも?
- AWSに乗せられるなら載せたい気持ちはある
Hello Bolt App
順当にここから
Slack | Bolt for JavaScript
create Slack App
手順に沿って、新しくSlack App Createする
あとでworkflow builderからも利用したいため、課金済みのworkspaceで作る
token
2種類あって、xoxpはuser、xoxbはbotという使い分け。
大体はbotトークンが多いそうな、権限をばらまかない方が得策だよね。
環境変数
mac全体で指定するのはアレだったのでdotenv入れて.envから読み込ませるようにした
.envはちゃんとignoreしておく
exportまでコピペしててdotenvちゃんと動いてなかった><
Event Subscription
SlackのなんのEventをこのappに飛ばすか設定するみたい
ngrokは入れてなかったのでbrewで突っ込む
# httpsのforwardingのURLをコピーする
$ ngrok http 3000
末尾に/slack/eventsというのをつけて
https://8e8ec2d7.ngrok.io/slack/events
といった具合のURLを設定する
botの追加
適当なpublic channelにbotユーザをinviteして、helloすると返事がきた
interactive
別途設定で有効にする必要があり、設定からinteractiveを有効にする
boltの場合、endpointのURLは同じでよいっぽいので、先ほど同様
https://8e8ec2d7.ngrok.io/slack/events
といった具合のURLを設定する
heroku周り
今気づいたけど、ワークスペースは表出せるものではないのでherokuに上げなくても良いことに気づいた
memo
デプロイ時のポートがランダムな点と、Slackの設定上のURLは変わってしまうため、
その辺の調整は必要、あとはいつも通りheroku使う感じで良いみたい
- seratch/bolt-on-heroku: Bolt example app in TypeScript on Heroku
- Slack の Bolt フレームワークのチュートリアルを Heroku 上で実行する - Qiita