先日、SORACOM GPS マルチユニットのデータをkintoneに登録できるようしました。
次にしたことはLINEへの通知。SORACOM Flux から LINE Messaging API へ Webhook を送信する方法で設定しました。
前回の記事では、GPSマルチユニットからの送信は5分ごとにしています。kintoneに移動履歴は5分ごと蓄積するという設定を生かしつつ、そこにアクションを追加して、30分に一度、家族に現在地を共有するイメージです。
LINE公式アカウントで無料だと月200通という制限もあるとのことですが、30分に一度なら、月数回、数時間の利用想定なら、余裕で200通に収まりそうで好都合です。
今後、類似の設定をするためのメモとして設定内容をまとめておきます。
事前準備
チャネルを作って、Messageing APIを設定する。
Messaging APIは、LINE Developersコンソールだけでは設定できなくて、LINE 公式アカウントを作成する必要がある。画面通りの指示で操作すればOK。
LINE Developers
通知内容
LINE Developers:メッセージを送信する
チャネルアクセストークン
トップ > (対象のプロバイダー) > (対象のチャネル) > Messaging API設定
一番下までスクロールしたところの「チャネルアクセストークン」
あなたのユーザーID
トップ > (対象のプロバイダー) > (対象のチャネル)
下の方にスクロールしたところの「あなたのユーザーID」
SORACOM Flux アプリのアクションの設定
前回作成したFlux アプリに、LINE通知用のアクションを追加する方法で設定します。
CONDITION(アクションの実行条件)
((getUTCMinutes(now()) >= 0 && getUTCMinutes(now()) <= 5) || (getUTCMinutes(now()) >= 30 && getUTCMinutes(now()) <= 35))
ここはうちのGeminiくんが「簡単にできるよ。このコードで!」ってサクッと出してくれたんですが、何度やってもうまくいかず…。適当すぎたらしいので、下記のリファレンスを見つけてきて、一緒に考え直しました。
Home > ドキュメント > SORACOM Flux > アクションリファレンス > アクション、コンディションの記法
CONFIG
- HTTPメソッド
- {POST`
- URL
https://api.line.me/v2/bot/message/push
- HTTPヘッダー
Authorization:Bearer (チャネルアクセストークン)Content-Type:application/json
- HTTPボディ
-
application/jsonを選択。内容はお好みで。
-
{
"to": "あなたのユーザーID",
"messages": [
{
"type": "text",
"text": "【GPSマルチユニット】\n${getUTCYear(addHours(now(), 9))}/${int(getUTCMonth(addHours(now(), 9))/10)}${getUTCMonth(addHours(now(), 9))%10}/${int(getUTCDate(addHours(now(), 9))/10)}${getUTCDate(addHours(now(), 9))%10} ${int(getUTCHours(addHours(now(), 9))/10)}${getUTCHours(addHours(now(), 9))%10}:${int(getUTCMinutes(addHours(now(), 9))/10)}${getUTCMinutes(addHours(now(), 9))%10}\n${payload.temp}℃ ${payload.humi}%\n加速度x,y,z(mG):${payload.x},${payload.y},${payload.z}\n現在地(緯度,経度):${payload.lat},${payload.lon}\n\nGoogleマップで確認:\nhttps://www.google.com/maps/search/?api=1&query=${payload.lat},${payload.lon}"
}
]
}
これで、移動中のこまめな連絡を忘れても心配かけることが減りそうです。
バイクで一人とか、深夜の帰省ひとりドライブとかちょくちょくあって、心配かけてるんですよね。
追記
LINE通知は、緯度経度がnullかどうかでメッセージを変えるようにしました。
5分に一回の送信で、一番上が無条件でkintone行き。下の二つが、通知の時刻が0~5分、30~35分の場合のみ、LINEに送信するアクションです。LINEの二つは、CONDITIONで場合分けして別のアクションにしています。アクション1つで、JSONで出し分けできるのかもしれないけれど、ひとまずこれで。
