:::: MENU ::::

NotionのSlack Slash commandsを作る

前回Zapierだけで作ったスラッシュコマンドですが、あれやこれや要件を増していったらZapierだけではどうしても辛くなってきました。

Notion用のSlack Slash commandsをZapierだけで作る | いちよんこーど

正直Zapierだけで作るなら合計10stepくらいが限界ですかね、それ以上はメンテが大変。

Slack | Bolt for JavaScript

ということで今回は勉強も兼ねて、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を作れるのはすごくいい。