了解 WebHook
最新更新:2023-03-14
WebHook 是客户接收其发送情况的渠道。用户将邮件请求发送给 EngageLab 之后,EngageLab 会把「请求结果」同步返回给用户,而邮件的「发送结果」和「其他事件结果」是通过 WebHook 异步返回给用户的。
WebHook 机制
- EngageLab 为客户提供了一些邮件事件,客户可以选择关注某些事件
- 当某事件发生,就会触发 EngageLab 向客户设置的 URL 发送数据 ( POST )
- EngageLab 推送的数据类型:"Content-Type: application/json"
- 客户收到数据,解析出事件和数据,你需要在 3s 内返回 HTTP Status Code 200, 否则,EngageLab 将会重发该条消息。
使用方法
- 用户自行编写 HTTP 服务,使之能够处理相应的事件,解析相关数据,并开放出相应 URL
- 用户在 EngageLab 的
WebHook
中选择关注的事件,配置接收数据的 URL
签名验证
为了确保消息的来源身份是 EngageLab, 你可以选择对 POST 数据的来源进行安全认证。( 不验证,直接解析 POST 的数据也可以 )。
安全认证的方法如下:
- 通过
【发送设置】-【WebHook】
获取APP KEY
- 解析出 Header中的
X-WebHook-Timestamp
- 解析出Header中的
X-WebHook-AppKey
- 解析出Header中的
X-WebHook-Signature
- 使用 md5(X-WebHook-Timestamp+X-WebHook-AppKey+ APP KEY)生成签名
signature
, 与X-WebHook-Signature
进行比较
应答机制
开发者服务接收到 EngageLab 的回调后,需要在 3 秒内按下述要求进行应答
接收成功:HTTP 应答状态码需返回 200 或者 204, 无需返回应答报文。
接收失败:HTTP 应答状态码需返回 5XX 或者 4XX, 同时需返回应答报文,格式如下:
{"code":2002,“message”:"失败"}
{"code":2002,“message”:"失败"}
此代码块在浮窗中显示
字段 | 类型 | 必选/可选 | 描述 |
---|---|---|---|
code | int | 可选 | 错误码 |
message | string | 可选 | 错误详细信息 |
重试机制
如果遇到 URL 访问错误或超时,EngageLab 最多会重试 7 次。每次重试的时间间隔最快为 3min, 10min, 30min, 1h, 6h, 12h, 24h。 即在消息丢失前,你有足够的时间来修复 URL。
如果超过重试次数,EngageLab 将会把消息丢弃。
每次事件处理,数据解析,你需要在 3s 内返回「接收成功的应答」, 否则,EngageLab 将会重发该条消息。