# Webhook レスポンス

Source: https://openflow.run/ja/docs/nodes/webhook-response/
Language: ja
Product version: 0.1.0-beta.77

選択したノードの完了時に HTTP 応答を返し、ワークフローは続行します。

実行全体が終わる前に受領確認を返したい場合は、Webhook Response を使います。どの応答ノードを使うかは Webhook 側で指定します。

## 応答を設定する

固定の入力は次のとおりです。

| 入力 | 値 |
| --- | --- |
| `body` | 任意の JSON 値。デフォルトは空のテキスト。 |
| `statusCode` | HTTP ステータスの数値。デフォルトは 200。 |
| `headers` | スカラー値を持つヘッダーオブジェクト。デフォルトは空オブジェクト。 |

```json
{
  "op": "node.add", "as": "response", "type": "webhook-response", "name": "Acknowledge",
  "inputs": {
    "body": { "kind": "value", "value": "Accepted" },
    "statusCode": { "kind": "value", "value": 202 }
  }
}
```

同じバッチで Webhook の `config.options.responseBody` を `{ "kind": "webhook-response", "nodeId": "$response", "timeoutMs": 30000 }` に設定し、Webhook から応答ノードまでの実行経路を接続します。

## 応答のタイミング

最初の成功時に、変更不能な応答スナップショットをコミットします。HTTP 呼び出し元は後続ノードを待たずに受け取れます。その後の失敗、ループ、再試行で応答が置き換わることはありません。

POST Webhook が message を Code に渡します。Webhook Response は後続処理を待たずに受領確認を返します。

**入力**
POST ボディ：{"message":"Please check my order"}

**想定される結果**
HTTP 202、本文 "Received: Please check my order"、ヘッダー X-Workflow: ticket-intake。

**実行前の準備**
外部から到達できる Webhook URL を持つ環境でフローを公開してください。

[ワークフローをダウンロード](https://openflow.run/docs/examples/webhook-response.openflow.json)

業務出力はありませんが、下流への実行エッジは接続できます。応答ノードは複数置けますが、各 Webhook は到達可能な 1 つを選択します。実行が成功しても選択した応答ノードがスキップされれば、HTTP はエラーになります。

## 制限

ヘッダーは固定値を項目ごとに設定するか、オブジェクト全体を入力元にバインドします。項目ごとの動的バインドは未対応です。デプロイ側のヘッダーとオリジンのポリシーは引き続き適用されます。子ワークフローの応答で、親実行の HTTP リクエストに返答することはできません。

ノードの再試行やエラー処理ポリシーはありません。応答モードとタイムアウトは [Webhook](https://openflow.run/ja/docs/nodes/webhook/index.md) を参照してください。

## 参照元

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md#early-webhook-response-nodes)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#trigger-configuration-and-outputs)
*   [packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts)
