カスタムフォーマット記法とパラメータ一覧

データハブやクラウドアダプタ、デバイスモニタリングのカスタムメールで使用できるカスタムフォーマットの書き方の説明です。

パラメータ展開

カスタムフォーマットでは、デバイスのデータを差し込んで文字列を変換する「パラメータ展開」機能が使用できます。

パラメータ展開は ${パラメータ名} と記述することで使用できます。${パラメータ名} で書かれた部分が、実際に処理される時にパラメータ名で指定されたデータを参照して文字列に置換されます。

以下に例を示します。この例は、データハブの出力フォーマット「JSON形式」と似た文字列を生成します。

カスタムフォーマット:
{
  "timestamp": ${TIMESTAMP},
  "serviceCode": "${SERVICE_CODE}",
  "id": "${DEVICE_ID}",
  "simId": "${SIM_ID}",
  "destination": "${DESTINATION}",
  "labels": ${LABELS},
  "payload": ${PAYLOAD}
}

生成されるHTTPリクエスト (サンプル):
{
  "timestamp": 1672531200000,
  "serviceCode": "iot12345678",
  "id": "dvc-1234567890",
  "simId": "09012345678",
  "destination": "https://api.example.com/push",
  "labels": {"設置場所":"松江"},
  "payload": {"temperature": 25.0}
}

その他、パラメータ展開の詳細な仕様や注意点は以下の通りです。

  • 使用できないパラメータ名は、空文字列に変換されます。
  • パラメータ名の前後にはスペースを含めないでください。
    • ${ TIMESTAMP } は無効です。空文字列に変換されます。
  • カスタムフォーマットの中で「$」を出力する場合は、「$$」と記述してください。

備考として、上記の例は「JSON形式」のフォーマットと以下の差異があります。

  • ラベル設定に関わらず、"labels"キーが常に出力されます。
    • JSON形式では、デバイスのラベル機能のON/OFFにより"labels"キーの出力有無が決まります。
    • なお、上記例のカスタムフォーマットでは、デバイスのラベル機能がOFFの場合、"labels": {}, と出力されます。
  • 接続形態に関わらず "simId"キーが常に出力されます。
    • JSON形式では、モバイルアクセス タイプDのみ"simId"キーが出力されます。それ以外は、"simId"キーが省略されます。
    • なお、上記例のカスタムフォーマットでは、電話番号の無いコネクティビティの場合、${simId} が空文字列に変換されるため、"simId": "", と出力されます。
利用可能なパラメータ一覧

使用する機能により利用できるパラメータが異なります。

データハブ・クラウドアダプタ

データハブやクラウドアダプタで使用できるパラメータは以下の通りです。

パラメータ名説明出力例
DATETIMEIoTサービスがデータを受信した時刻 (タイムゾーン付きミリ秒精度のRFC3339形式)2023-01-01T09:00:00.000+09:00
DESTINATIONデータハブの転送先設定で指定した送信先のURLhttps://api.example/push
DEVICE_IDデータを送信したデバイスのIDdvc-1234567890
DEVICE_NAMEデータを送信したデバイスの名称デバイス1
IMSI

SIMの識別番号 (IMSI)

440031234567890
IP_ADDRESSデータを送信したデバイスのIPアドレス192.0.2.1
LABELS

データを送信したデバイスの全てのラベル (JSON形式)

ラベル機能がONのデバイスのみ取得できます。OFFのデバイスは {} が出力されます。

{"ラベルキー名":"ラベルの値","ラベル2":"ラベル2の値"}
LABELS.<KEY>

テータを送信したデバイスのラベルの内、<KEY> に一致するラベルの値

ラベル機能 がONのデバイスのみ取得できます。OFFのデバイスは空文字列が出力されます。

ラベルの値
MESSAGE_IDIoTサービスが受信したデータに自動的に割り当てたID (メッセージID)f2860323-1f90-4356-b96d-04fa13c9d62a
PAYLOADデバイスから送信されたデータ (ペイロード){"sensor":123,"name":"test"}
PAYLOAD.<KEY>JSON形式で送信されたデータの内、<KEY> に一致するデータの値test
SERVICE_CODEIoTサービスの契約IDiot12345678
SIM_ID

SIMの電話番号

09012345678
TIMESTAMPIoTサービスがデータを受信した時刻 (UNIX時刻 (単位: ミリ秒))1672531200000

該当するデータが無いパラメータは全て空文字列に変換されます。

例として、モバイルアクセス タイプIやVPNアクセスには、電話番号が存在しないため ${simId} は "" に変換されます。

PAYLOAD.<KEY> でパラメータ展開する場合、以下の制限があります。

  • データをJSONで受信した場合のみ、展開できます。
    • デバイスからデータを送信する時にJSON形式で送信してください。
    • それ以外の形式では、空文字列に展開されます。
  • 展開できるキーは、1階層のみです。
    • ネストされたオブジェクトを展開することはできません。
    • 例) ペイロードが {"a": {"b": 123 }} の場合、PAYLOAD.a は {"b": 123} に展開できますが、PAYLOAD.a.b のように多階層にして参照することはできません。
  • 配列は展開できません。
    • 例) [123, "abc"] の場合、PAYLOAD.0 のように添え字を指定して展開はできません。
デバイスモニタリング カスタムメール
パラメータ名説明出力例
CONDITION_OPERATOR監視設定で指定している値の評価条件>
CONDITION_THRESHOLD監視設定で指定している閾値500.0
CONDITION_TYPE監視設定で指定しているメトリックの評価方式max
DATETIME監視を検知した時刻 (タイムゾーン付きミリ秒精度のRFC3339形式)2023-01-01T09:00:00.000+09:00
DEVICE_ID監視対象のデバイスのIDdvc-1234567890
DEVICE_NAME監視対象のデバイスの名称デバイス1
METRIC_IDメトリックのIDe450563a-96f8-4819-ab82-d4e846389cc9
METRIC_NAMEメトリックの名称メトリック1
METRIC_NAMESPACEメトリックの名前空間 (namespace)Default
METRIC_TAGSメトリックのタグ (JSON形式){"sensor":"BME280"}
METRIC_URLメトリック表示リンクURLhttps://cp.iot.iij.jp/monitor/metrics/e450563a-96f8-4819-ab82-d4e846389cc9?sc=iot12345678
METRIC_VALUEアラートが発生したときのメトリックの値786.0
PREV_STATE_NAMEアラート発生前の状態名正常
STATE_NAMEアラート発生によって切り替わった現在の状態名異常