Soracom

Users

ドキュメント

API を使って設定する

当ガイドでは、API を使用したイベントハンドラーの設定方法を説明します。

設定方法 

イベントハンドラーは、ユーザーコンソールだけでなく API でも設定できます。具体的には /event_handlers に対する POST(Create Event Handler) で設定をします。 soracom-cli で作成する場合には、soracom event-handlers create --body @{JSONファイルのパス} となります。

JSON の構造は以下のとおりです。target, ruleConfig, actionConfigList[] がイベントハンドラの設定に必要な要素です。各要素についてはこの後の項目で詳しく解説します。

{
  "handlerId": "ハンドラーのID 更新時に使用",

  //targetImsi,targetOperatorId,targetGroupのいずれかをセットします
  "targetImsi": "IMSI番号",
  "targetGroupId": "グループID",
  "targetSimId": "SIM ID",
  "targetOperatorId": "OperatorId",

  "name": "表示名",
  "description": "ハンドラーの詳細",
  "ruleConfig": {
    "type": "ルールのタイプ",
    "properties": { "key": "value" }
  },
  "actionConfigList": [
    {
      "type": "アクションのタイプ",
      "properties": { "key": "value" }
    }
  ]
}

具体的には、例えばユーザーコンソールの監視設定から「データ通信量が月間 1GB を超えたら通信速度を制限する」という設定を投入し SORACOM CLIsoracom event-handlers list コマンドで確認すると以下のような設定が入っていることが確認できます。

{
  "handlerId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "targetImsi": null,
  "targetGroupId": null,
  "targetSimId": null,
  "targetOperatorId": "OP0000000000",
  "name": "Prefixed event handler",
  "description": null,
  "ruleConfig": {
    "type": "MonthlyTrafficRule",
    "properties": {
      "inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_MONTH",
      "limitTotalTrafficMegaByte": "1000"
    }
  },
  "status": "active",
  "actionConfigList": [
    {
      "type": "ChangeSpeedClassAction",
      "properties": {
        "speedClass": "s1.minimum",
        "executionDateTimeConst": "IMMEDIATELY"
      }
    },
    {
      "type": "ChangeSpeedClassAction",
      "properties": {
        "speedClass": "s1.standard",
        "executionDateTimeConst": "BEGINNING_OF_NEXT_MONTH"
      }
    },
    {
      "type": "SendMailToOperatorAction",
      "properties": {
        "executionDateTimeConst": "IMMEDIATELY",
        "message": "対象SIM ${imsi} \n\nSIMの月次通信量が1000MiBに到達したので通信速度が制限されました",
        "title": "速度制限のお知らせ"
      }
    },
    {
      "type": "SendMailToOperatorAction",
      "properties": {
        "executionDateTimeConst": "BEGINNING_OF_NEXT_MONTH",
        "message": "対象SIM ${imsi} \n\n速度制限期間が終わったので、速度が元に戻りました",
        "title": "速度制限解除のお知らせ"
      }
    }
  ]
}

各パラメータについて、これ以降で説明します。

target 

イベントハンドラーの実行対象を設定するための項目です。以下のいずれかを指定してください。

  • targetImsi (IMSI)
  • targetGroupId (グループ ID)
  • targetSimId (SIM ID)
  • targetOperatorId (オペレータ ID)

SIM ID については こちら をご確認ください。

複数のルール (例えば IMSI 単位と OperatorId 全体) が同時に条件を満たした場合、デフォルトでは両方のアクションが実行されます。 ただし SIM 詳細画面の監視タブより、グループや全体の IoT SIM に対してのアクションを無効にできます。

ruleConfig 

actionConfigList[] で指定されたアクションを実行するかどうかを判定するルールを設定する項目です。 例えば「月の通信量が XX MiB を越したらアクションを実行」というようなルールを設定することで、指定のアクションを実行できます。

{
  "ruleConfig": {
    "type": "ルールのタイプ",
    "properties": { "key": "value" }
  }
}

どのルールを使用するかは、type 属性で指定します。また各ルールには、共通パラメータとして inactiveTimeoutDateConst を設定できます。これは、ルール適用時に、このルールを再評価させない期間の指定となります。 例えばその月で XX MiB 使ったらアクションを実行する場合は、BEGINNING_OF_NEXT_MONTH を指定しておくと、一度ルールにマッチしたあとは翌月まではルールを評価対象から外すことができます。

type 一覧 

type説明
SubscriberDailyTrafficRuleサブスクライバーの日のデータ通信量が一定を超えたらアクションを実行するルール
SubscriberMonthlyTrafficRuleサブスクライバーの月のデータ通信量が一定を超えたらアクションを実行するルール
SubscriberCumulativeTrafficRuleサブスクライバーの利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール
SubscriberStatusAttributeRuleサブスクライバーのステータスが変更されたらアクションを実行するルール
SubscriberSpeedClassAttributeRuleサブスクライバーの速度クラスが変更されたらアクションを実行するルール
SubscriberFirstTrafficRule当ルールを設定後、サブスクライバーの通信量が初めて記録されたら実行するルール
SubscriberExpiredRuleサブスクライバーの有効期限が切れた時にアクションを実行するルール
SimDailyTotalTrafficRuleIoT SIM (SIM ID) の日のデータ通信量が一定を超えたらアクションを実行するルール
SimMonthlyTotalTrafficRuleIoT SIM (SIM ID) の月のデータ通信量が一定を超えたらアクションを実行するルール
SimCumulativeTotalTrafficRuleIoT SIM (SIM ID) の利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール
SimStatusAttributeRuleIoT SIM (SIM ID) のステータスが変更されたらアクションを実行するルール
SimSpeedClassAttributeRuleIoT SIM (SIM ID) の速度クラスが変更されたらアクションを実行するルール
SimExpiredRuleIoT SIM (SIM ID) の有効期限が切れた時にアクションを実行するルール
SimSubscriptionStatusRuleサブスクリプションの追加を行った場合に OTA の状況によってアクションを実行するルール
DailyTotalTrafficRuleOperator にひもづく全 IoT SIM の日のデータ通信量合計が一定を超えたらアクションを実行するルール
MonthlyTotalTrafficRuleOperator にひもづく全 IoT SIM の月のデータ通信量合計が一定を超えたらアクションを実行するルール

各 type で共通した properties 

properties説明
inactiveTimeoutDateConstどのルールでも設定を行う必須プロパティ。ルールが実行された後、再度評価されるタイミングの指定。
inactiveTimeoutOffsetMinutes任意のプロパティ。inactiveTimeoutDateConst で設定した時間との差分を指定します (単位: 分)。inactiveTimeoutDateConst から指定時間 (分) の経過後に再評価を実行します。
runOnceAmongTargettrue or false を指定します。true を指定した場合、監視対象に含まれるいずれかのサブスクライバーのルールが適用された後、次に再評価を行うタイミングまでは監視対象に含まれる別のサブスクライバーに対してルールの評価をしません。再評価のタイミング をあわせてご確認ください。

inactiveTimeoutDateConst が取りうる値は以下のとおりです。

説明
IMMEDIATELYすぐに再実行
BEGINNING_OF_NEXT_MONTH翌月初 (協定世界時 UTC を基準)
BEGINNING_OF_NEXT_DAY翌日開始時 (協定世界時 UTC を基準)
AFTER_ONE_DAY1 日後
NEVER実行/再評価を行わない

ruleConfig の type に応じた properties の設定 

type: SubscriberDailyTrafficRule 

サブスクライバーの日のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteこのデータ量 (MiB) を超えたらアクションを実行する
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SubscriberMonthlyTrafficRule 

サブスクライバーの月のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量 (MiB) がこの量を超えたらアクションを実行する
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SubscriberCumulativeTrafficRule 

サブスクライバーの利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByte累積データ量 (MiB) がこの値を超えたらアクションを実行する
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SubscriberStatusAttributeRule 

サブスクライバーのステータスが変更されたらアクションを実行するルール

properties説明
sourceStatusIoT SIM がこのステータスから変更された場合にアクションを実行する。例えば sourceStatusactive に設定しておくと、IoT SIM が active から他のステータスに変更された時に指定のアクションを実行できます。
targetStatusIoT SIM がこのステータスになった場合にアクションを実行する。例えば targetStatusinactive に設定しておくと、IoT SIM が inactive になった時に指定のアクションを実行できます。

sourceStatustargetStatus が取りうる値は以下のとおりです。

sourceStatus と targetStatus の値説明
null(未設定)すべてのステータス
readyready ステータス
activeactive ステータス
inactiveinactive ステータス
standbystandby ステータス
suspendedsuspended ステータス
terminatedterminated ステータス

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}変更後のステータス
${oldStatus}変更前のステータス

ステータスの詳細は リファレンス: SIM のステータス一覧 もご確認ください。

type: SubscriberSpeedClassAttributeRule 

サブスクライバーの速度クラスが変更されたらアクションを実行するルール

properties説明
targetSpeedClassIoT SIM がこの速度クラスになった場合にアクションを実行する。例えば targetSpeedClasss1.minimum に設定しておくと、IoT SIM が s1.minimum の速度クラスになった時にアクションを実行できます。

targetSpeedClass が取りうる値は以下のとおりです。

targetStatus の値説明
null(未設定)すべての速度クラス
s1.minimum速度クラス s1.minimum
s1.slow速度クラス s1.slow
s1.standard速度クラス s1.standard
s1.fast速度クラス s1.fast
s1.4xfast速度クラス s1.4xfast

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newSpeedClass}変更後の速度クラス
${oldSpeedClass}変更前の速度クラス

type: SubscriberFirstTrafficRule 

当ルールを設定後、サブスクライバーの通信量が初めて記録されたら実行するルール

このルールで指定できる properties とサポートされる変数はありません。また、このルールでは inactiveTimeoutDateConstNEVER のみ指定できます。

type: SubscriberExpiredRule 

サブスクライバーの有効期限が切れた時にアクションを実行するルール

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}有効期限が切れた後のステータス
${oldStatus}有効期限が切れる前のステータス

type: SimDailyTotalTrafficRule 

IoT SIM (SIM ID) の日のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteこのデータ量 (MiB) を超えたらアクションを実行する
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SimMonthlyTotalTrafficRule 

IoT SIM (SIM ID) の月のデータ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量 (MiB) がこの量を超えたらアクションを実行する
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SimCumulativeTotalTrafficRule 

IoT SIM (SIM ID) の利用開始からの累積データ通信量が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByte累積データ量 (MiB) がこの値を超えたらアクションを実行する
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: SimStatusAttributeRule 

IoT SIM (SIM ID) のステータスが変更されたらアクションを実行するルール

properties説明
sourceStatusIoT SIM がこのステータスから変更された場合にアクションを実行する。例えば sourceStatusactive に設定しておくと、IoT SIM が active から他のステータスに変更された時に指定のアクションを実行できます。
targetStatusIoT SIM がこのステータスになった場合にアクションを実行する。例えば targetStatusinactive に設定しておくと、IoT SIM が inactive になった時に指定のアクションを実行できます。

sourceStatustargetStatus が取りうる値は以下のとおりです。

sourceStatus と targetStatus の値説明
null(未設定)すべてのステータス
readyready ステータス
activeactive ステータス
inactiveinactive ステータス
standbystandby ステータス
suspendedsuspended ステータス
terminatedterminated ステータス

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}変更後のステータス
${oldStatus}変更前のステータス

ステータスの詳細は リファレンス: SIM のステータス一覧 もご確認ください。

type: SimSpeedClassAttributeRule 

IoT SIM (SIM ID) の速度クラスが変更されたらアクションを実行するルール

properties説明
targetSpeedClassIoT SIM がこの速度クラスになった場合にアクションを実行する。例えば targetSpeedClasss1.minimum に設定しておくと、IoT SIM が s1.minimum の速度クラスになった時にアクションを実行できます。

targetSpeedClass が取りうる値は以下のとおりです。

targetStatus の値説明
(未設定)すべての速度クラス
s1.minimum速度クラス s1.minimum
s1.slow速度クラス s1.slow
s1.standard速度クラス s1.standard
s1.fast速度クラス s1.fast
s1.4xfast速度クラス s1.4xfast

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newSpeedClass}変更後の速度クラス
${oldSpeedClass}変更前の速度クラス

type: SimExpiredRule 

IoT SIM (SIM ID) の有効期限が切れた時にアクションを実行するルール

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${newStatus}有効期限が切れた後のステータス
${oldStatus}有効期限が切れる前のステータス

type: SimSubscriptionStatusRule 

サブスクリプションの追加を行った場合に OTA の状況によってアクションを実行するルール

properties説明
startedサブスクリプションの追加を開始した場合にアクションを実行
finishedサブスクリプションの追加が完了した場合にアクションを実行
failedサブスクリプションの追加が失敗した場合にアクションを実行
null上記のいずれの場合もアクションを実行

サポートされる変数 (この変数は、Action の中で設定すると実行時にその値を取得できます)

サポートされる変数説明
${imsi}ステータスによって入る値は異なります。
started: plan01s の IMSI
finished: 追加されたサブスクリプションの IMSI
failed: plan01s の IMSI
${primaryImsi}plan01s の IMSI
${subscription}OTA で追加されたサブスクリプション
${otaStatus}サブスクリプション追加のステータス
started: サブスクリプションの追加を開始した状態
finished: サブスクリプションの追加が完了した状態
failed: サブスクリプションの追加が失敗した状態

type: DailyTotalTrafficRule 

Operator にひもづく全 IoT SIM の日のデータ通信量合計が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量 (MiB) がこの量を超えたらアクションを実行する
このルールは、ターゲットとして targetOperatorId の場合のみ有効です。
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

type: MonthlyTotalTrafficRule 

Operator にひもづく全 IoT SIM の月のデータ通信量合計が一定を超えたらアクションを実行するルール

properties説明
limitTotalTrafficMegaByteデータ量 (MiB) がこの量を超えたらアクションを実行する
このルールは、ターゲットとして targetOperatorId の場合のみ有効です。
このルールでは 再評価を行うタイミング (inactiveTimeoutDateConst) として すぐに再評価 (IMMEDIATELY) を指定できません。

actionConfigList[] 

ruleConfig で指定されたルールが適用された場合に実行されるアクションを指定するための項目です。 例えば、ルールが適用されたタイミングで指定のアドレスにメールを送ったり、IoT SIM の速度クラスを変更したりできます。

{
  "actionConfigList": [
    {
      "type": "アクションのタイプ",
      "properties": { "key": "value" }
    }
  ]
}

ルールと同様、type 属性でどのアクションを使うかを指定できます。 また共通パラメータとして executionDateTimeConst を設定できます。 executionDateTimeConst はそのアクションをいつ実行するかを指定するパラメータです。

type 一覧 

type説明
ChangeSpeedClassActionIoT SIM の SpeedClass を変更するアクション
SendMailActionメールを送るアクション
SendMailToOperatorActionオペレーターの登録メールアドレスにメールを送るアクション
ActivationActionIoT SIM の状態を Active (使用中) にするアクション
DeactivationActionIoT SIM の状態を Inactive (休止中) にするアクション
StandbyActionIoT SIM の状態を Standby (利用開始待ち) にするアクション
SuspendActionIoT SIM の状態を Suspended (利用中断中) にするアクション
ExecuteWebRequestAction指定の URL にリクエストをするアクション
InvokeAWSLambdaActionAWS Lambda を呼び出すアクション
  • IoT SIM の状態を利用開始待ちにする (Standby) アクションの場合、IoT SIM を Standby (利用開始待ち) から 使用中 または 休止 状態に戻す際に、アクティベーション料金が適用される場合があります。詳しくは料金ページをご確認ください。
  • IoT SIM の状態を利用開始待ちにする場合は、再評価のタイミングにご注意ください。繰り返し実行される場合、状態を戻す度に料金が発生するため適宜 inactiveTimeoutDateConst に「再評価を行わない」を指定するなどしてください。

各 type で共通した properties 

properties説明
executionDateTimeConstすべてのアクションに共通の必須パラメータです。ルールの判定が有効になった際、どのタイミングでアクションを実行するかを指定します。
executionOffsetTime任意のプロパティ。executionDateTimeConst で設定した時間との差分を指定します (単位: 分)。executionDateTimeConst から指定時間 (分) の経過後にアクションを実行します。

executionDateTimeConst が取りうる値は以下のとおりです。

説明
IMMEDIATELYすぐに実行
BEGINNING_OF_NEXT_MONTH翌月初
BEGINNING_OF_NEXT_DAY翌日開始時
AFTER_ONE_DAY1 日後
NEVER実行しない

actionConfigList の type に応じた properties の設定 

type: ChangeSpeedClassAction 

IoT SIM の SpeedClass を変更するアクション

properties説明
speedClass“s1.slow”,“s1.standard"などの速度クラスを設定する

type: SendMailAction 

メールを送るアクション

properties説明
to送付先メールアドレス
titleメールタイトル
messageメール本文

メールのタイトル、および本文には、以下の変数を利用できます。また、これ以外にも、ルールでサポートされる変数を利用できます。

サポートされる変数説明
${simId}対象 IoT SIM の SIM ID
${imsi}対象 IoT SIM の IMSI
${operatorId}対象 IoT SIM を持つ Operator の ID
${coverage}イベントが発生したカバレッジ。jp または g が入ります。
${date}送信日付 (yyyy/m/d)
${year}送信年 (yyyy)
${month}送信月 (m)
${day}送信日 (d)
${tags.[任意のタグ名]}対象 IoT SIM のタグ名に対応する値 (例: tags.name)

type: SendMailToOperatorAction 

Operator にメールを送るアクション

properties説明
titleメールタイトル
messageメール本文
メールのタイトル、および本文には、「メールを送るアクション」と同じ変数が利用できます。

type: ActivationAction 

IoT SIM の状態を Active (使用中) にするアクション

当 type に応じた properties の設定はありません。

type: DeactivationAction 

IoT SIM の状態を Inactive (休止中) にするアクション

当 type に応じた properties の設定はありません。

type: StandbyAction 

IoT SIM の状態を Standby (利用開始待ち) にするアクション

当 type に応じた properties の設定はありません。

type: SuspendAction 

IoT SIM の状態を Suspended (利用中断中) にするアクション

当 type に応じた properties の設定はありません。

type: ExecuteWebRequestAction 

指定の URL にリクエストをするアクション

properties説明
url接続先 URL とパラメーター
httpMethodGET,POST,PUT,DELETE のいずれか
contentTypeapplication/json などの ContentType
headersヘッダーに設定する値 (エスケープされた JSON オブジェクト (hash)) (任意)
bodyリクエストボディにセットする文字列 (任意)。GET,DELETE の場合は設定できません

url,headers および body には、以下の変数を設定できます。またこれ以外にも、ルールでサポートされる変数を利用できます。

サポートされる変数説明
${simId}対象 IoT SIM の SIM ID
${imsi}対象 IoT SIM の IMSI
${operatorId}対象 IoT SIM を持つ Operator の ID
${coverage}イベントが発生したカバレッジ。jp または g が入ります。
${date}送信日付 (yyyy/m/d)
${year}送信年 (yyyy)
${month}送信月 (m)
${day}送信日 (d)
${tags.[任意のタグ名]}対象 IoT SIM のタグ名に対応する値 (例: tags.name)

type: InvokeAWSLambdaAction 

AWS Lambda を呼び出すアクション

properties説明
endpointLambda のエンドポイント URL
functionNameLambda ファンクション名 (バージョンやエイリアス指定も可)
accessKey(非推奨。credentialsId を利用してください) アクセスキー
secretAccessKey(非推奨。credentialsId を利用してください) シークレットアクセスキー
credentialsId認証情報 ID
parameter1パラメーター 1 (optional)
parameter2パラメーター 2 (optional)
parameter3パラメーター 3 (optional)
parameter4パラメーター 4 (optional)
parameter5パラメーター 5 (optional)

認証情報 ID には、認証情報ストアで登録できる AWS 認証情報 または AWS IAM ロール認証情報 の ID を指定します。 パラメーターには任意の文字列 (最大 100 文字) および以下の変数を設定できます。またこれ以外にも、ルールでサポートされる変数 (${newSpeedClass} など) を設定できます

サポートされる変数説明
${simId}対象 IoT SIM の SIM ID
${imsi}対象 IoT SIM の IMSI
${operatorId}対象 IoT SIM を持つ Operator の ID
${coverage}イベントが発生したカバレッジ。jp または g が入ります。
${date}送信日付 (yyyy/m/d)
${year}送信年 (yyyy)
${month}送信月 (m)
${day}送信日 (d)
${tags.[任意のタグ名]}対象 IoT SIM のタグ名に対応する値 (例: tags.name)

呼び出し先の Lambda ファンクションには、以下の JSON が渡されます。

{
  "imsi": "対象のimsi",
  "parameter1": "上記のparameter1",
  "parameter2": "上記のparameter2",
  "parameter3": "上記のparameter3",
  "parameter4": "上記のparameter4",
  "parameter5": "上記のparameter5"
}

Lambda ファンクション実装例

exports.handler = function (event, context) {
  console.log("imsi =", event.imsi);
  console.log("value1 =", event.parameter1);
  context.succeed(event.imsi);
};
  • イベントハンドラでは、グループをターゲットにした場合でも ruleConfig で定義された条件を達成したかどうかの判定は IoT SIM ごとに行われ、その都度 Lambda Function が起動されます。どの IoT SIM での通信によって Lambda Function が呼び出されたのかは、Lambda に渡される event オブジェクトに含まれている IMSI から判別できます。
  • イベントハンドラの条件を達成したタイミングで IoT SIM が所属するグループに該当する IoT SIM 全体にアクションを行いたい場合には、イベントハンドラから Lambda Function に引き渡される JSON の parameter にグループ ID を含めておき、Lambda Function 側で SORACOM API を実行して該当の IoT SIM を取得するような実装を検討してください。

設定サンプル 

以下に掲載する構文はサンプルです。実際にお使いになる場合は、お客様自身でテストを実施ください。

IoT SIM の速度変更時に、ExecuteWebRequestAction で Slack に通知するサンプル 

{
  "targetOperatorId": "OPXXXXXXXXXX",
  "name": "SpeedClass",
  "ruleConfig": {
    "type": "SimSpeedClassAttributeRule",
    "properties": {
      "inactiveTimeoutDateConst": "IMMEDIATELY"
    }
  },
  "status": "active",
  "actionConfigList": [
    {
      "type": "ExecuteWebRequestAction",
      "properties": {
        "headers": "{\"contentType\":\"application/json; charset=utf-8\"}",
        "executionDateTimeConst": "IMMEDIATELY",
        "httpMethod": "POST",
        "body": "{\"text\":\"${imsi} speed class changed. from ${oldSpeedClass} to ${newSpeedClass}\"}",
        "contentType": "application/json",
        "url": "https://hooks.slack.com/services/XXXX"
      }
    }
  ]
}

ChangeSpeedClassAction, SendMailAction を利用し、1 日 100M 利用で 1 日後まで速度制限しメール通知するサンプル 

{
  "targetImsi": "xxxxxxxxxxxx",
  "name": "100MiBリミット",
  "description": "1日100MiB利用で、1日後まで速度制限",
  "ruleConfig": {
    "type": "SubscriberDailyTrafficRule",
    "properties": {
      "inactiveTimeoutDateConst": "AFTER_ONE_DAY",
      "limitTotalTrafficMegaByte": "100"
    }
  },
  "status": "active",
  "actionConfigList": [
    {
      "type": "ChangeSpeedClassAction",
      "properties": {
        "speedClass": "s1.slow",
        "executionDateTimeConst": "IMMEDIATELY"
      }
    },
    {
      "type": "ChangeSpeedClassAction",
      "properties": {
        "speedClass": "s1.fast",
        "executionDateTimeConst": "AFTER_ONE_DAY"
      }
    },
    {
      "type": "SendMailAction",
      "properties": {
        "executionDateTimeConst": "IMMEDIATELY",
        "to": "notify@exmaple.com",
        "title": "ソラコムからのお知らせ",
        "message": "1日のデータ通信量が100MiBに到達したので速度制限を行います"
      }
    },
    {
      "type": "SendMailAction",
      "properties": {
        "executionDateTimeConst": "AFTER_ONE_DAY",
        "to": "notify@exmaple.com",
        "title": "ソラコムからのお知らせ",
        "message": "速度制限を解除します"
      }
    }
  ]

InvokeAWSLambdaAction を利用し、累積 3GB 利用時に AWS Lambda 呼び出しするサンプル 

累積でのイベントのため、一度のみの評価を行う NEVERinactiveTimeoutDateConst に設定します。

{
  "targetOperatorId": "OPXXXXXXXXX",
  "name": "3GBリミット",
  "description": "累積3GB利用時",
  "ruleConfig": {
    "properties": {
      "inactiveTimeoutDateConst": "NEVER",
      "limitTotalTrafficMegaByte": 3000
    },
    "type": "CumulativeTrafficRule"
  },
  "actionConfigList": [
    {
      "properties": {
        "credentialsId": "認証情報 ID",
        "endpoint": "https://lambda.ap-northeast-1.amazonaws.com",
        "functionName": "Lambdaのfunction名",
        "executionDateTimeConst": "IMMEDIATELY",
        "parameter3": "param3",
        "parameter2": "param2",
        "parameter1": "param1"
      },
      "type": "InvokeAWSLambdaAction"
    }
  ]
}

InvokeAWSLambdaAction を利用し、速度クラス変更時に AWS Lambda で履歴を保存するサンプル 

速度クラス変更のルールで利用できる変数 (${newSpeedClass}${oldSpeedClass}) を使用します。 指定した AWS Lambda に変更前後の速度クラスがパラメーターとして渡されるため、Lambda のプログラムで DB などに履歴保存します。

{
  "targetOperatorId": "OPXXXXXXXXX",
  "name": "SpeedClass変更",
  "description": "SpeedClass変更時に実行",
  "ruleConfig": {
    "properties": {
      "inactiveTimeoutDateConst": "IMMEDIATELY",
      "targetSpeedClass": null
    },
    "type": "SubscriberSpeedClassAttributeRule"
  },
  "actionConfigList": [
    {
      "properties": {
        "credentialsId": "認証情報 ID",
        "endpoint": "https://lambda.ap-northeast-1.amazonaws.com",
        "functionName": "Lambdaのfunction名",
        "executionDateTimeConst": "IMMEDIATELY",
        "parameter1": "${oldSpeedClass}",
        "parameter2": "${newSpeedClass}"
      },
      "type": "InvokeAWSLambdaAction"
    }
  ]
}