描述問題/錯誤/問題
同時也從文檔應用了反向代理配置,因為隧道實際上是一個代理:
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/...(只有在工作流程發佈時才會激活)
執行以下步驟
- 開啟你的 Webhook 節點。
- 將開關從測試 URL 切換到生產 URL。
- 複製該確切的 URL。
- 前往 Meta 開發者入口網站,確保那裡配置的 Webhook URL 是生產URL(不帶
-test 字串)。
- 重要: 如果你使用生產 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一次,確認你的應用程式名稱已列出。之後重新發布工作流程並傳送訊息。
參考以下內容: