需要幫助:WhatsApp 觸發器在收到 WA 訊息時未觸發,但通過 Meta Webhook 訊息測試時卻能觸發

大家好,我試著從我的 WhatsApp 應用程式觸發 WhatsApp 訊息 - 當我從個人 WhatsApp 號碼傳送訊息到測試號碼時,n8n 工作流程沒有觸發

不過當我在 Meta 網頁鉤子頁面上按下訊息工作流程的測試按鈕時,工作流程就會觸發 - 我找不到按下 Meta 網頁鉤子訊息測試按鈕時的 API 呼叫和傳送訊息到測試號碼時的 API 呼叫之間的差異 - 有人請幫忙

PS - 網頁鉤子回呼 URL 和所有設定都正確,當我按下下面的按鈕時 n8n 工作流程運作正常,不過當我傳送訊息到測試號碼時它沒有回應

Meta webhook 測試按鈕和實際的 WhatsApp 訊息走不同的路徑——這是這種分裂行為的典型原因。以下是需要檢查的幾項內容:

1. Webhook 欄位訂閱
在 Meta for Developers → WhatsApp → Configuration 中,確保在 Webhook Fields 下勾選了 messages 欄位。如果未訂閱,即使測試按鈕可行(它會繞過訂閱篩選),實際訊息也不會到達您的 webhook。

2. 電話號碼 ID 匹配
在您的 n8n WhatsApp Trigger 節點中,驗證電話號碼 ID 是否與您的測試號碼相關聯的 ID 相符。不匹配會導致實際訊息被無聲地丟棄。

3. 開發模式vs實時模式
如果您的 Meta 應用仍處於開發模式,只有在 Meta Business Suite 中新增為測試號碼的號碼才能透過實際訊息觸發 webhook。前往應用程式設定 → 基本資訊並檢查您的應用程式模式。

4. 快速的完整性檢查
在您的 n8n 工作流程上,在工作流程處於活動狀態時按一下「監聽測試事件」,然後傳送真實的 WhatsApp 訊息。如果 n8n 執行日誌中根本沒有任何內容到達,問題在 Meta 那一側(訂閱或應用程式模式)。如果確實到達但節點未觸發,則為節點設定問題。

很好的重點!我再補充兩個常見的 n8n 特定陷阱,會導致這個確切的「測試成功,真實訊息失敗」情況:

1. 測試與生產 URL 不匹配 在 n8n 中,你的 webhook 有兩個不同的 URL:一個用於測試(.../webhook-test/...),一個用於生產(.../webhook/...)。檢查你貼到 Meta 開發者控制台的確切 URL 是哪一個。

  • 如果你貼的是 webhook-test URL,真實訊息只有當你在 n8n UI 中主動點擊「監聽測試事件」時才會被記錄。一旦工作流程只是「啟用」狀態,它會忽略真實訊息。

  • 如果你貼的是 webhook(生產)URL,點擊「監聽測試事件」會完全忽略傳入的真實訊息。確保你在 Meta 中的 URL 與你正在嘗試測試的確切狀態相符。

2. Meta Webhook 傳遞日誌 前往你的 Meta 應用程式儀表板 → Webhooks。向下捲動至底部,找到**「最近的錯誤」**(或 Webhook 傳遞日誌)部分。如果 Meta 成功傳送真實訊息,但你的 n8n 執行個體傳回 500 錯誤、逾時或拒絕酬載結構,Meta 會在該處記錄確切的 HTTP 回應代碼。這能立即告訴你問題是 Meta 未傳送,還是 n8n 拒絕連線。

嗨,感謝你花時間回覆這個問題 - 我重新檢查了你要求的選項,它們似乎都已配置好了

  1. 我相信電話號碼 ID 是在發送訊息觸發器中配置的 - 如同在 WhatsApp 訊息觸發器節點中,我只看到配置認證資訊的選項,我將客戶端 ID = 應用程式 ID、密鑰 ID = 應用程式密鑰 - 如果我理解有誤,請更正我
  2. 應用程式處於開發模式,我點擊執行工作流程並發送訊息,但節點仍然沒有觸發
  3. 似乎是 Meta 的問題,因為我在 n8n 中沒有收到任何內容

@n8n_Sensei 嗨,感謝你抽空回覆這個問題。

  1. 我已貼上測試 URL,並在工作流程仍在監聽觸發器時嘗試發送訊息,但我在 n8n 中看不到任何內容

  2. 這裡在 webhook 日誌中,我可以看到訊息已被記錄,但是它並未傳遞到我的 n8n 節點

根據你在貼文中提供的資訊,我很難判斷可能出了什麼問題。如果你願意,可以把更多細節寄到我的信箱,我會親自幫你一把。祝好!!

信箱:lautaro.automation@gmail.com

@aditya_bansod
訊息僅在 Meta 的 webhook 事件日誌中顯示表示 Meta 已收到。傳遞會進到你的 WhatsApp Business Account 訂閱的應用程式,而在新建立的應用程式上,通常是 Meta 自己的「WA DevX Webhook Events 1P App」而不是你的應用程式,所以面板測試會成功,但實際訊息卻會到其他地方。開啟 Meta 的 Graph API Explorer,並將端點設定為你的 WABA ID(WhatsApp > API Setup):

<WABA_ID>/subscribed_apps

以 GET 方式傳送,查看回傳的應用程式名稱。如果不是你的應用程式,將方法改為 POST 並傳送,然後再次執行 GET 以確認你的應用程式現在已列出。訊息會在之後立即開始抵達。
請參閱以下內容:

@Anshul_Namdev subscribed_apps fix 在這裡非常有用。如你之前提到的,建立新應用程式不會自動將 WABA 訂閱從 Meta 的預設開發應用程式移動。首先執行 GET 命令以確認它,然後執行 POST 命令來移動應用程式就可以解決問題,應該在之後立即開始運作。

嗨,有一點提醒:建議將公開疑難排解保持在公開,而不是改為使用個人電子郵件。公開討論串允許面臨相同問題的人員調查問題,這是保持應用程式解決問題對公眾安全並為每個人提供逐步指南的最佳方式。

你好,我遇到了和你一樣的問題。你成功解決了嗎?

我所有的訂閱都用正確的 WABA_ID 完成了。我的 Meta 應用已發佈,我的 n8n(雲端)工作流程也已正確發佈。我在 Meta 上的 callback_url 確實是生產環境的網址。

  1. 如果我在 n8n 編輯器中打開工作流程,然後在發送 WhatsApp 訊息到該號碼之前點擊**「執行工作流程」**,請求確實會到達,工作流程會正常觸發。
  2. 如果我沒有點擊「執行工作流程」(正常/生產環境中的預期行為),什麼都不會發生:工作流程永遠不會自動觸發。
  3. 相比之下,使用 Meta 提供的測試號碼(App Dashboard 的預設 webhook),每次都能正確接收訊息。

是否有我可能遺漏的設定?

Hi @Elia_Levy!您在點擊「Execute Workflow」時成功運作,但在正常生產環境中失敗的原因幾乎總是由於 Meta 開發者儀表板中的 **測試與生產 Webhook URL 不匹配**

以下是完全修復的 2 個步驟:

### 1. 檢查 Meta 應用儀表板中的 Webhook URL 路徑

當您在 n8n 編輯器中點擊「Execute Workflow」時,n8n 會監聽 **測試 Webhook URL**

`https://your-instance.n8n.cloud/webhook-test/your-uuid\`

在正常生產環境運作中(當您不點擊「Execute Workflow」時),Meta 必須將事件發送到 **生產 Webhook URL**

`https://your-instance.n8n.cloud/webhook/your-uuid\` *(注意 `/webhook/` 而不是 `/webhook-test/`)*

* 前往 **Meta 開發者入口網站 → WhatsApp → 設定 → 編輯 Webhook**

* 確保 **回調 URL** 指向 `/webhook/…` 而非 `/webhook-test/…`。

### 2. 確保工作流程主動開關為開啟

在 n8n 中,生產 Webhook 只有在工作流程明確設為 **啟用** 時才會監聽:

* 將 n8n 工作流程畫布右上角的 **啟用** 開關切換為 **開啟**

* 如果工作流程處於停用狀態,n8n 會無聲地丟棄來自 Meta 的傳入生產 webhook 呼叫,而不會觸發。

### 3. 驗證事件訂閱

在 Meta Webhook 設定下,確保您已在 **WhatsApp 商業帳戶** 事件下訂閱了 `messages`,且您的 Meta 應用程式已透過 `/{WABA_ID}/subscribed_apps` 連結至您的 WABA ID,如 @Anshul_Namdev 所述。

一旦 Meta 擁有 `/webhook/`(生產)URL 且您的 n8n 工作流程開關為 **啟用**,傳入的 WhatsApp 訊息將自動觸發 24/7,無需保持編輯器開啟!

親愛的朋友,
我花了3小時試圖解決這個問題,但一直無法解決。

以下是對我有效的步驟,完全符合你的情況。

  1. 進入以下URL business.facebook.com/wa/manage/phone-numbers,你的測試號碼應該會出現,點擊該號碼。
  2. 進入號碼後,檢查URL,你會看到一個asset_id=參數,複製該號碼。
  3. 在另一個標籤頁中,進入Graph API Explorer (https://developers.facebook.com/tools/explorer/),選擇你的應用程式,確保已選擇用戶識別碼,驗證whatsapp_business_management權限已新增,然後選擇POST方法,在URL中,在/v26.0之後刪除那些值並新增你的asset_id/subscribed_apps(例如:v26.0/2548428515454815/subscribed_apps並執行。
  4. 回應應該是{“success”: true}。
  5. 在n8n中測試,應該會有效。

@aditya_bansod — 我認為答案已經在你的第一篇文章中了,
就在兩行沒人注意到的地方。

「當我從我的個人 WhatsApp 號碼發送訊息時」
「應用程式處於開發模式」

這個組合就是問題所在。

在開發模式中,Meta 只會對明確添加為測試接收者的號碼
觸發 webhook 事件。你的個人號碼不是其中之一,所以 Meta
接受並傳遞訊息,但永遠不會發送 webhook 事件。n8n 收不到
任何東西,因為根本沒有發送任何東西。

Meta 測試按鈕之所以有效,是因為它直接發送到你的 URL
並完全跳過訂閱層。這就是為什麼這兩種方式表現不同 —
不是有效負載中的差異,而是兩條不同的代碼路徑。

按順序修復:

  1. Meta 儀表板 > WhatsApp > API 設定 > 「To」欄位 > 管理
    電話號碼清單。添加你的個人號碼。它會通過短信收到
    驗證碼。

  2. 再從該號碼發送一次。webhook 應該會觸發。

在你做任何更改之前,有兩件事可以確認這一點:

Meta 應用程式儀表板 > Webhooks > 滾動到傳遞嘗試。如果
對真實訊息根本沒有任何嘗試 — 不是失敗的嘗試,根本
沒有 — 那麼 Meta 從未發送,這排除了 n8n 端的所有內容。
這正是你在這裡期望的情況。

無論如何都值得了解的另一點:Meta 永遠不會為從擁有 WABA
的同一號碼發送的訊息發送 webhook 事件。如果你曾經通過
將訊息發送給業務號碼本身來測試,你會得到沉默,看起來
完全與這個問題相同。

還有一個,在你上線時要記住的:

開發模式將你限制在五個測試接收者。移至實時模式需要
業務驗證,這需要數天而不是數小時 — 如果這即將投入
生產,值得現在就開始,因為在其他所有東西都正常工作後
它會成為阻礙。

Meta 測試證明端點可達,但不表示 WhatsApp 訂閱已完成。檢查應用程式是否已訂閱訊息欄位、電話號碼是否屬於該應用程式,以及生產 webhook URL 是否與活躍的 n8n 工作流程相符。