# Webhook 出力

> ワークフローの結果を、名前付きの値として、JSON ボディ付きの HTTP POST で任意の URL に送信します。保存済みの認証情報も付けられ、そのシークレットはサーバー上に保持されます。

Source: https://nodaro.ai/ja/docs/nodes/publish/webhook-output

**Webhook 出力**（Webhook Output）ノードは、ワークフローの結果を、JSON ボディ付きの HTTP POST リクエストで URL に送信します。完成した動画、画像、オーディオファイル、テキストを、自分のバックエンド、コンテンツ管理システム、自動化サービスに届けるときに使います。送信する値の名前は、自分で決められます。また、保存済みのキーをリクエストのたびに送信でき、そのキーがワークフロー内に表示されることはありません。

- Found in: Publish › Export
- Output: none
- API type: `webhook-output`

## 使いどころ
- 生成した動画が完成したら、その URL をコンテンツ管理システムに送ります。
- ワークフローが終わったら、別のサービスで自動化を開始します。
- 結果を自分の API に届けて、さらに処理します。
- スケジュールやトリガーによる実行が完了したことを、別のシステムに知らせます。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**公開 › エクスポート › Webhook 出力**を選びます。

### アドレスを入力する
設定パネルで、**Webhook URL** を入力します。たとえば、`https://example.com/webhook` です。`https://` のアドレスを使ってください。

### 送信する値に名前を付ける
**入力パラメーター**で、値ごとに**追加**をクリックし、`video_url` などの名前を入力して、種類を選びます。パラメーターを 1 つ追加するごとに、その名前の入力がノードに追加されます。

### 接続して実行する
各入力を、その値を出すノードに接続し、**実行**をクリックします。パネルの**前回の実行**に、送信の HTTP ステータスコードが表示されます。

Workflow: 動画の URL とキャプションが、1 つの JSON ボディ内の 2 つの名前付きの値として、自分の API に送信されます。

- 動画生成 → Webhook 出力 (video_url)
- プロンプト → Webhook 出力 (caption)

## 入力
入力は、定義したパラメーターによって変わります。

- **パラメーターなし**：ノードの入力は 1 つです。そこに接続したものはすべて、1 つのペイロードとして送信されます。
- **パラメーターが 1 つ以上**：パラメーターごとに、その名前の入力が 1 つずつあります。各値は、パラメーターの名前で送信されます。

## 設定
| 設定 | 説明 |
| --- | --- |
| **Webhook URL** | POST リクエストを受け取るアドレスです。 |
| **認証情報** | リクエストのたびにヘッダーとして送信される、保存済みのキーです。デフォルトは**なし（認証情報なしで送信）**です。[認証情報を付けて送信する](#send-with-a-credential)を参照してください。 |
| **入力パラメーター** | 送信する名前付きの値です。それぞれに名前と種類があり、種類は**テキスト**、**画像 URL**、**動画 URL**、**オーディオ URL** のいずれかです。 |
| **前回の実行** | 前回の送信の HTTP ステータスコード、または**未送信**です。 |

## リクエストの内容
ノードは、JSON ボディ付きの POST リクエストを送信します。`video_url` と `caption` という 2 つのパラメーターがある場合、ボディは次のようになります。

```json
{
"video_url": "https://cdn.example.com/results/clip.mp4",
"caption": "Our new product, in 15 seconds."
}
```

メディアの値はファイルの URL で、受け取ったサービスはそこからファイルをダウンロードできます。

## 認証情報を付けて送信する
多くのサービスは、`Authorization: Bearer ...` のように、ヘッダーにキーが含まれた送信しか受け付けません。キーを認証情報として一度だけ保存し、ノードでその認証情報を選びます。

### キーを保存する
**連携 › HTTP 認証情報**を開き、ヘッダー名（たとえば `Authorization`）とそのシークレット値を指定して、新しい認証情報を保存します。パネルの**認証情報を管理**リンクからも、同じページが開きます。

### 使用範囲を選ぶ
「連携」では、キーの使用範囲を選ぶよう求められます。**すべてのアドレス**か **1 つのアドレスのみ**を選びます。違いは、以下で説明します。

### ノードで選ぶ
ノードの**認証情報**メニューで、保存した認証情報を選びます。これで、このノードからのすべての送信に、そのヘッダーが付きます。

ノードが保存するのは、認証情報への参照だけです。シークレットは、リクエストの送信時にサーバー上で復号され、二度と表示されません。ワークフロー、エクスポート、テンプレート、プリセットに入ることもありません。キーを新しいものに替えるには、古い値に新しい値を上書き保存します。

### 「すべてのアドレス」と「1 つのアドレスのみ」の違い
| 選択肢 | 機能する場面 | 使う場面 |
| --- | --- | --- |
| **すべてのアドレス** | 自分で開始した実行でのみ機能します。エディターからの実行と、エディターで設定したスケジュールです。 | ワークフローをまだ構築しているとき。 |
| **1 つのアドレスのみ** | 公開したアプリ、共有したワークフロー、トリガーによる実行を含む、すべての実行で機能します。ただし、ノードの送信先がロックしたアドレスである場合に限ります。 | ワークフローが自分の手を離れて実行されるとき、またはほかの人が実行するとき。 |

ロックされていない認証情報は、公開したアプリ、共有したワークフロー、共同編集者の実行、API トークンで開始した実行、Webhook トリガー、API で作成したスケジュールでは拒否されます。その場合、ノードはキーなしで送信するのではなく、わかりやすいメッセージを出して失敗します。

ロックされた認証情報は、1 つの `https://` アドレスにひも付けられます。デフォルトでは、そのアドレスと完全に一致する場合だけが対象です。同じサービスの複数のアドレスで 1 つのキーを使うには、**このアドレス配下のパスも許可**をオンにします。完全一致のアドレスにロックされた認証情報を選ぶと、**Webhook URL** はそのアドレスに合わせて設定され、編集できなくなります。

ロックは取り消せません。ロックしたアドレスは後から変更できますが、削除はできません。

### 公開と共有には、ロックされた認証情報が必要
ワークフローをアプリとして公開したり、ほかの人が実行できるように共有したりする前に、送信に使うすべての認証情報を、ノードの送信先のアドレスにロックする必要があります。サブワークフロー内の認証情報も対象です。公開と共有のダイアログでは、ワンクリックで認証情報をノードの現在の URL にロックできます。

### ロックによる制限
すべてのリクエストとすべてのリダイレクトで、次のルールが適用されます。

- URL は、ロックしたアドレスと一致する必要があります。一致しない場合、リクエストは送信される前に拒否されます。
- ほかのアドレスへのリダイレクトには従いません。キーなしで続行するのではなく、リクエストが失敗します。
- ロックされていない認証情報は、別のサイトへのリダイレクトから取り除かれます。
- 認証情報が、暗号化されていない `http://` で送信されることはありません。

### キーを付けると応答は表示されない
認証情報を付けている場合、応答の本文は返されず、保存も表示もされません。扱われるのは、ステータスコードだけです。一部のサービスはリクエストヘッダーを応答で繰り返すため、キーがワークフローに戻ってこないようにしています。

削除された認証情報や、別のアカウントの認証情報を使うと、ノードは失敗します。ノードが、キーなしでリクエストを送信することはありません。

## エクスポートしたワークフロー
ワークフローのエクスポートやテンプレートに、認証情報が含まれることはありません。ワークフローをインポートすると、Webhook 出力ノードは認証情報なしで届くので、インポートした人が自分の認証情報を選びます。認証情報は、Nodaro のアプリでのみ管理します。

## ヒント
- **先にアドレスをテストする**：構築中は、リクエストの内容を確認できるサービスにノードの送信先を向け、実際のエンドポイントにつなぐ前にボディを確認します。
- **受信側の名前に合わせる**：パラメーターには、受け取るサービスが想定しているとおりの名前を付けます。
- **外部から実行を開始する**：「Webhook 出力」を [**Webhook トリガー**（Webhook Trigger）](https://nodaro.ai/docs/nodes/automate/webhook-trigger)や[**スケジュールトリガー**（Schedule Trigger）](https://nodaro.ai/docs/nodes/automate/schedule-trigger)と組み合わせると、エディターに誰もいなくても実行されるワークフローになります。
- **コピーを残す**：同じ結果を、[**ストレージに保存**（Save to Storage）](https://nodaro.ai/docs/nodes/publish/save-to-storage)にも接続します。

## トラブルシューティング
**リクエストの後でノードが失敗した**：受信先のアドレスがエラーを返しました。ステータスコードは**前回の実行**に、エラーは実行履歴に表示されます。

**リクエストが送信前に拒否される**：アドレスを確認してください。プライベートネットワークやローカルネットワークのアドレスを指す URL は、拒否されます。認証情報を付けている場合は、URL が認証情報のロックされたアドレスとも一致する必要があります。

**URL がロックされたアドレスではないという警告がパネルに表示される**：インポートの後などで、認証情報が別のアドレスにロックされています。**ロックされたアドレスを使用**をクリックするか、別の認証情報を選んでください。

**自分で実行すると動くが、公開したアプリやトリガーによる実行では失敗する**：認証情報が、アドレスにロックされていません。**連携**で認証情報をノードのアドレスにロックしてから、もう一度実行してください。

## Frequently asked questions

### 「Webhook 出力」は何を送信しますか？

JSON ボディ付きの HTTP POST リクエストを送信します。パラメーターがある場合は、各パラメーターの名前がキーになり、接続したノードの値がその値になります。たとえば、動画の URL です。パラメーターがない場合は、接続したすべてのデータが 1 つのペイロードとして送信されます。

### Webhook と一緒に API キーやトークンを送るにはどうすればよいですか？

「連携」で、Authorization などのヘッダー名とそのシークレット値を指定して、キーを認証情報として一度だけ保存します。次に、ノードの「認証情報」メニューでその認証情報を選びます。シークレットはサーバー上に保持され、ワークフローに含まれることはありません。

### 公開したアプリや共有したワークフローで、認証情報が拒否されるのはなぜですか？

アドレスにロックされていない認証情報は、自分で開始した実行でしか機能しません。ノードの送信先のアドレスにロックすると、公開したアプリ、共有したワークフロー、トリガーによる実行でも機能します。

### サーバーからの応答が表示されないのはなぜですか？

認証情報を付けている場合、Nodaro は応答のステータスコードだけを扱い、応答そのものは返さず、保存も表示もしません。一部のサーバーは、キーを含むリクエストヘッダーを応答で繰り返すためです。

### 「Webhook 出力」には、クレジットがかかりますか？

いいえ。Webhook の送信は無料です。支払うのは、結果を作ったノードの分だけです。
