Soracom

Users

ドキュメント
Home ドキュメント SORACOM Flux (Public beta) アクションリファレンス

アクション、コンディションの記法

[アクションの実行条件] や一部の入力欄では、Flux アプリが起動するトリガーに関するデータを表す式 (例: event.payload.temp) や、アクションを追加したチャネルに関するデータを表す式 (例: payload.temp) を入力できます。ここでは、イベントやメッセージの値を利用する方法を説明します。

[アクションの実行条件] の入力例

[アクションの実行条件] では、入力された式が評価され、その結果が true であればアクションが実行されます。

入力例 (1-1)

チャネルに送信された MESSAGE が {"temperature": 42} で、かつ Flux アプリの現在時刻が 2024-07-17T00:00:00Z を過ぎている場合に、true と評価されます。

(payload.temperature - 2.12) >= 32.8 && now() >= datetimeFromISOString("2024-07-17T00:00:00Z")

入力例 (1-2)

イベントソースから送信された MESSAGE が {"clickTypeName": "SINGLE"}、またはチャネルに送信された CONTEXT に {"protocol": "http"} が含まれる場合に、true と評価されます。

startsWith(toUpperCase(event.payload.clickTypeName), "SINGLE") || context.protocol == "http"

そのほかの入力欄での入力例

[アクションの実行条件] 以外の入力欄では、${} で囲む形式で入力します (例: ${event.payload.presignedUrls.get})。入力した式は、文字列に置き換えられます。

入力例 (2-1)

イベントソースから送信された MESSAGE の {"presignedUrls": {"get": "xxxxxx"}}xxxxxx を取得します。

<${event.payload.presignedUrls.get}|画像>

入力例 (2-2)

現在のチャネルに送信された MESSAGE (前のチャネルの出力データ) の {"output": {"people": 1, "people_with_blue_shirts": 0}}10 を取得します。

人が ${payload.output.people} 人います。そのうち、青いシャツの人が ${payload.output.people_with_blue_shirts} 人います!!

入力できる変数、演算子、関数について

変数

変数説明
payloadチャネルに送信された MESSAGE です。JSON オブジェクトの場合 payload.temperaturepayload.values[1].foo["click type"] のようにして、JSON オブジェクトの値を取り出します。JSON オブジェクトでない場合は、payload は文字列として扱われます。
contextチャネルに送信された CONTEXT に対応する JSON オブジェクトです。Object のスキーマはイベントタイプごとに異なります。イベントソースリファレンス を参照してください。
event.payloadイベントソースからチャネルに送信されたオリジナルの MESSAGE です。
event.contextイベントソースからチャネルに送信された CONTEXT に対応する JSON オブジェクトです。

イベントソースからはじめに送信されたチャネルでは、payloadevent.payload は同じ値です。同様に contextevent.context も同じ値です。

演算子

${payload.temp * 100} のように書くと、payload.temp100 の積 (payload.temp100 倍した値) を利用できます。

演算子説明
||論理和: どちらかの条件が true の場合、true を返します。
&&論理積: 両方の条件が true の場合、true を返します。
? :条件 (三項) 演算子: a ? b : c のように用い、条件 a を評価した結果が true の場合は b を、false の場合は c を返します。
例: event.payload.click_type == 1 ? "Single click" : "Double click"
==等しい: 値が等しい場合、true を返します。
!=等しくない: 値が等しくない場合、true を返します。
>=以上: 左の値が右の値以上の場合、true を返します。
>より大きい: 左の値が右の値より大きい場合、true を返します。
<=以下: 左の値が右の値以下の場合、true を返します。
<より小さい: 左の値が右の値より小さい場合、true を返します。
+加算: 2 つの値の合計を返します。
-減算: 2 つの値の差を返します。
*乗算: 2 つの値の積を返します。
/除算: 2 つの値の商を返します。
%剰余: 左の値を右の値で割った余りを返します。
**累乗: 左の値を右の値乗した結果を返します。

関数

関数説明
includes(string, value)stringvalue を含んでいるかどうかを判断し、truefalse を返します。
startsWith(string, prefix)sringprefix に指定された部分文字列で始まるかどうかを判断し、truefalse を返します。
endsWith(string, suffix)sringsuffix に指定された部分文字列で終わるかどうかを判断し、truefalse を返します。
toLowerCase(string)string を小文字に変換します。
toUpperCase(string)string を大文字に変換します。
now()現在の時刻をミリ秒で返します。
datetime(iso_string)ISO 8601 形式の文字列をミリ秒に変換します。
datetimeFromISOString(iso_string)ISO 8601 形式の文字列をミリ秒に変換します。
getUTCYear(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「年」を取得します。
getUTCMonth(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「月」を取得します。
getUTCDate(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「日」を取得します。
getUTCHours(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「時」を取得します。
getUTCMinutes(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「分」を取得します。
getUTCSeconds(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「秒」を取得します。
getUTCMilliseconds(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「ミリ秒」を取得します。
getUTCDayOfWeek(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) での曜日を 0 (日曜日) - 6 (土曜日) の数字で返します。
int(unix_time | iso_string)UNIX 時間 (ミリ秒) または ISO 8601 形式の文字列から、協定世界時 (UTC) の「秒」を取得します。