了解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 將會重發該條消息.