easyCoexistence
登入開始免費試用
Meta Tech Provider

使用 Python 傳送及接收 WhatsApp 訊息

接收方式是在您的 Web 架構中建立路由,回應 Meta 的驗證 GET 並接收 POST。傳送方式是向 Cloud API 發出 HTTPS 請求,附上號碼的電話號碼 ID 及存取權杖。不提供我們的 SDK,也無需安裝任何軟件。

2 handlers

用於 Meta 驗證的 GET,以及用於事件的 POST,這就是接收部分。

24 hours

客戶發出訊息後,可傳送自由文字的 24 小時時限。

131047

在該時限外傳送自由文字時返回的錯誤。

如何在 Python 中接收訊息?

在您現有的任何架構中,於同一路由設定兩個處理程序。

GET 處理程序回應 Meta 的驗證。它從查詢字串讀取 hub.mode、hub.verify_token 及 hub.challenge,核對存取權杖是否與您自己的相符,然後以原始本文返回 challenge。在這裏返回 JSON 是最常見的錯誤,而且會無聲失敗。

POST 處理程序接收事件。請迅速返回 200,之後才處理工作,因為 Meta 會將緩慢回應視為失敗並重試,這可能令您處理同一則訊息兩次。請將訊息加入佇列,或交給背景工作,而不是直接在處理程序中執行。

訊息會附帶 wamid 訊息 ID。從一開始便按此 ID 去重是值得的,因為重試是正常情況,而非例外。

如何傳送?

向電話號碼 ID 對應的 Cloud API `messages` 端點發出一次 POST,並附上 Bearer 存取權杖。

兩項資料都來自連接:控制台會顯示它們;如果您希望由助理代為取得,get_api_credentials 也會返回它們。這個請求沒有任何部分專屬於我們,因此任何 HTTP 程式庫都可使用,而請求格式與 Meta 自己的文件完全一致。

時限會改變本文內容。在客戶最後一則訊息後 24 小時內,您可傳送 `text` 物件。超過時限,則須傳送 `template` 物件,指定已獲批准的範本及其語言。只認識第一種格式的客戶端在測試時運作正常,卻會在第一則隔夜訊息時失敗,返回錯誤 131047。

生產環境的處理程序還需要甚麼?

有 3 件容易跳過、日後卻很難補上的事情。

按訊息 ID 去重,因為 Meta 會重試。如果公開提供服務,請驗證請求簽名,否則任何得知您 URL 的人都可以向它發出 POST。還要根據聯絡人上次發出訊息的時間分流,讓傳送路徑自動選擇文字或範本,無需人手決定。

這些都不需要架構或程式庫。它們只是集合、檢查及比較;在第一位客戶加入前完成設定,便能令整合安靜運行,而不是不斷向您發出警報。

常見錯誤

  • 在驗證 GET 中返回 JSON,而非原始 challenge 值。
  • 返回 200 前便直接處理。Meta 會重試緩慢回應,令您處理訊息兩次。
  • 未檢查時限便傳送自由文字。這會返回 131047,結果看似甚麼也沒有發生。
使用 EasyCoexistence 完成這項設定

在 easycoexistence.com 連接號碼,將 Webhook 目的地設為您的路由,然後從控制台讀取電話號碼 ID 及存取權杖。每個號碼每月 US$ 9 起,用量大時降至 US$ 2,首 7 天免費試用。

常見問題

有 Python SDK 嗎?

我們不提供,但您不需要。API 屬於 Meta,由 Meta 提供文件,任何 HTTP 程式庫都可存取。

應該使用哪個架構?

任何架構都可以。要求只是建立能回應 GET 及接收 POST 的路由,所有 Python Web 架構都能做到。

如何避免處理同一則訊息兩次?

按負載中的 wamid 訊息 ID 去重。Meta 設計上會重試,因此這是預期情況,而非邊緣案例。

團隊仍可使用手機嗎?

可以。Coexistence 讓 WhatsApp Business 應用程式繼續使用同一個號碼,而您的處理程序會以回音事件接收他們傳送的內容。

繼續閱讀

準備開始嗎?

幾分鐘內設定 WhatsApp Coexistence,而非幾個月。應用程式在手機上仍可繼續運作。

開始免費試用

驗證日期

使用 Python 傳送 WhatsApp 訊息