Slack と MQTT ブローカを接続するためのブリッジ
- MQTT メッセージを subscribe し Slack にメッセージを送信する
- Slack のメッセージを監視し MQTT メッセージを publish する
- Node.js 20+
- Slack API のページから Create New App を押す.
- From Scratch を選び,アプリ名を適当に決める.
- Slaqtt を利用するワークスペースを選ぶ.
- OAuth & Permissions から以下の Bot Token Scopes を追加する.
- channels:join
- chat:write
- 同ページから Install to Workspace を押し,権限を確認した後インストールする.
- このリポジトリを clone する.
.env.exampleをコピーし.envとする.- Signing Secret と Bot User OAuth Token を Slack API のページから取得し
.envに書き込む. - MQTT ブローカのアドレスと Subscribe する Topic を
.envに書き込む. - リポジトリのディレクトリに移動する (
cd slaqtt). npm install; npm run build; npm run start:env
メッセージを送信するためには予め Slack app の作成 で作成した app をチャンネルに追加しておく必要がある.
.env に MQTT_SUB_JSON_TOPIC で指定した MQTT Topic で,以下の形式の JSON メッセージを Publish することで,このブリッジはメッセージを送信する.
{
"channel": "<チャンネル名 または チャンネル ID>",
"text": "<メッセージの内容>"
}.env に MQTT_SUB_TEXT_TOPIC で指定した MQTT Topic で,テキストを Publish することで,このブリッジはメッセージを送信する.
送信先のチャンネルは MQTT_SUB_TEXT_TOPIC の設定値の :channel を置換して設定する.
例えば,MQTT_SUB_TEXT_TOPIC=a/topic/to/subscribe/text/:channel の場合,Topic が a/topic/to/subscribe/text/general であるメッセージを Publish することで,ブリッジは general チャンネルにメッセージを送信する.
テキストのエンコーディングは UTF-8 を用いる必要がある.