みなさんこんにちは、ソラコムのソリューションアーキテクト松本(ysk)です。
今回はSORACOMの便利機能の一つ「イベントハンドラー機能」をご紹介します。
まだSORACOMをご利用ではない方はもちろんですが、通信は利用されているけどイベントハンドラーはまだご利用されていない方のどちらにも知っていただきたい便利機能です!
イベントハンドラーとは?
イベントハンドラーとはSORACOMが提供する通信監視・運用自動化の仕組みです。お客様がご利用のSORACOMの通信やデバイスで予め指定しておいたイベントが起きた際にこれまで手作業が必要だった後続の運用を自動化する仕組みになります。
複数のSIMで何度も発生する事柄を手作業で処理してはミスや手戻りの原因になるため出来る限り自動化することが望ましいですが、一般的に自動化には高度な専門知識や導入コストが必要で実現にはハードルがあります。
SORACOMをご利用であれば、利用中に直面するこれまで手運用が必要だった作業をどなたでもブラウザ上の画面操作だけで簡単に自動化いただけます。
SORACOM Airはお客様の利用データ量に応じた従量制の料金モデルであるため特に開発中や使い初めは通信データ量の予測が難しくご利用料金に不安を感じられるかと思います。また、運用フェーズであってもデバイスの予期せぬ動作により大量のデータ通信が発生するリスクを感じられるかもしれません。
実際SORACOMではこのようなお問い合わせをいただく事が多いのですが、通信データ量の確認の為に毎日Webコンソールで当月のデータ通信量を積み上げ計算するのは手間ですし、対象のSIMが多いと運用が回らなくなってしまいます。
イベントハンドラーでは、例えば当月のSIMカードのデータ通信量が1GBを超えたら管理者にメール通知する(そして当月中はSIMを一時利用不可にする)といった設定で通信データ量の管理を自動化し、予期せぬ大容量データ通信が発生しても影響度合いを小さくできます。もちろんデータ量の閾値は柔軟に設定できます。
具体的な設定方法はこちらのドキュメントでご案内しておりますので参照ください。
実際にイベントハンドラーをご利用頂いている方の活用例をご紹介します。
JSONによる設定のインポート方法
イベントハンドラーはSORACOMユーザーコンソールのWeb画面からも設定いただけますが、定義をJSONとしてインポートすることも可能です。今回このブログで紹介している設定は、このインポート機能で取り込むことができるJSONでご紹介しています。
イベントハンドラー設定ページの「インポート」をクリックし、皆さんの環境に合わせた後のJSONを貼っていただいて、最後に「イベント作成」で取り込むことができます。是非ご活用ください。
ここまでご紹介した他にもイベントハンドラーでどのような自動化が出来るかいくつか利用例を交えながらご紹介します。
イベントハンドラー機能の活用例
1. SORACOMアカウント内の全てのSIMの当月データ通信量が1GBを超えた場合Slackに通知
イベントハンドラーでは個別のSIM毎の監視ではなく、SORACOMアカウント内の全てのSIMの合計データ通信量を監視できます。こちらのほうが予期せぬ大容量データ通信による影響度合いのコントロールに有用な場合も多いでしょう。
この場合はルールタイプに「Operator にひもづく全 SIM の月のデータ通信量合計が一定を超えたら実行(Monthly total traffic rule)」を、アクションタイプに「指定の URL にリクエストを送る(Execute web request)」を指定します。設定用JSONは以下の通りになります。先程ご紹介した手順で取り込んでお試しください。(XXXXとなっている2箇所を書き換えてご利用ください)
※別途SlackのIncoming Webhook URLを払いだしてください。
{ "targetOperatorId": "OPXXXXXXXXXX", "name": "TotalDataUsageLimitation1GB", "description": "Limit the amount of communication data to 1GB in one month.", "ruleConfig": { "type": "MonthlyTotalTrafficRule", "properties": { "limitTotalTrafficMegaByte": 1024, "inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_MONTH" } }, "status": "active", "actionConfigList": [ { "type": "ExecuteWebRequestAction", "properties": { "headers": "{\"contentType\":\"application/json; charset=utf-8\"}", "executionDateTimeConst": "IMMEDIATELY", "httpMethod": "POST", "body": "{\"text\":\"Monthly data traffic for operator ID ${operatorId} has exceeded 1GB. (${date})\"}", "contentType": "application/json", "url": "https://hooks.slack.com/services/XXXXXXXXXXXX" } } ] }
2. IoTデバイスが初めてオンラインになったときにメール通知
SIMが取り付けられたデバイスがキッティング後初めてオンラインになった際に任意のメールアドレスに通知できます。デバイスキッティング後に倉庫で眠らせておき、現場に出荷され次第利用開始されるようなシナリオにおいてデバイスの利用開始を関係者ですぐに認識したい場合に有用な設定です。
この場合はルールタイプに「サブスクライバのステータスが変更されたら実行(Subscriber status attribute)」を、アクションタイプに「メールを送る(Send mail)」を指定します。設定用JSONは以下の通りになります。先程ご紹介した手順で取り込んでお試しください。(XXXXとなっている2箇所を書き換えてご利用ください)
メール通知の送信元メールアドレスは以下の通りです。
- グローバルカバレッジ: no-reply@soracom.io
- 日本カバレッジ: no-reply@soracom.jp
{ "targetOperatorId": "OPXXXXXXXXXX", "name": "EmailNotificationWhenSimStatusToActive", "description": "Notify by email when SIM status becomes active.", "ruleConfig": { "type": "SubscriberStatusAttributeRule", "properties": { "targetStatus": "active", "runOnceAmongTarget":"false", "inactiveTimeoutDateConst":"NEVER" } }, "status": "active", "actionConfigList": [ { "type": "SendMailAction", "properties": { "to": "XXXX@XXXXXX.XXX", "title": "Subscriber ${imsi} active now", "message": "Your subscriber ${imsi} is active now. Please check you SIM status on the Soracom web console. This email was sent from a send-only address.", "executionDateTimeConst": "IMMEDIATELY" } } ] }
再評価しない」設定で一度でもイベントが実行されたSIMは後からイベントハンドラーの設定を「再評価しない」以外(例えば「すぐに再評価」)に設定しても再評価されません。これはイベントハンドラーの既知の挙動で、再評価が必要な場合はイベントハンドラーの再作成が必要です。
3. IoTデバイスの利用期限が過ぎたらSIMを一時停止して使えないようにしたうえで外部システムとAPI連携
SORACOM Airは予めSIMの利用期間が決っている場合に「有効期限」を設定しておいて、期間が過ぎたら自動的に通信を一時停止したり解約する機能があります。この有効期限機能とイベントハンドラーを組み合わせてSIM有効期限が過ぎた際に外部システム(例えばCRM)で保持しているIoTデバイスの利用状態を自動的に更新できるようになります。
この場合はルールタイプに「サブスクライバの有効期限が切れたら実行(Subscriber expired)」を、アクションタイプに「指定の URL にリクエストを送る(Execute web request)」を指定します。イベントハンドラーの起動には別途SIMの有効期限の設定が必要ですのでこちらのドキュメントを参照して予めSIMの有効期限設定をしておいてください。
設定用JSONは以下の通りになります。先程ご紹介した手順で取り込んでお試しください。(XXXXとなっている2箇所を書き換えてご利用ください)
{ "targetOperatorId": "OPXXXXXXXXXX", "name": "NotifyExternalSystemWhenSimHasExpired", "description": "Notify external system that SIM has expired.", "ruleConfig": { "type": "SimExpiredRule", "properties": { "inactiveTimeoutDateConst": "IMMEDIATELY" } }, "status": "active", "actionConfigList": [ { "type": "ExecuteWebRequestAction", "properties": { "headers": "{\"contentType\":\"application/json; charset=utf-8\"}", "executionDateTimeConst": "IMMEDIATELY", "httpMethod": "POST", "body": "{\"text\":\"SIM has expired and status has changed from ${oldStatus} to ${newStatus}. (${date})\"}", "contentType": "application/json", "url": "https://XXXXXXX/XXXXX" } } ] }
その他の活用方法について
イベントハンドラーは今回ご紹介した設定以外にも様々な条件で設定できます。詳細はドキュメントをご覧いただければと思いますが、ポイントさえ押えてしまえば設定は簡単です。イベントハンドラーでは大きく分けて下記の3つを設定します。
- どの対象で(単一のSIMなのか、アカウント全体なのか等)
- どんな条件で(通信データ量に応じて、SIMの状態変化に応じて等)
- どんな自動化をするか(メールで通知、API連携等)
イベントハンドラーでは「どの対象で」を「監視対象」、「どんな条件で」を「ルール」、「どんな自動化をするか」を「アクション」と呼びます。
監視対象、ルール、アクションデそれぞれどのような設定が可能かは下記のドキュメントに一覧でまとまっていますのでご参照ください。
上記の他にもご利用に申請が必要なLimited Previewとして3つの機能をご用意しています。
- セッション On/Off トリガー (ルールタイプにSIMがオンラインまたはオフラインになったことを指定できます)
- IMEI ロックアクション イベントハンドラー (アクションタイプにIMEIロック機能を指定できます)
- SORACOM Inventory デバイスRegister/Deregister イベントハンドラー (ルールタイプでデバイスがオンラインまたはオフラインになったことを指定できます)
上記機能をご利用の際にはこちらのURLからお申し込みください。
- セッション On/Off トリガー、IMEI ロックアクション イベントハンドラー LimitedPreview ご利用申請
- Inventory デバイスRegister/Deregister イベントハンドラーご利用申請
まとめ
今回はイベントハンドラー機能での繰り返しの作業を自動化例する方法をご紹介しました。
イベントハンドラー機能自体は無料でご利用いただけますが、ご利用方法によっては料金が発生する場合がありますので詳しくはドキュメントを参照ください。
まだご利用でない方はこの機会に通信データ量の閾値設定と通知だけでもお試しいただけると幸いです。
― ソラコム松本(ysk)