Soracom

Users

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

メッセージ集約アクション

メッセージ集約アクションは、アクションを分岐した場合や 配列データを分割して、新規イベントとして送信する を使用して処理を分岐させた場合に、分岐した処理を集約します。

たとえば、複数のソラカメ対応カメラを対象にソラカメ画像取得アクションと AI アクションを実行した後、その後の通知をまとめて実行できます。

Standard プラン、Enterprise プランで利用できます

プランについて詳しくは、SORACOM Flux の料金プラン を参照してください。

チャネルにアクションを追加する手順については、チャネルにアクションを追加する (処理を分岐する) を参照してください。

メッセージ集約アクションの設定

ここでは、メッセージ集約アクションの CONFIG について説明します。そのほかの項目については、アクションリファレンスの 「新しいアクションを作成」画面 を参照してください。

CONFIG

メッセージ集約アクションを設定します。

項目説明
[メッセージ集約対象チャネル]指定された「メッセージ集約対象チャネル」に送信されたメッセージを集約します。
[送信先チャネル]集約したメッセージの送信先チャネルを指定します。分岐した処理のすべてのメッセージの受信が完了すると、メッセージが集約され、送信先チャネルへ送信されます。
[高度な設定: アンカー]

一つの Flux アプリに複数の分岐がある場合に、どの位置から集約対象とするか を決めるチャネルまたはアクションを指定します。 この開始位置となるリソースを アンカー と呼びます。アンカーより後ろの処理がすべて完了したタイミングで、このアクションが実行されます。

Flux アプリでは、チャネルに一つ以上のアクションを設定したり、アクションの実行結果 (出力データ) を別のチャネルに送信できます。そのため、どのチャネル/アクションをアンカーにするかによって、 集約対象に含まれる経路が変わります。

アンカーの動作例

アンカーにはアクションとチャネルを選択できます。アンカーの種類と配置によって、次のように動作が変わります。

  • アクションをアンカーとして設定した場合

    • そのアクションが実行された場合だけ、そのアクション以降のチャネル/アクションが集約対象になります。
    • このアクションや後続の処理が失敗して、集約対象チャネルにメッセージが届かなかった場合でも、 集約処理自体は実行され、結果が空の配列になることがあります。
  • チャネルをアンカーとして設定した場合

    • そのチャネルにメッセージが届いた場合だけ、そのチャネル以降のチャネル/アクションが集約対象になります。
    • 条件不一致やエラーにより、このチャネルまでメッセージが到達しなかった実行では、集約処理は起動しません。
  • 使い分けの目安

    • 特定のアクションが「実行されたケースだけ」を集約したい場合
      • そのアクション、またはそれ以降のチャネル/アクションをアンカーにします。
    • そのアクションが条件不一致でスキップされた場合も含めて「常に」集約したい場合
      • そのアクションより手前のチャネル/アクションをアンカーにします。

メッセージ集約アクションの出力データ

メッセージ集約アクションの出力データは、集約した各メッセージを配列で返します。

複数の AI アクションを実行して集約した場合

以下は、複数の AI アクションを実行して、メッセージ集約アクションで集約した場合の出力例です。OpenAI (GPT-4.1-mini)OpenAI (GPT-4.1-nano) を使用する AI アクションをそれぞれ実行して、結果を集約しています。

Flux アプリの例

メッセージ集約アクションの[送信先チャネル]に送信される出力データ

{
  "messages": [
    {
      "output": {
        "text": "<AI の説明>"
      },
      "usage": {
        "completion_tokens": 246,
        "prompt_tokens": 3949,
        "total_tokens": 4195,
        "prompt_tokens_details": {
          "cached_tokens": 0,
          "audio_tokens": 0
        },
        "completion_tokens_details": {
          "reasoning_tokens": 0,
          "audio_tokens": 0,
          "accepted_prediction_tokens": 0,
          "rejected_prediction_tokens": 0
        },
        "model": "gpt-4.1-nano",
        "byol": false,
        "service": "openai",
        "credit": 2
      }
    },
    {
      "output": {
        "text": "<AI の説明>"
      },
      "usage": {
        "completion_tokens": 244,
        "prompt_tokens": 3949,
        "total_tokens": 4193,
        "prompt_tokens_details": {
          "cached_tokens": 0,
          "audio_tokens": 0
        },
        "completion_tokens_details": {
          "reasoning_tokens": 0,
          "audio_tokens": 0,
          "accepted_prediction_tokens": 0,
          "rejected_prediction_tokens": 0
        },
        "model": "gpt-4.1-mini",
        "byol": false,
        "service": "openai",
        "credit": 6
      }
    }
  ]
}
項目説明
messages集約されたメッセージの配列。各要素には、AI アクションの出力データが含まれます。AI アクションの出力データについて詳しくは、AI アクションの出力データ を参照してください。

複数のソラカメ対応カメラを対象にソラカメ画像取得アクションを実行して集約した場合

以下は、複数のソラカメ対応カメラを対象にソラカメ画像取得アクションを実行して、メッセージ集約アクションで集約した場合の出力例です。

Flux アプリの例

メッセージ集約アクションの[送信先チャネル]に送信される出力データ

{
  "messages": [
    {
      "deviceId": "7CDDE90XXXXX",
      "imageUrl": "https://flux-core-temporary-object-storage-jp-prod.s3.ap-northeast-1.amazonaws.com/01KCTRENXXXXXXX",
      "exportId": "5d06a3a4-XXXX",
      "harvestFilesPath": "/flux/XXXX.jpg",
      "datetime": "2025-12-19T07:28:35.035Z"
    },
    {
      "deviceId": "7CDDE90YYYYY",
      "imageUrl": "https://flux-core-temporary-object-storage-jp-prod.s3.ap-northeast-1.amazonaws.com/01KCTRENYYYYYYY",
      "exportId": "5d06a3a4-YYYY",
      "harvestFilesPath": "/flux/YYYY.jpg",
      "datetime": "2025-12-19T07:28:36.017Z"
    }
  ]
}
項目説明
messages集約されたメッセージの配列。各要素には、ソラカメ画像取得アクションの出力データが含まれます。ソラカメ画像取得アクションの出力データについて詳しくは、ソラカメ画像取得アクションの出力データ を参照してください。