messages Webhook
messages 是承載客戶傳送至您號碼的所有內容的欄位,包括文字、媒體、回覆、反應及互動回應。對於路由的 Coexistence 號碼,訊息會由 Meta 直接送往您的端點,不會經過供應商。
負載包含甚麼
一次傳送可包含一則或多則訊息,每則都有寄件者、id 及類型。類型會決定其他哪些鍵存在。
- 寄件者的電話號碼,以及他們所寫入的號碼的電話號碼 id。
- wamid 訊息 id,去重功能以此為基礎。
- unix 時間戳記。
- 類型:text、image、audio、video、document、sticker、location、contacts、reaction、button 或 interactive。
- 對於媒體類型,會提供用來取得媒體的媒體 id,而非媒體本身的位元組。
為何路由號碼上的訊息不會到達我們
因為 override 會將此欄位連同 smb_message_echoes,移至您指定的任何目的地。
Meta 讓應用程式可以覆寫 WhatsApp Business Account 傳送 Webhook 的位置。我們會將此覆寫設定為您的 URL,令訊息路徑完全離開我們的基礎設施。我們這邊不會有副本、佇列或保留資料,因為訊息根本不會送達。
未設定目的地時,這些事件會回退至我們的預設回呼,處理程序會丟棄事件而不保存。這就是儲存聲明與程式碼路徑的差異:對話內容沒有地方可以流向。
正確確認訊息
在開始工作前傳回 200,而不是完成後才傳回。
Meta 會將緩慢回應視為失敗並重試,因此內聯處理的處理程序可能會多次看見同一則訊息。請立即回應,將負載放入佇列或背景工作,讓工作在請求之外進行。
在無伺服器環境中,這並非可選項。函式傳回後仍繼續工作,可能在回應的瞬間被凍結,因此確認與處理必須真正分開。
去重
始終根據 wamid 去重,因為重試是正常情況,而非例外。
同一則訊息可能因與您一方錯誤無關的原因到達兩次,例如回應緩慢、網絡逾時,或部署在傳送途中生效。儲存已見過的 id 並略過重複項只需數行程式碼,卻決定客戶會獲回覆一次還是兩次。
對於 Coexistence 號碼,這點更加重要,因為 smb_message_echoes 會經由相同路徑到達。若處理程序將每個事件都視為新事件,就會在團隊成員已回覆的訊息上再次回覆。
常見錯誤
- 在傳回 200 前先處理。Meta 會重試緩慢回應,令您處理同一則訊息兩次。
- 略過去重。重試是設計的一部分,不是罕見情況。
- 預期負載會包含媒體位元組。負載只會提供用來取得媒體的媒體 id。
EasyCoexistence 會將此欄位由 Meta 直接路由至您的端點,只保留監察所需的操作事件,因此對話內容完全沒有路徑進入我們的儲存空間。
常見問題
EasyCoexistence 會看到我客戶的訊息嗎?
不會。覆寫會將此欄位送往您的端點。任何到達我們回退回呼的內容都會被丟棄,不會保存。
一次請求可以收到多則訊息嗎?
可以。一次傳送可包含多則訊息,因此處理程序應逐一處理,而不是只讀取第一則。
如何取得媒體?
負載會提供媒體 id。使用該號碼的存取權杖取得 URL,然後下載。
smb_message_echoes 是甚麼?
這是承載團隊透過 WhatsApp Business 應用程式傳送內容的配套欄位。它只會存在於 Coexistence 號碼。
繼續閱讀
準備開始嗎?
幾分鐘內設定 WhatsApp Coexistence,而非幾個月。應用程式在手機上仍可繼續運作。
開始免費試用驗證日期