🔔

ボタンデバイスのクリックをトリガにLINE WORKS にメッセージ投稿する。ローコードで

に公開

はじめに

SORACOM LTE-M Button for Enterprise は簡単に IoT 通知の仕組みを作れるデバイスです。本記事では SORACOM Flux を使ってButton 押下をトリガに LINE WORKS の Incoming Webhook へメッセージを送信する仕組みを解説します。

全体構成

alt text

実現できること

  • SORACOM LTE-M Button for Enterprise の押下(シングル/ダブル/ロング)を検知し、指定の LINE WORKS トークルームに通知
  • 押下種別・時刻・デバイス ID を含むメッセージの自動送信
  • ローコードIoTアプリケーションビルダー SORACOM Flux を使った柔軟なメッセージ構築

事前準備

STEP 1: SORACOM LTE-M Button for Enterprise のセットアップ

1-1. デバイスの登録

ユーザーコンソールに SORACOM LTE-M Button for Enterprise を登録するに従って、ボタンの初期セットアップを行います。
https://users.soracom.io/ja-jp/guides/soracom-lte-m-button-series/lte-m-button-enterprise/register/

STEP 2: LINE WORKS Incoming Webhook の準備

2-1. Webhook の設定

LINE WORKS で Incoming Webhook を設定します。詳細は LINE WORKS Incoming Webhook を参照してください。
https://line-works.com/appdirectory/incoming-webhook/

  1. アプリディレクトリで「Incoming webhook」を選択
    alt text
  2. 「追加する」をクリックしてアプリを追加します。
    alt text
  3. 規約を読んでチェックボックスすべてONにして同意した後に「次へ」をクリックします。
    alt text
  4. アプリを利用するメンバーを選択して保存します。
    alt text
  5. アプリの追加を完了させていきます。
    alt text
    alt text
  6. 通知先のトークルーム(グループ)に botを招待します。
    alt text
    alt text
  7. 招待が完了したら以下のようなメッセージが投稿されます。
    alt text
  8. チャンネルIDをクリックします。
    alt text
  9. チャンネルIDを控えます。
    alt text
  10. 先程の投稿の「Webhookリスト」をクリックします。
    alt text
  11. 「追加」をクリックしてwebhookを設定します。
    alt text
  12. 控えたチャンネルIDを設定します。
    alt text
  13. 発行された「Webhook URL」を控えます。
    alt text

2-2. 動作確認

curl コマンドでテスト送信して動作確認:

curl -X POST "<取得した Webhook URL>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "送信テスト",
    "body": {
      "text": "テスト通知です"
    },
    "button":
      {
        "label": "詳細を表示",
        "url": "https://soracom.jp"
      }
  }'

alt text

STEP 3: SORACOM Flux の設定

SORACOM Flux では、イベントソースとアクションを UI 上で設定します。コードの記述は不要で、テンプレート変数を使用してデータを参照・加工します。

3-1. アプリ作成

  1. コンソール左メニュー「SORACOM Flux」-> 「Flux アプリ」
    alt text
  2. 「+新しいFluxアプリを作成する」をクリック
    alt text
  3. 「最初から作成」をクリック
    alt text
  4. アプリ名(例: button to LINEWORKS)と説明(空欄でもOK)を入力
    alt text

3-2. イベントソース(IoT デバイス)の設定

  1. 「+チャンネルを作成する」をクリック
    alt text
  2. 「IoT デバイス」を選択して次へ
    alt text
  3. ボタンデバイスが所属しているグループを選択して「チャネルを作成する」をクリック
    alt text

参考: イベントソース: IoT デバイス

3-3. イベントソースからwebhookに接続するアクションの設定

このブロックは後で、設定を調整するために使います。今の時点ではデータを何も処理せずにイベントを後段のアクションに転送します。

  1. 「アクション」のタブに移って「アクションを追加」
    alt text
  2. 「Republish」を選択して「OK」をクリック
    alt text
  3. 以下のような設定で「作成する」をクリック
    alt text

3-4. アクション(HTTP Webhook)の設定

  1. Studioに戻ると以下のようなフローができています。一番右の「Output Channel」の土管をクリックします。
    alt text
  2. 「アクション」のタブから「アクションを追加」
    alt text
  3. 「Webhook」を選択して「OK」をクリック
    alt text
  4. 以下のような設定で「作成する」をクリック
    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"
  }
}

alt text
6. 以下のようなフローができていたら完成
alt text

参考: アクション: Webhook

STEP 4: 動作確認

  1. SORACOM LTE-M Button for Enterprise を押下

    • ボタンをシングルクリック
    • オレンジの点滅後に緑の点灯があれば成功。
  2. Flux の実行ログ確認

    • コンソールの Flux アプリ詳細画面で実行ログを確認
    • イベント受信とアクション実行の成功を確認
      alt text
  3. LINE WORKS での受信確認

    • 設定したトークルームでメッセージ受信を確認
      alt text

STEP 5: ボタンの押しかたによって投稿されるメッセージを変更する

STEP 3-4 で設定した静的なテストメッセージを、実際のボタンデータを使った動的なメッセージに変更します。
今回は以下のようなボタンの押し方によってメッセージを分けることを考えます。

  1. シングルクリック
    メッセージ: 「✅ 作業が完了しました」

  2. ダブルクリック
    メッセージ: 「⚠️ 緊急対応が必要です」

  3. ロングクリック
    メッセージ: 「🚨 異常を検知しました」

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)を設定します。
最終形態はこんな感じになります。
alt text

「IoT Device Channel」をクリックします。
alt text

手順1: シングルクリック用のRepublishアクションを設定

  1. 「アクション」タブに移動

  2. 既存のRepublishアクションの「詳細」を選択
    alt text

  3. 以下の設定に変更:

    • CONDITION:アクションの実行条件: payload.clickType == 1
    • CONFIG:データを変換する:✅️
    • CONFIG:Content Type: application/json
    • CONFIG:Content:
    {
      "text": "✅ 作業が完了しました",
      "batteryLevel": ${payload.batteryLevel}
    }
    
    • OUTPUT:アクションのアウトプットを別のチャネルに送信する: 有効
    • OUTPUT:送信先チャネル: Output Channel

    alt text

手順2: ダブルクリック用のRepublishアクションを作成

  1. 同様に「アクションを追加」
  2. 「Republish」を選択
  3. 以下の設定で作成:
    • CONDITION:アクションの実行条件: payload.clickType == 2
    • CONFIG:データを変換する:✅️
    • CONFIG:Content Type: application/json
    • CONFIG:Content:
    {
      "text": "⚠️ 緊急対応が必要です",
      "batteryLevel": ${payload.batteryLevel}
    }
    
    • OUTPUT:アクションのアウトプットを別のチャネルに送信する: 有効
    • OUTPUT:送信先チャネル: Output Channel

手順3: ロングクリック用のRepublishアクションを作成

  1. 同様に「アクションを追加」
  2. 「Republish」を選択
  3. 以下の設定で作成:
    • CONDITION:アクションの実行条件: payload.clickType == 3
    • CONFIG:データを変換する:✅️
    • CONFIG:Content Type: application/json
    • CONFIG:Content:
    {
      "text": "🚨 異常を検知しました",
      "batteryLevel": ${payload.batteryLevel}
    }
    
    • OUTPUT:アクションのアウトプットを別のチャネルに送信する: 有効
    • OUTPUT:送信先チャネル: Output Channel

5-3. Webhook ボディの修正

STEP 3-4 で設定した Webhook アクションを編集し、republishアクションから受け取ったデータを使用するようにHTTPボディを変更します:

  1. Flux Studio で Webhook アクションをクリック
  2. 「編集」ボタンをクリック
  3. HTTPボディを以下のように変更:
{
  "title": "🔔 ボタン通知",
  "body": {
    "text": "${payload.text}\n\nバッテリー: ${payload.batteryLevel * 100}%"
  },
  "button": {
    "label": "コンソールで確認",
    "url": "https://console.soracom.io/"
  }
}

これで、3つのrepublishアクションのいずれかが条件に応じて実行され、そのペイロードがWebhookアクションに渡されます。
alt text

GitHubで編集を提案

Discussion