了解SMSHook

最新更新:2023-04-10

SMSHook是客戶接收其發送情況的渠道。用戶將郵件請求發送給 EngageLab 之後, EngageLab 會把「請求結果」同步返回給用戶, 而郵件的「發送結果」和「其他事件結果」是通過 SMSHook 異步返回給用戶的。

SMSHook 機制

  • EngageLab 為客戶提供了一些郵件事件, 客戶可以選擇關注某些事件
  • 當某事件發生, 就會觸發 EngageLab 向客戶設置的 URL 發送數據 ( POST )
  • EngageLab推送的數據類型:"Content-Type: application/json"
  • 客戶收到數據, 解析出事件和數據, 你需要在 3s 內返回HTTP Status Code 200, 否則, EngageLab 將會重發該條消息.

使用方法

  • 用戶自行編寫 HTTP 服務, 使之能夠處理相應的事件, 解析相關數據, 並開放出相應 URL
  • 用戶在 EngageLab 的 SMSHook 中選擇關注的事件, 配置接收數據的 URL

簽名驗證

為了確保消息的來源身份是 EngageLab, 你可以選擇對 POST 數據的來源進行安全認證. ( 不驗證, 直接解析 POST 的數據也可以 ). 安全認證的方法如下:

  • 通過【發送設置】-【SMSHook】獲取 APP SECRET
  • 解析出 Header中的 X-SMSHook-Timestamp
  • 解析出Header中的 X-SMSHook-AppKey
  • 解析出Header中的 X-SMSHook-Signature
  • 使用 md5(timestamp+appkey+secret)生成簽名 signature, 與 X-SMSHook-Signature 進行比較

應答機制

開發者服務接收到 EngageLab 的回調後,需要在3秒內按下述要求進行應答

接收成功:HTTP應答狀態碼需返回200或者204,無需返回應答報文.

接收失敗:HTTP應答狀態碼需返回5XX或者4XX,同時需返回應答報文,格式如下:

{"code":2002,“message”:"失敗"}

字段 類型 必選/可選 描述
code int 可選 錯誤碼
message string 可選 錯誤詳細信息

重試機制

如果遇到 URL 訪問錯誤或超時, EngageLab 最多會重試 7 次. 每次重試的時間間隔最快為 3min, 10min, 30min, 1h, 6h, 12h, 24h. 即在消息丟失前, 你有足夠的時間來修復 URL.

如果超過重試次數,EngageLab 將會把消息丟棄.

每次事件處理, 數據解析, 你需要在 3s 內返回「接收成功的應答」, 否則, EngageLab 將會重發該條消息.

在文档中心打开