了解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 将会重发该条消息.

在文档中心打开