ボタンデバイスのクリックをトリガにLINE WORKS にメッセージ投稿する。ローコードで
はじめに
SORACOM LTE-M Button for Enterprise は簡単に IoT 通知の仕組みを作れるデバイスです。本記事では SORACOM Flux を使ってButton 押下をトリガに LINE WORKS の Incoming Webhook へメッセージを送信する仕組みを解説します。
全体構成
実現できること
- SORACOM LTE-M Button for Enterprise の押下(シングル/ダブル/ロング)を検知し、指定の LINE WORKS トークルームに通知
- 押下種別・時刻・デバイス ID を含むメッセージの自動送信
- ローコードIoTアプリケーションビルダー SORACOM Flux を使った柔軟なメッセージ構築
事前準備
- SORACOM アカウント
- SORACOM LTE-M Button for Enterpriseのアクティブ化
- LINE WORKS テナント(Incoming Webhook 利用権限)
STEP 1: SORACOM LTE-M Button for Enterprise のセットアップ
1-1. デバイスの登録
ユーザーコンソールに SORACOM LTE-M Button for Enterprise を登録するに従って、ボタンの初期セットアップを行います。
STEP 2: LINE WORKS Incoming Webhook の準備
2-1. Webhook の設定
LINE WORKS で Incoming Webhook を設定します。詳細は LINE WORKS Incoming Webhook を参照してください。
-
アプリディレクトリで「Incoming webhook」を選択
- 「追加する」をクリックしてアプリを追加します。
- 規約を読んでチェックボックスすべてONにして同意した後に「次へ」をクリックします。
- アプリを利用するメンバーを選択して保存します。
- アプリの追加を完了させていきます。
- 通知先のトークルーム(グループ)に botを招待します。
- 招待が完了したら以下のようなメッセージが投稿されます。
- チャンネルIDをクリックします。
- チャンネルIDを控えます。
- 先程の投稿の「Webhookリスト」をクリックします。
- 「追加」をクリックしてwebhookを設定します。
- 控えたチャンネルIDを設定します。
- 発行された「Webhook URL」を控えます。
2-2. 動作確認
curl コマンドでテスト送信して動作確認:
curl -X POST "<取得した Webhook URL>" \
-H "Content-Type: application/json" \
-d '{
"title": "送信テスト",
"body": {
"text": "テスト通知です"
},
"button":
{
"label": "詳細を表示",
"url": "https://soracom.jp"
}
}'
STEP 3: SORACOM Flux の設定
SORACOM Flux では、イベントソースとアクションを UI 上で設定します。コードの記述は不要で、テンプレート変数を使用してデータを参照・加工します。
3-1. アプリ作成
- コンソール左メニュー「SORACOM Flux」-> 「Flux アプリ」
- 「+新しいFluxアプリを作成する」をクリック
- 「最初から作成」をクリック
- アプリ名(例: button to LINEWORKS)と説明(空欄でもOK)を入力
3-2. イベントソース(IoT デバイス)の設定
- 「+チャンネルを作成する」をクリック
- 「IoT デバイス」を選択して次へ
- ボタンデバイスが所属しているグループを選択して「チャネルを作成する」をクリック
3-3. イベントソースからwebhookに接続するアクションの設定
このブロックは後で、設定を調整するために使います。今の時点ではデータを何も処理せずにイベントを後段のアクションに転送します。
- 「アクション」のタブに移って「アクションを追加」
- 「Republish」を選択して「OK」をクリック
- 以下のような設定で「作成する」をクリック
3-4. アクション(HTTP Webhook)の設定
- Studioに戻ると以下のようなフローができています。一番右の「Output Channel」の土管をクリックします。
- 「アクション」のタブから「アクションを追加」
- 「Webhook」を選択して「OK」をクリック
- 以下のような設定で「作成する」をクリック
CONFIG:HTTPメソッド: POST
CONFIG:URL: STEP 2 で取得した LINE WORKS Webhook URL
CONFIG:認証方法:なし
CONFIG:HTTPヘッダ-: Content-Type: application/json
CONFIG:HTTPボディ:
{
"title": "送信テスト",
"body": {
"text": "テスト通知です"
},
"button": {
"label": "詳細を表示",
"url": "https://soracom.jp"
}
}
6. 以下のようなフローができていたら完成
参考: アクション: Webhook
STEP 4: 動作確認
-
SORACOM LTE-M Button for Enterprise を押下
- ボタンをシングルクリック
- オレンジの点滅後に緑の点灯があれば成功。
-
Flux の実行ログ確認
- コンソールの Flux アプリ詳細画面で実行ログを確認
- イベント受信とアクション実行の成功を確認
-
LINE WORKS での受信確認
- 設定したトークルームでメッセージ受信を確認
- 設定したトークルームでメッセージ受信を確認
STEP 5: ボタンの押しかたによって投稿されるメッセージを変更する
STEP 3-4 で設定した静的なテストメッセージを、実際のボタンデータを使った動的なメッセージに変更します。
今回は以下のようなボタンの押し方によってメッセージを分けることを考えます。
-
シングルクリック
メッセージ: 「✅ 作業が完了しました」 -
ダブルクリック
メッセージ: 「⚠️ 緊急対応が必要です」 -
ロングクリック
メッセージ: 「🚨 異常を検知しました」
5-1. SORACOM LTE-M Button for Enterprise のデータフォーマット
基本的なデータ構造
IoTデバイスイベントチャネルのpayloadは以下のようなJSONとなっています。
{
"clickType": 1,
"clickTypeName": "SINGLE",
"batteryLevel": 1,
"binaryParserEnabled": true
}
各フィールドの詳細
フィールド名 | 型 | 説明 | 値の範囲 |
---|---|---|---|
clickType |
数値 | クリックの種類を表す数値 | 1: シングル 2: ダブル 3: ロング |
clickTypeName |
文字列 | クリックの種類を表す文字列 | "SINGLE" "DOUBLE" "LONG" |
batteryLevel |
数値 | バッテリー残量(4段階) | 1.0: 満充電 0.75: 75% 0.5: 50% 0.25: 25% |
binaryParserEnabled |
真偽値 | バイナリパーサーの有効/無効 | true または false |
5-2. Republish アクションの設定変更
クリックタイプごとに別々のrepublishアクションを作成し、それぞれに実行条件(condition)を設定します。
最終形態はこんな感じになります。
「IoT Device Channel」をクリックします。
手順1: シングルクリック用のRepublishアクションを設定
-
「アクション」タブに移動
-
既存のRepublishアクションの「詳細」を選択
-
以下の設定に変更:
-
CONDITION:アクションの実行条件:
payload.clickType == 1
- CONFIG:データを変換する:✅️
-
CONFIG:Content Type:
application/json
- CONFIG:Content:
{ "text": "✅ 作業が完了しました", "batteryLevel": ${payload.batteryLevel} }
- OUTPUT:アクションのアウトプットを別のチャネルに送信する: 有効
- OUTPUT:送信先チャネル: Output Channel
-
CONDITION:アクションの実行条件:
手順2: ダブルクリック用のRepublishアクションを作成
- 同様に「アクションを追加」
- 「Republish」を選択
- 以下の設定で作成:
-
CONDITION:アクションの実行条件:
payload.clickType == 2
- CONFIG:データを変換する:✅️
-
CONFIG:Content Type:
application/json
- CONFIG:Content:
{ "text": "⚠️ 緊急対応が必要です", "batteryLevel": ${payload.batteryLevel} }
- OUTPUT:アクションのアウトプットを別のチャネルに送信する: 有効
- OUTPUT:送信先チャネル: Output Channel
-
CONDITION:アクションの実行条件:
手順3: ロングクリック用のRepublishアクションを作成
- 同様に「アクションを追加」
- 「Republish」を選択
- 以下の設定で作成:
-
CONDITION:アクションの実行条件:
payload.clickType == 3
- CONFIG:データを変換する:✅️
-
CONFIG:Content Type:
application/json
- CONFIG:Content:
{ "text": "🚨 異常を検知しました", "batteryLevel": ${payload.batteryLevel} }
- OUTPUT:アクションのアウトプットを別のチャネルに送信する: 有効
- OUTPUT:送信先チャネル: Output Channel
-
CONDITION:アクションの実行条件:
5-3. Webhook ボディの修正
STEP 3-4 で設定した Webhook アクションを編集し、republishアクションから受け取ったデータを使用するようにHTTPボディを変更します:
- Flux Studio で Webhook アクションをクリック
- 「編集」ボタンをクリック
- HTTPボディを以下のように変更:
{
"title": "🔔 ボタン通知",
"body": {
"text": "${payload.text}\n\nバッテリー: ${payload.batteryLevel * 100}%"
},
"button": {
"label": "コンソールで確認",
"url": "https://console.soracom.io/"
}
}
これで、3つのrepublishアクションのいずれかが条件に応じて実行され、そのペイロードがWebhookアクションに渡されます。
Discussion