SORACOM LTE-M Button for Enterprise と Make を使ってノーコードでメール送信してみた #SORACOM #soracomug #nocode #withMake

目次

SORACOM Advent Calendar 2022

この記事は SORACOM Advent Calendar 2022 カレンダー223日目の記事です。

qiita.com

今年はカレンダー19日目の記事を投稿しましたが

uchimanajet7.hatenablog.com

もうひとつ試してみたいことがあったことを思い出したので Just Do It でやってみました。
思ったより簡単にできたので、ブログを書く時間ができました。
試してみるのは大事ですね。

あと毎回のお約束ですが、すべての内容は個人で検証したものです。
文中の現時点は2022年12月22日を指しています

SORACOM LTE-M Button for Enterprise

SORACOM LTE-M Button for Enterprise(以下、ボタン)は、ボタンを押したことをクラウドへ通知できます。
この通知をトリガーにしてクラウド側を実装すると、メールを送信したり決まった動作を行ったりできます。
詳細は各リンク先を確認してください。

soracom.jp

users.soracom.io

ボタンには他にもシリーズがあり、利用シーンで選択できます。

users.soracom.io

今回 SORACOM LTE-M Button for Enterprise を選択した理由は
2023年1月10日までキャンペーンが行われており特別価格で割引販売されているからですw

blog.soracom.com

やはり実際に買って試せる方が楽しいですからねー
また、IoTデバイスというとセンシングしてデータを継続的にクラウドに送信するといったイメージがあると思いますが、ボタンは自分でアクションできるデバイスなので個人的に好きなデバイスであるのも理由のひとつです。

Make

Make は Integromat と呼ばれていた iPaaS(Integration Platform as a Service)です。
同様のサービスだと IFTTT や Zapier の方がメジャーかもしれないです。

https://www.make.com/enwww.make.com

ノーコードで複数のサービスをつないで、やりたいことを簡単に実現できます。
Make という名前がWeb検索しづらいのがちょっと困りますがw
公式のドキュメントが充実していますし、UIも直感的なので利用するのには困らないと思います。

ボタンをクリック際にメールを送信する

ボタンをクリックした際にメールを送信したい場合、SORACOMユーザーコンソールに用意されている機能を利用して送信できます。
詳細はリンク先を確認してください。

users.soracom.io

用意された機能なので、ドキュメントの内容に沿って必要な項目も埋めていくだけで簡単にメール送信が実行できます。

ボ タンのクリック種類は

1. SINGLE: シングルクリック
2. DOUBLE: ダブルクリック
3. LONG: 長押し

の3種類になります。
この種類に応じてメールの内容や宛先を切り替えて、メール送信できると便利に使えるのでは?と思ったことがある人がいるはずw

なので、今回は Make を利用して、ボタンのクリック種類に応じた内容や送信先にメールを送信してみようと思います。

Make を準備する

トップページにアクセスして、Freeプランでアカウント登録を行います。

https://www.make.com/en/pricingwww.make.com

Freeプランでも 1,000 / 月 の実行ができますし、今回はボタンがクリックされたら即時実行する使い方なので、定期実行間隔の制限やアクティブにできるシナリオの数など、Freeプランの制限は問題になりませんでした。

プロダクションで利用する場合や、制限が knockout 要件となる場合には、有償プランを検討するか別の方法で実現するなどを検討する必要があります。

Webhooks module を設定する

ボタンから通知を受け取る必要があるので、通知を受け取るためのWebhook URLを払い出します。

https://www.make.com/en/help/tools/webhookswww.make.com

ドキュメントの記載の通り、scenario を追加して Webhooks module を配置し、画面の案内に沿って必要な設定を行っていきます。

以下のようにWebhook の rate limit が設定されていますが、今回は気にしないで大丈夫そうです。

Webhook rate limit

Make can process up to 30 incoming webhook requests per second.
If you send more than 30 requests per second, the system returns an error with status code 429.

ref: https://www.make.com/en/help/tools/webhooks#webhook-rate-limit

URLが払い出されると、受付テストのためにリクエストを受け付け待ちの状態になります。
この状態になったら、Make 側の設定を離れてSORACOMユーザーコンソール側の設定に移ります。

SORACOM ユーザーコンソール で準備する

SORACOM ユーザーコンソールは、ボタンを利用中であればすでにログインできるはずです。
詳細はリンク先を確認してください。

users.soracom.io

Make へボタンのクリック情報を転送するために、SORACOM Beam を利用します。

SORACOM Beam

SORACOM Beam(以下、Beam)は、デバイスからSORACOMに送信されたデータを、任意のサーバーに転送するサービスです。
詳細はリンク先を確認してください。

soracom.jp

今回はボタンから送信されたデータをBeam で転送するために設定が必要です。
以下ドキュメントに設定例がありますので、手順を参考にして設定していきます。

users.soracom.io

ボタンが所属しているSIM グループの設定を編集していきます。

設定はドキュメントに記載がある通り
UDP → HTTP/HTTPS エントリポイント を選択することと
Make 側で発行したWebhook のURLをホスト名とパスに分解して表示されているダイアログに入力するだけで完了です。

ヘッダ操作の設定については、今回は検証のために「署名ヘッダ付与」以外は有効化しました。
合わせて簡易位置測位機能 も有効化して、ボタンから送信できる情報はなるべく送信するように設定しています。

設定が正しく完了している場合、この段階でボタンをクリックすれば Make 側で待ち受けていた Webhooks module がボタンからの通知を受け取ってテスト完了になるかと思います。

ボタンから正しくデータが送信されているかを確認するには、SORACOMユーザーコンソールでSORACOM Harvest Data を利用します。

SORACOM Harvest

SORACOM Harvest(以下、Harvest)は、デバイスから送信されたデータやファイルをSORACOMで収集、蓄積するサービスです。
詳細はリンク先を確認してください。

soracom.jp

Harvest Data を使ってボタンのデータを確認する手順は、以下ドキュメントを参照してください。

users.soracom.io

Harvest Data でデータが確認できれば、ボタンからSORACOMまでは問題なくデータが届いているということになります。

Make でメール送信する

SORACOM側の設定が正しく完了した後は、Make側でメールを送信できるように設定していきます。

Email module を設定する

Make からメールを送信するため Send an Email アクションの設定を行っていきます。

https://www.make.com/en/help/tools/emailwww.make.com

メール自体はMake から直接送信するわけではなく、GmailMicrosoft Outlook などのメールサービスと接続を行って送信します。

https://www.make.com/en/help/tools/email#connecting-email-to-make-935249www.make.com

今回の実行例では Microsoft SMTP/IMAP OAuth を利用しています。
こちらはドキュンと記載の通り、プルダウンメニューから該当の項目を選択すると、Microsoftへのログイン画面がWebブラウザーで表示されます。

このログイン画面に使用したいMicrosoft アカウントでログインすれば、Makeとの接続が完了します。
メール送信に必要な宛先やタイトル、本文を記載して設定を行います。

module 同士を接続する

通常はmodule を作成した際に自動で接続されているはずです。
もし接続されていないようであれば、Webhooks module と Email module を接続してください。
具体的には、module の端子を接続したいmoduleにドラッグすれば接続できます。

これでWebhook があると固定の宛先に、固定の文面でメールが送信されるようになりました。
実際にボタンをクリックしてMake 経由でメールが送信されることを確認してください。

条件によって異なるメールを送信する

ここまでで、Makeを経由したメール送信は、SORACOMユーサーコンソールで利用できるメール送信と同等のことが実現できています。
細かい値とかは置いておいてですがw

ここからは、ボタンのクリックに応じてメールの宛先、タイトル、本文が異なるメールを送信できるようにしていきます。

まず、Webhooks module と Email module が接続されているリンクに Router module を追加します。

Router module を設定する

条件によって分岐を作れる module になるので、このmodule でボタンのクリック種別を条件として module の分岐を作ります。

https://www.make.com/en/help/modules/routerwww.make.com

設定は簡単で、Router module から出ているリンクにあるスパナ アイコン をクリックして条件を入力します。
今回は Webhook で取得しているボタンのデータの中に clickType という値があり、これがクリックの種類によって変化するため、3つのリンクでそれぞれ1つの値とマッチするように条件を設定します。
加えてEmail module が1つしかないので、既存のmodule をコピーするか新規にmodule を追加して、3つのリンクにEmail module が接続されている状態にします。

users.soracom.io

これでボタンのクリック種別で、3つの接続先を呼び出し分られるようになりました。
あとは、それぞれのリンク先のEmail module で、個別の宛先、タイトル、本文を設定すれば完了となります。

ボタンから送られてきているデータを確認する意味もあるので、今回は以下のようなメール設定を行いました。

宛先 example+{{1.clickType}}@example.com
タイトル ボタンが [{{1.clickTypeName}}] クリックされました
本文 ボタンが [{{1.clickTypeName}}] = [{{1.clickType}}] クリックされました。

{{formatDate(now; "YYYY/MM/DD HH:mm:ss"; "Japan")}}

----
・バッテリーレベル:{{(1.batteryLevel * 100)}}%
・簡易位置測位情報:{{ifempty(replace(get(map(1.`__IMTHEADERS__`; "value"; "name"; "x-soracom-geo-position"); 1); "/;/"; ","); emptystring)}}
・SIM ID:{{ifempty(get(map(1.`__IMTHEADERS__`; "value"; "name"; "x-soracom-sim-id"); 1); emptystring)}}
・IMSI:{{ifempty(get(map(1.`__IMTHEADERS__`; "value"; "name"; "x-soracom-imsi"); 1); emptystring)}}
・MSISDN:{{ifempty(get(map(1.`__IMTHEADERS__`; "value"; "name"; "x-soracom-msisdn"); 1); emptystring)}}
・IMEI:{{ifempty(get(map(1.`__IMTHEADERS__`; "value"; "name"; "x-soracom-imei"); 1); emptystring)}}

宛先はクリック種別で別になるように設定しました。
タイトルも同様にクリック種別がわかるように設定しました。
本文は、クリック種別と送信日時、そして送信されてきたデータとBeam にてヘッダーに付加したデータを取り出して表示するように設定しました。

簡易位置測位情報は、Beam で送信する場合は以下のフォーマットとなり緯度・軽度の区切り文字に ; が使われています。

users.soracom.io

Google Map で緯度・軽度で検索する場合の区切り文字は , なので、今回はMake側で置換処理しています。
置換以外にもMakeの組み込み関数を使ってますが、以下のドキュメントを検索すれば詳細に書いてあるので迷わず使えました。

https://www.make.com/en/help/homewww.make.com

これで、ボタンのクリックに対応してメールが出し分られるようになりました。
SORACOMユーザーコンソールのメール送信機能も同時に有効にしている場合は内容を比較してみてください。
SORACOMユーザーコンソールから送信されるメールで使える情報と、Beamでデータを転送してMake から送信される情報に差異があります。
メールに必須な情報があるかどうかを確認して、どちらの方法で送信を検討してください。

users.soracom.io

ボタンのクリックで異なる動作を行う場合

実際にここまで手を動かして設定してみた方は実感してるかもしれませんが、ボタンのクリックで異なる動作を検討する場合、検討しなければならないポイントがあります。

ボタンにはLED表示しかなく、LEDは電池残量やデータ送信結果の表示に使われています。

users.soracom.io

https://soracom.jp/files/products/SORACOM_LTE-M_Button_manual.pdfsoracom.jp

このような仕様だと、ボタン自体でどのタイプのクリックを実行したのかを判別できません。 またボタンをクリックして、データ送信のシーケンスが始まるとボタン側は操作を受け付けないようです。

youtu.be

youtu.be

ボタンをクリックした側が自分でどんな動作をしているのかがわからないため、クリックミスやカバンの中で意図せずクリックされてしまった場合など、メッセージを処理する側か、運用で対応する必要があります。

ボタンがクリックされた」という単純なトリガーとは違い、この辺りを検討して実装する必要があります。

3種類のメール送信が必要なのであれば、ボタンを物理的に3つ用意して対応してしまうのが単純で良いのでは?と個人的には思います。

まとめ

  • メールを送信したい場合は、SORACOMで用意されている機能で実現できる。
  • Make を利用してもメールは送信できた。
  • しかし、SORACOMで用意されたメール送信とMake でのメール送信では、利用できる情報が異なる。
  • SORACOMユーザーコンソールの機能でメール送信する場合は、Tagの情報が付加できる。
  • Beam で転送する場合には Tag の情報は付加できない。
    • Tagの情報が必須となる場合は転送での送信は難しい。
    • 今後のアップデートに期待したい。
  • ボタンのクリック種類によって、メールの内容に変化がつけたい場合は工夫が必要となる。
  • そもそも、そのクリックを押し分けられるかがポイントとなる。
  • 技術的に「できる」と、本番で利用するような運用が「できる」で実装方法が異なるはず。
  • Make については、ノーコードでちょっとしたことを実現したい場合には便利そう。
  • 一方で、いろいろ値を操作したいとなってくると、素直にAWS Lambda みたいな自由度が高く作り込みできる環境の方が楽な感覚があった。
  • Make も設定した状態をJSON ファイルとしてexportできるので、このJSONファイルを管理すればバージョン管理などはできそう。
  • SORACOMとクラウドの連携は最近アップデートされたBeam のSigV4 対応でいろいろできそう

    blog.soracom.com

  • 持ち歩くような用途は問題ないかもしれないが設置の場合は動作温度帯は確認が必要となる。
    • マニュアルには 5 〜 40 °Cの記載がある。
  • ボタンクリック開始から送信が完了するまで、電波状況に依存すると思うが、待つ時間があった。
  • いろいろ試しながら変更したりしていると、この待ち時間が塵も積もれば山となる感があった。
  • ボタンは使い方次第でいろいろできるので、使ってみながら試していくのが楽しい。

以上です。