Slack AppをSocket ModeでつくってHerokuで動かす
created: 2021-01-31
/
updated: 2021-01-31
2021-01-31時点での記録。
ごあいさつ
Slack AppのSocket Modeってやつに興味があって試してみた。
- Intro to Socket Mode | Slack
- Socket to me. Build custom Slack integrations… | by Jim Ray | Slack Platform Blog | Jan, 2021 | Medium
- Slackソケットモードの最も簡単な始め方 - Qiita
ほいで、ちょっと欲張る気持ちがあって、同じように興味があったSlack Workflowに自作のStepを追加するのも試してみた。二兎を追うが二兎とも得るぞ!
- Workflow Builder: Steps from apps | Slack
- A step in the right direction. Introducing a new way to extend your… | by Adam Marinelli | Slack Platform Blog | Medium
- Slackのworkflowでgithubにissueを作成する独自stepを追加する
できあがったものはHerokuで動かせるとぼくにとっては楽なので、開発環境である手元のmacOSと本番環境となるHerokuの両方でいい感じに動くアプリケーションを目指して作業を進めた。調べてみると、Slackが提供しているBoltというJavaScriptのフレームワークを使うのが簡単そうだったので、ついでにBoltの使い方も覚えることにした。三兎を追って三兎を得る作戦。心配。
できあがったサンプル
「GitHubの指定のリポジトリにIssueを立てる」というSlack WorkflowのStepを実装した。
- Workflow Builderに自作のStepが登録されていて選択できる様子
- おつかれシャワーへのおたよりを投稿するフォームを開き、それをGitHubのIssueに起こすというWorkflowの例
- フォームに入力された内容を変数として使いながら、Issueのタイトルと概要文を組み立てることができる
- 実際にWorkflowを起動してフォームに情報を入力してSubmitすると
- このようにIssueが作成される
作業メモ
- Socket Modeは本当に楽
- HerokuもWebSocketに対応している
- なので、特になにも考えなくてもデプロイしたら動く
- WebSockets on Heroku | Heroku Dev Center
- ただ、Herokuで「これはWeb Serverです」と認識されると、起動から60秒以内に環境変数PORTで指定される番号のポートをlistenしないと
R10 - Boot timeoutというエラーが発生してアプリケーションが終了してしまう - 今回のサンプル実装ではProcfileで「これはwebsocketのプロセスですよ〜」と明示してやった
- フレームワークのBoltはよくできていて、ドキュメントも充実しているし、Slackと連携するなにかをつくるときはこれを活用していくと捗ると思う
- Slackとのやりとりの部分はフレームワークにおまかせして、実現したい処理に集中できると感じた





