我在 WhatsApp 觸發器中遇到問題,它總是說參數不正確,而且根本沒有在我的 WhatsApp 上收到任何內容。
錯誤訊息是什麼(如果有的話)?
它總是說參數不正確。
請分享您的工作流程
這就是工作流程的樣子。雖然很簡單和基本,但即使應用程式 ID 和應用程式密鑰工作正常,WhatsApp 觸發器仍然無法正常工作。而且 WhatsApp 設置中的 1) 立即嘗試 和 2) 生產設置中的所有內容都已完成。
分享最後一個節點返回的輸出
我期望輸出由我或收件人電話號碼接收
您的 n8n 設置資訊
- n8n 版本:最新版本
- 資料庫(預設:SQLite):不確定
- n8n EXECUTIONS_PROCESS 設置(預設:own、main):own
- 執行 n8n 的方式(Docker、npm、n8n 雲端、桌面應用程式):npm
- 作業系統:Windows 11
嘿 @Myth_Xenodo,在等待回覆的同時,以下是一些可能對你有幫助的資源:
建議的資源
自動符合你的問題。
文件:
論壇:
@edumats、@Leoncsm1、@LogeshwariV — 你們之前曾幫助過類似的問題,能看一下嗎?
由 n8n 的社群機器人自動建議。這是試點計劃——請在此分享回饋。
Hi @Myth_Xenodo
Meta 需要知道您的應用程式中哪個部分應該接收 webhook。
- 前往您的 Meta 應用程式儀表板。
- 在左側邊欄中尋找 Webhooks 部分。
- 關鍵步驟: webhook 通常有一個下拉式選單可「選擇產品」。確保您已從該下拉式選單中選擇 「WhatsApp Business Account」(或類似的 WhatsApp 相關產品)。如果您誤選了「Facebook Login」或「Instagram」,當 n8n 嘗試註冊時,觸發器將因「參數錯誤」而失敗。
如果您在自己的電腦(localhost)或本機伺服器上執行 n8n:
- WhatsApp 無法「看到」您的電腦。 為了讓觸發器正常運作,Meta 必須能夠向您的 n8n 執行個體傳送 POST 請求。
- 解決方案: 您必須使用 ngrok、Cloudflare Tunnel 或反向代理等隧道,為您的本機 n8n 執行個體提供公開的
https:// URL。
- 檢查您的
WEBHOOK_URL: 確保您的 n8n 環境變數 WEBHOOK_URL 設定為您的公開隧道位址(例如,https://your-ngrok-id.ngrok-free.app)。
Meta 需要安全連線來傳送 webhook 事件。
- 如果您是自行託管,請確保您的 n8n 執行個體正在使用有效的 SSL 憑證(HTTPS)。
- Meta 將拒絕連線到具有自簽憑證的網站或只能透過 HTTP 存取的網站。
以上是否有任何情況適用於您?
請提供下列資訊:
- 您是否已在 Meta 應用程式儀表板內成功設定 Webhook URL?
- 錯誤是在您嘗試啟用工作流程時出現,還是在您嘗試測試/執行工作流程時出現?
我試過 webhook,但它就是完全無法運作。我用 ngrok 自行免費託管,但它根本無法正常工作,這讓我很沮喪,webhook 都不起作用,而且 webhook 之間還會互相干擾,這根本沒有意義。
我跟著這個教程,但我的問題總是以錯誤的參數結束。
當我執行工作流程時它就是不運行。它只是快速退出,這是圖像。
Hi @Myth_Xenodo 歡迎!
以下是一些人在使用這個設置時容易遇到的問題。
免費的 ngrok 每次重新啟動時都會給你一個新的隨機 URL。所以存放在 Meta 中的回調 URL 會在你重新啟動任何東西後立即與你的 n8n 不匹配,這可能解釋了為什麼感覺 webhook 相互干擾。在 ngrok 儀表板中認領你的免費靜態域名,然後用它啟動 ngrok。你每個帳戶可以免費獲得一個,它可以在重新啟動後存活。
其次,在 Meta 的 WhatsApp 然後 Configuration 中,僅保存回調 URL 還不夠。你還必須點擊 Webhook fields 旁邊的 Manage,並勾選 messages。如果該框未勾選,所有設置看起來都正確,但什麼都收不到。
第三,值得再次檢查哪個憑證在哪個節點上。WhatsApp Trigger 使用 App ID 和 App Secret,而發送節點使用訪問令牌和電話號碼 ID。它們是 n8n 中兩種不同的憑證類型,很容易最後附加錯誤的憑證。
另外,trigger 只有在工作流被激活時才會接收真實消息,而不是當你點擊 Execute 時。Execute 只是註冊一個臨時測試 webhook 然後退出,這與你的截圖中它立即退出的情況相符。
這完全沒有意義。
我建立了一個 ngrok,它需要一個 node.js 後端指令碼,所以我給它一個 localhost:3000,然後將其轉譯為 https://quic…(類似 ngrok 連結的東西),我將其傳遞給回呼 URL,它與新的 token 金鑰一起運作。但當我執行它時,我遇到了同樣的問題。當我發佈工作流程或執行工作流程時,一切都會崩潰
啊,問題就在這裡。ngrok 根本不需要後端腳本。它只是把你機器上的一個連接埠對外提供一個公開網址。你把它指向在 3000 執行的 Node 腳本,所以 Meta 是在跟那個腳本通話,而不是跟 n8n 通話,n8n 根本看不到任何東西。
改成直接指向 n8n。n8n 執行在 5678,所以:
ngrok http 5678
沒有腳本,3000 上什麼都沒有,就這樣。
然後 n8n 需要知道自己的公開位址,否則它會一直產生 localhost 網址。停止 n8n,然後在同一個終端機(cmd)執行:
set WEBHOOK_URL=https://your-id.ngrok-free.app
n8n start
現在打開 WhatsApp Trigger 節點。它顯示的 webhook 網址應該是以你的 ngrok 位址開頭,而不是 localhost。那個確切的網址就是要放進 Meta 作為回調網址的內容,再加上 n8n 在那裡顯示的驗證碼。
最後一步,啟動工作流程而不是按 Execute。Execute 只會短暫地監聽然後放棄,那就是你看到的當機。
嗨 @Myth_Xenodo 歡迎!
n8n 會自動註冊 Meta webhook 訂閱。WhatsApp Trigger 會使用您的應用程式 ID 和應用程式密鑰呼叫 Graph API,傳送自己的回調 URL,並使用 trigger 節點的內部 ID 作為驗證令牌,這是一個你看不到或無法在任何地方輸入的值。你在 WhatsApp > Configuration 下手動填入的回調 URL 和令牌永遠無法匹配,它留下的訂閱會阻止 n8n 寫入自己的訂閱,所以 Meta 返回「Invalid parameter」。
在 Meta 中,刪除現有的 webhook 訂閱,並將回調 URL 和驗證令牌欄位留空。然後在 n8n 中發佈工作流程,讓它註冊這些訂閱。
一個應用程式一次只能擁有一個 WhatsApp webhook,n8n 的測試和生產 URL 會相互覆蓋,所以測試已發佈的工作流程會無聲地中止其生產流量。
好的,先生,但首先我會告訴您我是怎麼做的。
我建立了應用程式,我必須在生產環境設定中訂閱 webhook。
然後進入圖表 API 探索工具
所以我真的不明白您的意思,在 n8n 中發佈工作流程並讓它們自動註冊????
那是什麼,像是自動填充的魔法嗎?我也發佈了工作流程,但什麼都沒有發生。完全沒有運行。我安裝了最新版本的 n8n,但一切都無法正常運作。文檔或教學中的任何內容都不適用於我的情況,它們要麼已過時,要麼 Facebook 已經更新了。
公平的問題,讓我解釋一下我的意思,而不是只是告訴你點擊東西。
當你用 WhatsApp Trigger 啟動工作流程時,n8n 會使用你認證中的 App ID 和 App Secret 自己呼叫 Meta 的 Graph API,並要求 Meta 將你的應用程式訂閱到該回調 URL。Meta 隨後會使用一個挑戰號碼回呼該 URL,並期望你的 n8n 將其回顯。這個握手過程是為什麼該節點需要 App ID 和 Secret 而不是只需要存取令牌的原因,也是為什麼你收到的錯誤是 Meta 錯誤代碼而不是 n8n 錯誤代碼的原因。
所以這不是魔法,但這意味著 n8n 和你的手動 Graph API Explorer 設定都試圖配置同一件事,這可能會相互衝突。
有兩件事可以告訴我們這實際上卡在哪裡。
首先,直接在瀏覽器中開啟你的 ngrok https URL。你應該會看到 n8n 編輯器載入。如果你看到其他內容,比如 ngrok 錯誤頁面、空白頁面或該 Node 指令碼的輸出,那麼隧道沒有到達 n8n,在解決此問題之前什麼都無法運作。這只需要十秒鐘,可以排除一半的可能性。
其次,當你收到「不良參數」時,點擊錯誤上的「顯示詳情」並貼上完整文本。該訊息包括 Meta 從你的 URL 實際收到的內容。如果它以 <!DOCTYPE html> 開頭,那麼 n8n 以外的東西回應了挑戰,這將準確告訴我們哪裡出了問題。
關於發布後沒有任何反應,那部分是正常的。活躍的 WhatsApp trigger 保持沉默,在真實訊息到達之前不會顯示任何活動。它看起來不會像在做任何事情。
好吧,讓我一步步來,因為我一直在重複運行同樣的錯誤。
所以在我的生產設置中,CallURL 和驗證令牌以及 webhook 訂閱。它們全都是空的,現在都關閉了。
你告訴我,如果我只是添加應用密鑰和應用 ID,然後發布工作流程,它就會工作…但現在不行??你能同時看到這兩個錯誤嗎?
所以我的錯誤在哪裡,我找不到?
工作流程無法發布
節點「WhatsApp Trigger」中出錯:
請求錯誤 - 請檢查您的參數
Show Details
無效的參數
首先,讓我澄清一下,因為我之前解釋得不好。n8n 為你註冊 webhook 並不會移除隧道。n8n 只能將它認為自己擁有的地址提供給 Meta。如果 n8n 不知道自己的公開地址,它會向 Meta 發送類似 http://localhost:5678/webhook/... 的內容,而 Meta 會拒絕,因為它無法連接到 localhost 地址。Meta 表達這一點的方式就是「無效參數」。
所以隧道仍然是必需的。差別在於你不需要自己將任何內容貼到 Meta 中,n8n 會在發布時為你完成。
以下是能確認這一點的檢查。打開你的 WhatsApp Trigger 節點,查看面板頂部附近顯示的 webhook URL。它以什麼開頭?
http://localhost:5678/... 或 127.0.0.1 → 那就是你的問題所在。n8n 向 Meta 提供了一個它無法連接的地址。
https://something.ngrok-free.app/... → 那就是其他原因,我們進一步檢查。
如果顯示的是 localhost,修正方法是:
- 執行
ngrok http 5678 並複製它提供給你的 https 地址
- 停止 n8n
- 使用該地址啟動它,在命令行中:
set WEBHOOK_URL=https://your-id.ngrok-free.app 然後 n8n start
- 重新打開 trigger 節點,URL 現在應該以你的 ngrok 地址開頭
- 然後發布
並將 Meta 中的「回調 URL」和「驗證令牌」框保留為空,如同現在一樣。這是正確的。n8n 在發布成功時會自己填入這些。
告訴我那個 webhook URL 說的是什麼,我們從那裡繼續。
按照你所說的,我遵循了指示。

但我仍然收到相同的錯誤
Stopping n8n...
PS C:\PythonExploration\Automations> ngrok http 5678
PS C:\PythonExploration\Automations> set WEBHOOK_URL=https://quiver-comprised-stack.ngrok-free.dev/
PS C:\PythonExploration\Automations> n8n start
...
n8n 已準備就緒,位址 ::,埠號 5678
n8n Task Broker 已準備就緒,位址 127.0.0.1,埠號 5679
無法在內部模式下啟動 Python 工作執行器。因為此系統缺少其虛擬環境。在內部模式下啟動 Python 執行器僅用於偵錯,不建議用於生產環境。鼓勵使用者以外部模式部署。請參閱:https://docs.n8n.io/hosting/configuration/task-runners/#setting-up-external-mode
你的 n8n 設定存在棄用相關問題。請採取建議的操作以更新你的配置:
- N8N_UNVERIFIED_PACKAGES_ENABLED -> 此變數的預設值將在未來版本中變更為 `false`。明確將其設定為 `true` 以繼續安裝未驗證的社群套件。
- N8N_RUNNERS_TASK_TIMEOUT -> 此變數的預設值將在未來版本中從 300(5 分鐘)減少到 60(1 分鐘)。明確設定它以保留你目前的工作逾時。
- N8N_COMPRESSION_NODE_MAX_DECOMPRESSED_SIZE_BYTES -> 此變數的預設值將在未來版本中從 2 GiB 減少到 256 MiB。明確設定它以保留你目前的限制。
- N8N_COMPRESSION_NODE_MAX_ZIP_ENTRIES -> 此變數的預設值將在未來版本中從 5000 減少到 1000。明確設定它以保留你目前的限制。
- 在容器外執行 n8n 已棄用。未來版本將要求透過官方 Docker 映像執行 n8n。請參閱 https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker
[license SDK] 初始化時跳過續訂:未初始化授權憑證
已登錄執行器「JS Task Runner」(QovVV5W-2UjoryQx0WKMt)
執行個體已登錄
發現 4 個叢集檢查
版本:2.33.7
正在建置工作流程相依性索引...
啟動作用中的工作流程:
完成工作流程相依性索引的建置。已處理 0 個草稿工作流程,0 個已發佈工作流程。
已啟動工作流程「我的工作流程」(ID: xHV9LUdRCSpoKIUA)
編輯器現在可透過以下網址存取:
http://localhost:5678
按「o」在瀏覽器中開啟。
超過 6000 毫秒的逾時
AxiosError: 超過 6000 毫秒的逾時
at createTimeoutError (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\@n8n\backend-network\node_modules\axios\dist\node\axios.cjs:3562:14)
at RedirectableRequest.handleTimeout (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\@n8n\backend-network\node_modules\axios\dist\node\axios.cjs:4080:15)
at RedirectableRequest.emit (node:events:509:28)
at Timeout._onTimeout (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\follow-redirects\index.js:233:12)
at listOnTimeout (node:internal/timers:605:17)
at processTimers (node:internal/timers:541:7)
at Axios.request (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\@n8n\backend-network\node_modules\axios\dist\node\axios.cjs:5427:41)
at processTicksAndRejections (node:internal/process/task_queues:104:5)
at invokeAxios (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\@n8n\backend-network\src\http\axios\invoke.ts:15:10)
at httpRequest (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\@n8n\backend-network\src\http\axios\request.ts:211:5)
at Object.request (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\node_modules\@n8n\backend-network\src\http\outbound-http.ts:188:12)
at paginatedRequest (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\src\utils\strapi-utils.ts:87:15)
at McpRegistryApiClient.fetchServersMetadata (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\src\modules\mcp-registry\registry\mcp-registry-api.client.ts:31:10)
at McpRegistryService.refreshUpdatedServers (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\src\modules\mcp-registry\registry\mcp-registry.service.ts:184:20)
at McpRegistryService.refreshFromApiInternal (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\src\modules\mcp-registry\registry\mcp-registry.service.ts:157:20)
at McpRegistryService.refreshFromApi (C:\Users\Julle myth\AppData\Roaming\npm\node_modules\n8n\src\modules\mcp-registry\registry\mcp-registry.service.ts:144:4)
從 Strapi API (https://api.n8n.io/api/mcp-servers) 擷取錯誤:超過 6000 毫秒的逾時
無法重新整理 MCP 登錄
這是 ngrok
找到了,這是我的錯。我給你的是 cmd 語法,但你用的是 PowerShell。
看看你自己的日誌:
PS C:\PythonExploration\Automations> set WEBHOOK_URL=https://quiver-comprised-stack.ngrok-free.dev/
開頭的 PS 表示 PowerShell,而 PowerShell 不能理解 set VAR=value。在 PowerShell 中,set 是其他東西的別名,所以變數從未被真正設定。n8n 啟動時仍然認為它在 localhost 上運行,給了 Meta 一個 localhost 回調 URL,Meta 拒絕了它。這就是你的「無效參數」問題。
在 PowerShell 中應該是這樣:
$env:WEBHOOK_URL="https://quiver-comprised-stack.ngrok-free.dev"
n8n start
也去掉尾部的斜杠,否則 webhook 路徑中可能會出現雙斜杠。
在啟動 n8n 之前,可以運行以下命令來確認它是否被設定:
echo $env:WEBHOOK_URL
如果它列印出你的 ngrok 地址,你就沒問題了。然後啟動 n8n,打開 WhatsApp Trigger 節點,webhook URL 應該最終顯示你的 ngrok 域名而不是 localhost。之後發佈。
有一點值得說的是,你的隧道沒問題。ngrok 窗口顯示請求正在命中 n8n 並返回 200,所以那邊一直都在正常工作。只是 n8n 不知道它自己的公開地址。
這有幫助嗎?