Soracom

Users

ドキュメント
Home ドキュメント イベントハンドラー イベントの作成

SORACOM CLI / SORACOM API で作成する

イベントは、SORACOM CLI または SORACOM API でも作成できます。

SORACOM CLI を利用するには、あらかじめ SORACOM CLI をインストールし、認証情報を保存してください。詳しくは、SORACOM CLI をインストールする を参照してください。

新しいイベントを作成する

soracom event-handlers create (EventHandler:createEventHandler API) を使用します。

$ soracom event-handlers create --body @{JSON ファイルのパス}

SORACOM API を利用するには、API キーと API トークンが必要です。詳しくは、API キーと API トークンの取り扱いについて を参照してください。

新しいイベントを作成する

EventHandler:createEventHandler API を使用します。

$ curl -v -X POST https://api.soracom.io/v1/event_handlers --body @{JSON ファイルのパス}

JSON ファイル

SORACOM CLI / SORACOM API でイベントを作成する場合は、イベントハンドラーの仕組み で説明した「監視設定」「ルール」「アクション」の 3 つの要素を、JSON ファイルで指定します。

JSON ファイルの例

JSON ファイルは、JSON フォーマットで記述されたテキスト形式のファイルです。

たとえば、「データ通信量が月間 1024 MiB を超えたら通信速度を制限する」イベントを作成するには、以下のような JSON ファイルを作成します。

{
  "targetOperatorId": "OP0000000000",
  "name": "Event handler",
  "description": "Sample description",
  "ruleConfig": {
    "type": "SubscriberMonthlyTrafficRule",
    "properties": {
      "inactiveTimeoutDateConst": "BEGINNING_OF_NEXT_MONTH",
      "limitTotalTrafficMegaByte": "1024"
    }
  },
  "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",
        "executionOffsetMinutes": "1",
        "title": "速度制限のお知らせ",
        "message": "対象 IoT SIM: ${imsi}\n\nIoT SIMの月次データ通信量が 1024 MiBに到達したため、通信速度が \"s1.minimum\" に制限されました。"
      }
    },
    {
      "type": "SendMailToOperatorAction",
      "properties": {
        "executionDateTimeConst": "BEGINNING_OF_NEXT_MONTH",
        "executionOffsetMinutes": "1",
        "title": "速度制限解除のお知らせ",
        "message": "対象 IoT SIM: ${imsi}\n\n速度制限期間が終了したため、通信速度が \"si.standard\" に設定されました。"
      }
    }
  ],
  "status": "active"
}
上記の例はそのままでは使用できません

たとえば、仮のオペレーター ID (OP0000000000) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。

なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。

主なプロパティ

JSON ファイルに指定する主なプロパティは以下のとおりです。詳しくは、EventHandler:createEventHandler API を参照してください。

プロパティ説明
name *Stringイベント名を指定します。
descriptionString概要を指定します。
targetImsi (*1)String監視対象の IoT SIM の IMSI を指定します。
targetGroupId (*1)String監視対象のグループを指定します。グループに所属するすべての IoT SIM が監視されます。
targetSimId (*1)String監視対象の IoT SIM の SIM ID を指定します。
targetOperatorId (*1)String監視対象のオペレーターを指定します。オペレーターが保有するすべての IoT SIM が監視されます。
ruleConfigObjectルールを指定します。詳しくは、ルールタイプ一覧 を参照してください。
actionConfigListObjectアクションタイプを指定します。詳しくは、アクションタイプ一覧 を参照してください。
statusStringactive (有効)、または inactive (無効) を指定します。
  • (*1) いずれか 1 つを指定してください。

設定サンプル

サンプルです

以下の JSON はサンプルです。プロパティによっては、ダミーの値が設定されています。コピーする場合は、すべての項目が適切に設定されていることを確認してください。

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

{
  "targetOperatorId": "OP0000000000",
  "name": "SpeedClass",
  "ruleConfig": {
    "type": "SimSpeedClassAttributeRule",
    "properties": {
      "inactiveTimeoutDateConst": "IMMEDIATELY"
    }
  },
  "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"
      }
    }
  ],
  "status": "active"
}
上記の例はそのままでは使用できません

たとえば、仮のオペレーター ID (OP0000000000) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。

なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。

1 日のデータ通信量が 100 MiB を超えた場合に 1 日後 (24 時間後) まで速度制限しメール通知するサンプル

{
  "targetImsi": "xxxxxxxxxxxx",
  "name": "100MiBリミット",
  "description": "1 日のデータ通信量が 100 MiB を超えた場合に 1 日後 (24 時間後) まで速度制限",
  "ruleConfig": {
    "type": "SubscriberDailyTrafficRule",
    "properties": {
      "inactiveTimeoutDateConst": "AFTER_ONE_DAY",
      "limitTotalTrafficMegaByte": "100"
    }
  },
  "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": "速度制限を解除します"
      }
    }
  ],
  "status": "active"
}

累積 3000 MiB 利用時に AWS Lambda を呼び出すサンプル

累積でのイベントのため、inactiveTimeoutDateConstNEVER (再評価しない) を設定しています。

{
  "targetOperatorId": "OP0000000000",
  "name": "3000 MiBリミット",
  "description": "累積 3000 MiB 利用時に AWS Lambda 呼び出し",
  "ruleConfig": {
    "properties": {
      "inactiveTimeoutDateConst": "NEVER",
      "limitTotalTrafficMegaByte": "3000"
    },
    "type": "SimCumulativeTotalTrafficRule"
  },
  "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"
    }
  ],
  "status": "active"
}
上記の例はそのままでは使用できません

たとえば、仮のオペレーター ID (OP0000000000) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。

なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。

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

速度クラス変更のルールで利用できる変数 (${newSpeedClass}${oldSpeedClass}) を使用して、AWS Lambda に変更前後の速度クラスを送信し、AWS Lambda でデータベースなどに履歴を保存するイメージです。

{
  "targetOperatorId": "OP0000000000",
  "name": "SpeedClass変更",
  "description": "速度クラス変更時に AWS Lambda で履歴を保存",
  "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"
    }
  ],
  "status": "active"
}
上記の例はそのままでは使用できません

たとえば、仮のオペレーター ID (OP0000000000) が使用されています。コピーする場合は、仮のオペレーター ID を自分のオペレーター ID に変更してください。

なお、オペレーター ID は、API キーと API トークンを発行する ときに返されます。SORACOM ユーザーコンソールでオペレーター ID を確認する操作については、オペレーター ID を確認する を参照してください。