3
0

Soracom LTE-M Buttonを押して、Slackにメッセージを送るのを作ってみた(今後の布石)

Last updated at Posted at 2023-12-19

こちらは SORACOM Advent Calendar 2023 19日目の記事です。

今回もSoracom LTE-M Buttonの話です。
そして、SORACOM UGのカレンダーなのにSORACOM成分薄めです。

前回までのお話

開封の儀まで行なって、その後、SORACOM DiscoveryのナイトイベントでLTまでしたんですが・・・

色々やっていて、連携とかしてなかったので、LT内でハンズオンコンテンツ作るぜー!とぶち上げたこともあり、
まずは、初級ということで、通知をしてみようと思った次第。

通知先どうしようか?

日本だと、通知先として、LINEを選択するケース多いと思うんですが、
グローバル向けって考えた時に・・・どこに送る?ってなりました。
SORACOM UGのメンバーとも話したんですが、とりあえずはSlack使っている人は多そうなので、Slack向けで良いのでは?となりましたので、今回はSlackに向けてメッセージを送ります。

実装

今、自分の環境では、GPSマルチユニットからの情報をSORACOM FunkからAWS Lambdaに送り、そこからSlackのWebhook URLにPostするというのが動いていますので、そちらを流用します。

Node.js v12で作ったものなので、Node.js v20でも動くように変えたりはしました。

Soracom LTE-M Button と SORACOM LTE-M Button for Enterpriseの違い

ボタンからのパラメータはeventの中に入ってきますが、Harvestでもわかりますが、
Soracom LTE-M Button と SORACOM LTE-M Button for Enterpriseで差異があります。

  • Soracom LTE-M Button
{
    "prod_type": 1,
    "f_ack": true,
    "msg_type": "event",
    "seq_number": 65,
    "detect_type": "Single short click",
    "crc8": true,
    "binaryParserEnabled": true
}
  • SORACOM LTE-M Button for Enterprise
{
    "batteryLevel": 0.75,
    "binaryParserEnabled": true,
    "clickType": 1,
    "clickTypeName": "SINGLE",
    "imsi": "123456789012",
    "inside_area": 0,
}

SORACOM LTE-M Button for Enterpriseだと、clickType or clickTypeName を使いますが( clickType が無難ですね)、
Soracom LTE-M Buttonでは、 detect_type になっており、文字列で渡ってきます。

シングルクリック : Single short click
ダブルクリック : Double short click
長押し : Single long click

なので、どのクリックタイプで押されたかは、文字列でチェックすることになりそうです。

もし、Soracom LTE-M Button と SORACOM LTE-M Button for Enterprise で共用の通知を作るとしたら、
パラメータに detect_type があったら、Soracom LTE-M Buttonの形式でチェック、
なかったら or clickType があったら、SORACOM LTE-M Button for Enterpriseの形式でチェック。
となりそうですが、SORACOM Orbitを使って、どちらも共通で使えるパラメータにして渡す・・・とかかな。ちょっとやってみようかなと思います(ああ、久しくOrbitも使っていない)

余談ですが、Soracom LTE-M Buttonはseq_numberを持っているので、押した回数がわかりやすいです。
SORACOM LTE-M Button powered by AWSを銀河系最速で1000回押した人としては、早く押したいものですが、まだ65回とかです。

通知してみた。

通知するとこんな感じです。

_20231219_131329.JPG
現状は、Soracom LTE-M Buttonのみ対応しています。
No Message! となっているのは、SORACOM LTE-M Button for Enterpriseから呼び出した時のものです。

とりあえず公開してます。

通知用のLambda等をAWS CDK v2で構築するための一式を以下で公開しています。

SlackのWebhookのURLはSecret Managerに格納して、Lambda関数内で取得しています。
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/retrieving-secrets_lambda.html

SlackのWebhook URLは
lib/soracom-lte-m-button-handson-stack.ts 内の
<Your Use Slack Webhook Url>
の部分を書き換えてセットしてください。

また、
AWS Parameters and Secrets Lambda Extension のLayerを使っていますので、
Labmdaをデプロイするリージョンと同じリージョンにあるExtension のLayerを使う必要がありますので、
https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-integration-lambda-extensions.html#ps-integration-lambda-extensions-add
を参考に、
<Deploy Region AWS-Parameters-and-Secrets-Lambda-Extension ARN>
を書き換えてください。
※オレゴンリージョンでデプロイしようとして、東京リージョンのLayerのARNをセットしていたダメな人です。

今後

とりあえずざっくりですが、Slack通知できるのはできました。
これをグローバルに向けて、公開できるように早急にドキュメント整理しようと思います。
公開しているものもアップデートしていくと思います。
あ、Amazon Location Service使ったハンズオン資料も整備しないと・・・。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0