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} 人います!!

入力例 (2-3)

現在のチャネルに送信された MESSAGE (前のチャネルの出力データ) の {"weather": ["sunny", "cloudy", "rain"]} から weather の配列の要素の数を取得します。

${len(payload.weather)}

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

変数

変数説明
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)string が、value を含んでいるかどうかを判断し、truefalse を返します。
startsWith(string, prefix)string が、prefix で始まるかどうかを判断し、truefalse を返します。prefix"" の場合は true を返します。
endsWith(string, suffix)string が、suffix で終わるかどうかを判断し、truefalse を返します。suffix"" の場合は true を返します。

データ変換

関数説明
toLowerCase(string)string を小文字に変換します。
toUpperCase(string)string を大文字に変換します。
int(value)value (文字列または数値) を整数に変換します。小数の場合、小数点以下を切り捨てます。
toNumber(string)string を数値に変換します。
toString(number)number を文字列に変換します。
abs(number)number の絶対値を返します。
ceil(number)number の小数を切り上げて整数にします。
floor(number)number の小数を切り捨てて整数にします。
round(number)number の小数を四捨五入して整数にします。
max(number1, number2)指定した 2 つの数値の最大値を返します。
min(number1, number2)指定した 2 つの数値の最小値を返します。
len(value)value (文字列または配列) の長さを返します。文字列の長さは、Unicode のコードポイント数です。配列の長さを取得する場合は、len(payload) のように変数で配列を指定してください。

時間処理

例:

${datetime("2025-02-05T00:00:00Z")} // 日付を表す文字列の例
${getUTCYear(1738713600000)} // UNIX 時間 (ミリ秒) の例
関数説明
now()現在の時刻を UNIX 時間 (ミリ秒) で返します。
datetime(iso_string)日付を表す文字列 (*1) を、UNIX 時間 (ミリ秒) に変換します。
datetimeFromISOString(iso_string)日付を表す文字列 (*1) を、UNIX 時間 (ミリ秒) に変換します。
getUTCYear(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「年」を返します。
getUTCMonth(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「月」を返します。
getUTCDate(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「日」を返します。
getUTCHours(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「時」を返します。
getUTCMinutes(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「分」を返します。
getUTCSeconds(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「秒」を返します。
getUTCMilliseconds(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、「ミリ秒」を返します。
getUTCDayOfWeek(value)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) を、協定世界時 (UTC) に変換して、曜日を 0 (日曜日) - 6 (土曜日) の数字で返します。
addSeconds(value, number)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) に、number 秒 (*2) を加算して、その結果を UNIX 時間 (ミリ秒) で返します。
addMinutes(value, number)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) に、number 分 (*2) を加算して、その結果を UNIX 時間 (ミリ秒) で返します。
addHours(value, number)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) に、number 時間 (*2) を加算して、その結果を UNIX 時間 (ミリ秒) で返します。
addDays(value, number)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) に、number 日 (*2) を加算して、その結果を UNIX 時間 (ミリ秒) で返します。
addMonths(value, number)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) に、number 月 (*2) を加算して、その結果を UNIX 時間 (ミリ秒) で返します。
addYears(value, number)value で指定した UNIX 時間 (ミリ秒) または日付を表す文字列 (*1) に、number 年 (*2) を加算して、その結果を UNIX 時間 (ミリ秒) で返します。
  • (*1) Flux の関数では、以下の形式の文字列に対応しています。日時や時刻は省略できません。

    • YYYY-MM-DDThh:mm:ssTZD (例: 2025-01-23T04:56:30+01:00)
    • YYYY-MM-DDThh:mm:ss.sssTZD (例: 2025-01-23T04:56:30.456+01:00)

    なお TZD には、Z または +09:00 の形式でタイムゾーンを指定できます。

  • (*2) 小数点以下は切り捨てられます。