Dify 1.10.0で Webhook トリガーを外部から利用する手順
- Dify 1.10.0で Webhook トリガーを外部から利用する手順
1. 前提条件
- Dify バージョン:1.10.0 系(1.10.0-rc1)
- 公式
docker-compose.yamlによるオンプレ環境 - Dify ホスト IP:
192.168.10.20 - Dify コンソールへはブラウザから
http://192.168.10.20でアクセス可能 - Webhook を送る側(外部/リモート)からも `192.168.10.20 へ到達できること
2. Dify 側の URL 設定
2-1. .env の修正
Dify の docker ディレクトリへ移動します。
cd ~/dify/docker
.env に以下 2 行に対して、ホストIPアドレス or FQDNを追記または修正します。
APP_WEB_URL=http://192.168.10.20 TRIGGER_URL=http://192.168.10.20 ←追加
ポイント:
- ブラウザからアクセスするときの URL と同じものを指定する (https/ポート番号を変えている場合はそこに合わせる)
- ここで
localhostのままだと、Webhook の URL がhttp://localhost/triggers/webhook/...になり、外部ホストからは到達できない
2-2. docker-compose.yaml の確認(参考)
docker-compose.yaml に TRIGGER_URL が渡っているため env にTRIGGER_URLの追記を行う
grep -n "TRIGGER_URL" docker-compose.yaml
例:
environment: TRIGGER_URL: ${TRIGGER_URL:-http://localhost}
.env に値を入れてあるので、デフォルトの http://localhost は上書きされます。
2-3. コンテナの再起動
設定を反映させるため、Dify を再起動させます。 停止中なら起動させます
docker compose down docker compose up -d
3. Dify で Webhook トリガー付きワークフローを作成
3-1. 新規ワークフローアプリを作成
ブラウザで
http://192.168.10.20にアクセス
「アプリを作成する」→「最初から作成」

- 「ワークフロー」→適当な名前(例:
Webhook テスト)を付けて作成
- 「トリガー」

- 「Webhookトリガ」
3-2. 「WEBHOOK トリガー」追加
- 確認

※細かい設定やWEBHOOKトリガーノードは後でも追加可)
3-3. 動作確認用の出力ノードを追加 ※試験用でjsonの "foo" : "var"を抜き出せるように設定
1.「Webhook」のコンテンツ設定

- 「出力」ノードを追加し、Webhook トリガーと線で接続

出力ノードのコンテンツを次のように設定

ここではテスト用に、受信した JSON の
fooフィールドをそのまま返すようにしている
4. Webhook URL の確認
Webhook トリガーノードを選択すると、右側の設定ペインに URL が表示されます。

例:
http://192.168.10.20/triggers/webhook/???????????
- ここが
http://localhost/...ではなくhttp://192.168.10.20/...になっていれば設定成功 - 下に「デバッグ用 URL」として
http://192.168.10.20/triggers/webhook-debug/???????????
も表示されます(どちらも外部から呼び出し可能)
5. 外部サーバからの呼び出しテスト
右上にある「テスト開始」か「アプリ公開」を行った後に実施する。
5-1. curl でのテスト
外部サーバ(例:zabbix)から、次のように POST します。アドレスは環境に合わせて修正
curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar"}' http://192.168.10.20/triggers/webhook/yt7cdw65-42GTqnDOkroitP2
期待されるレスポンス:
{"status":"success","message":"Webhook processed successfully"}
同様にデバッグ URL に対しても送信できます。
curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar"}' http://192.168.10.20/triggers/webhook-debug/yt7cdw65-42GTqnDOkroitP2
$ curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar"}' http://192.168.10.20/triggers/webhook-debug/yt7cdw65-42GTqnDOkroitP2
{"status":"success","message":"Webhook processed successfully"}
$
$ curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar"}' http://192.168.10.20/triggers/webhook/yt7cdw65-42GTqnDOkroitP2
{"status":"success","message":"Webhook processed successfully"}
$
5-2. Dify 側での実行結果確認
- ワークフロー画面右上の「テスト実行」または「実行履歴」を開く
- Webhook トリガー → 出力ノードまでの実行トレースが表示される
- 出力ノードの結果が
{ "foo": "bar" }
となっていれば、外部からの Webhook 呼び出しが正常に処理されている

6. Webhook ペイロードからの値の取り出し
Webhook トリガーで受信したデータは、_webhook_raw というオブジェクトに格納されます。
典型的な構造(イメージ):
_webhook_raw = {
"body": { // POST された JSON 本体
"foo": "bar"
},
"headers": {
"X-Forwarded-For": "192.168.xx.xx", ←リクエストを送ったホスト/中継した装置のIPが表示
...
},
"query_params": {
...
}
}
ex. Webhook ペイロードからの値をLLMを経由させ応答結果出力
