前回Zapierだけで作ったスラッシュコマンドですが、あれやこれや要件を増していったらZapierだけではどうしても辛くなってきました。
Notion用のSlack Slash commandsをZapierだけで作る | いちよんこーど
正直Zapierだけで作るなら合計10stepくらいが限界ですかね、それ以上はメンテが大変。
ということで今回は勉強も兼ねて、Bolt使ってTypescriptで代替Slack Appを作ってみました。
作成物
14kw/notion-slack-slash-command: This command is used to add an item to a specific Notion Database.
仕様
固定のDatabaseにItemを作成する
/notion (giji|mtg|議事録) {summary}
- 環境変数で指定した議事録用DatabaseにItemを追加する
/notion (inc|ts|障害報告) {summary}
- 環境変数で指定した障害報告用DatabaseにItemを追加する
/notion (day|日報|week|週報) {summary}
- 環境変数で指定した日報・週報用DatabaseにItemを追加する
保存先のDatabaseを登録してItemを作成する
/notion list
- 現在のSlackチャンネルに設定されている呼び出しコマンド名とDatabaseの一覧を表示する
/notion set {command} {databaseId}
- 現在のSlackチャンネルに呼び出しコマンド名と保存先Databaseを登録する
- 設定値は環境変数で指定したDatabaseに保存される
/notion del {command}
- 現在のSlackチャンネルに登録されたコマンド名を削除する
/notion {command} {summary}
- 現在のSlackチャンネルに登録されたコマンド名に対応するDatabaseに新しいItemを作成する
作ってみた感想
一番時間がかかったのがTypescriptの環境構築。
nodejs系は普段使ってないせいで毎回学び直しになるのがきつい。
事前準備で疲れてコードは何も考えずだらだら書いたから汚いな。
serverlessも初めて使ってみたんですが気楽さはSAMと同じくらいですね。
オフラインでも確認できるのでserverless好きな人いるのわかる。
BoltはHubotと比べるとかなり楽。
軽率にSlack Appsを作れるのはすごくいい。