更新:已排除 ngrok 插頁式廣告 + 代理標頭,仍無執行

描述問題/錯誤/問題

同時也從文檔應用了反向代理配置,因為隧道實際上是一個代理:
N8N_WEBHOOK_URL=https://[my-tunnel].trycloudflare.com/
N8N_PROXY_HOPS=1 確認 Adam13y 的診斷是正確的:在全新的隱私瀏覽器中測試了 ngrok URL(之前從未訪問過),確認 ngrok 的免費層向不認識的呼叫者提供「你即將訪問」的中間頁面 — 這解釋了為什麼會出現沒有指定欄位名稱的通用「無效參數」錯誤,因為 Meta 永遠無法到達 n8n 的實際回應。
切換隧道提供商以完全排除此問題:從 ngrok 移至 Cloudflare Tunnel(cloudflared tunnel --url http://localhost:5678),它沒有中間頁面。確認連接狀態良好,無警告頁面。

錯誤訊息是什麼(如有)?

當前狀態,執行上述所有步驟後:

  • 工作流程發佈成功,沒有錯誤
  • Meta 自己的「檢查測試 Webhook」日誌確認每次發送時都正確接收了我的測試訊息(欄位:messages、正確的 payload)
  • 清除並重新註冊了新的 webhook 訂閱(透過移除訂閱 + 重新發佈),以排除過時狀態
  • 儘管如此:n8n 的「執行」標籤中從未出現任何內容 — 不是失敗的執行,不是出錯的執行,完全沒有記錄的活動

所以此時:Meta 確認他們那邊的傳遞,隧道沒有已知的阻塞問題,代理標頭按照文檔配置,工作流程正在積極發佈並監聽,但 n8n 端完全沒有任何內容傳入。

我已經排除了從實例外部可檢查的所有問題(URL 正確性、隧道健康狀況、代理配置、訂閱狀態)。如果這對任何人來說聽起來很熟悉,或者如果有辦法獲得更多可見性來了解當 n8n 接收 WhatsApp webhook 時內部發生了什麼(或沒有發生什麼),我真的很感激有人能提供指示。

請分享您的工作流程

(在畫布上選擇節點並使用鍵盤快捷鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 來複製並貼上工作流程。)

分享最後一個節點返回的輸出

N/A

您的 n8n 設置信息

  • n8n 版本:2.31.6
  • 數據庫(預設:SQLite):SQLite(預設)
  • n8n EXECUTIONS_PROCESS 設置(預設:own, main):預設
  • 執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用):Docker
  • 作業系統:Windows

嘿 @Rasheed_Alia,在等待回應的同時,這些資源可能會對你有幫助:

建議資源

自動符合你的問題。

文件:

論壇:

@henryford、@Tanzeela_Tauseef、@Republic1815 - 你們之前幫助過類似的問題,能幫忙看一下嗎?

由 n8n 社群機器人自動建議。這是試驗版 - 請在此分享意見。

@Rasheed_Alia

在 n8n 中,有兩個不同的 webhook URL:

  • 測試 URL: .../webhook-test/...(只有在工作流程開啟且你點擊了「監聽事件」時才會激活)
  • 生產 URL: .../webhook/...(只有在工作流程發佈時才會激活)

執行以下步驟

  1. 開啟你的 Webhook 節點。
  2. 將開關從測試 URL 切換到生產 URL。
  3. 複製該確切的 URL。
  4. 前往 Meta 開發者入口網站,確保那裡配置的 Webhook URL 是生產URL(不帶 -test 字串)。
  5. 重要: 如果你使用生產 URL,你不會在編輯器中看到即時執行。你必須檢查左邊側邊欄中的執行標籤。

如果 N8N_WEBHOOK_URL 在 Docker 環境中設置不正確,n8n 可能會收到請求但無法將其與工作流程相匹配,因為它認為請求來自未授權的域。

檢查你的 docker-compose.yml 或 Docker 執行命令。確保變數正好是:

N8N_WEBHOOK_URL=https://[my-tunnel].trycloudflare.com/

(注意:如果你在 Meta 入口網站中附加路徑,請確保沒有尾部斜線,或確保完全匹配。某些版本的 n8n 對此環境變數中的尾部斜線很敏感)。

由於沒有任何東西進入執行標籤,請求在 HTTP 伺服器層級被拒絕。你需要查看 Docker 容器的原始日誌。

在從 WhatsApp 發送測試訊息時,在你的終端中執行此命令:

docker logs -f [your_n8n_container_name]

需要查看的內容:

  • 404 Not Found: 表示 Meta 正在訪問的 URL 與 n8n 中的任何活躍 webhook 都不匹配。(檢查生產與測試)。
  • 403 Forbidden: 表示 N8N_WEBHOOK_URL 或代理設置導致安全性不匹配。
  • 完全沒有日誌條目: 如果當 Meta 顯示「已發送」時,你在日誌中看不到任何內容,則請求仍然被隧道或 Windows 防火牆規則在到達 Docker 引擎之前阻止。

由於你在 Windows 上,Docker 在 VM(WSL2)中執行。有時隧道映射到 Windows 上的 localhost:5678,但 Docker 容器期望在其內部橋接上接收流量。

測試: 嘗試使用瀏覽器或 Postman 通過 GET 請求手動訪問你的 webhook URL。

  • 如果你收到 {"message":"Workflow not found"} 或 {"message":"Webhook not found"},n8n 正在接收請求。問題是 Meta 特定的負載或註冊。
  • 如果你收到超時或 502/504,隧道未到達 Docker 容器。

這些有幫助嗎?

Hi @Rasheed_Alia
「Check test webhooks」中出現的事件只表示Meta建立了payload,而不是將其發送給你。實際訊息只會傳送到你的WABA實際訂閱的應用程式的webhook,由於Meta在2025年末的UI變更,該訂閱通常從未建立,因此事件會停留在系統應用程式中,你的端點永遠不會被呼叫。這正好符合你的情況:發布成功,所以Meta連上了n8n並取得正確的challenge,但之後什麼都沒有收到。
開啟Graph API Explorer,將方法設定為GET,並查詢你的WABA ID(WhatsApp > API Setup):

<WABA_ID>/subscribed_apps

如果回應是空的,或名稱是「WA DevX Webhook Events 1P App」之類的而不是你自己的應用程式,將方法改為POST,並傳送相同路徑以訂閱你的應用程式,然後再GET一次,確認你的應用程式名稱已列出。之後重新發布工作流程並傳送訊息。
參考以下內容: