问题排查
发送结果与预期不符时,请查看本页面。先按症状查看需要确认的事项,再到下方了解背后的运作方式。如果原因在 API 一侧,请与开发团队一起查看 API 对接指南。
消息无法保存
Section titled “消息无法保存”请依次对照保存被拒绝的情况表格进行确认。
值以空白发送
Section titled “值以空白发送”- 消息中写的字段名是否与响应完全一致(包括大小写)
- 如果是通过 POST 接收 JSON 的 API,是否写了
:content_type application/json - 地址中填入的值是否因特殊字符而被破坏(
url_encode) - 复制粘贴地址时是否混入了看不见的空格
- 当时是否处于熔断状态
- API 是否满足 JSON 响应头、2xx 响应、2 秒、1MB 的条件(请开发团队确认)
收件人发送被记为失败
Section titled “收件人发送被记为失败”- 认证信息的名称、方式、允许的域名是否与调用地址匹配
- 是否执行了
{% abort_message %}(失败原因为”个性化语法中止”) - 发送时是否出现了 Liquid 渲染错误
请求完全没有到达您的服务器
Section titled “请求完全没有到达您的服务器”- 当时是否处于熔断状态
- 地址是否可以从外部访问,是否使用标准端口(80 · 443)
:headers是否为 JSON 对象格式- 消息是否真的已发送(不是保存被拒绝或发送失败)
被防火墙拦截(403 等)
Section titled “被防火墙拦截(403 等)”- 是否已将 FlareLane 的发出 IP 加入允许列表
- 是否拦截了
User-Agent: FlareLane-ConnectedContent/1.0的请求
API 调用次数多于或少于预期
Section titled “API 调用次数多于或少于预期”- 有多少个指令就调用多少次,每个字段分别计算。
- 处理过程中因错误重新处理时,可能会对同一收件人再次调用。
- 响应复用(缓存)可能会减少调用次数。复用标准请查看设置响应复用。
大多数情况下会以空白发送,但也有完全不向该收件人发送的情况。
| 情况 | 结果 |
|---|---|
| API 调用失败 (超过 2 秒、非 2xx 响应、超过 1MB、JSON 格式错误、无法访问的地址、处于熔断状态) | 留空白发送 |
| 没有认证信息,或方式、允许的域名不匹配 | 该收件人发送失败 SMS · Kakao 失败原因:“连接内容认证信息错误” |
执行了 {% abort_message %} | 不向该收件人发送 · 计为发送失败,不收费 SMS · Kakao 失败原因:“个性化语法中止” |
| 发送时出现 Liquid 渲染错误 | 该收件人发送失败 |
如果 API 持续失败,FlareLane 会暂时停止调用该 API 服务器,并以空白发送。这样做是为了帮助故障中的服务器恢复,同时避免每次调用都让发送延迟 2 秒。提前用 default: 写好替代文案即可应对这种情况。
| 区分 | 内容 |
|---|---|
| 判断单位 | 按项目和 API 服务器(域名)分别判断 |
| 熔断条件 | 1 分钟内失败超过 100 次,且失败率超过 90% 时 |
| 计为失败的情况 | 超过 2 秒或连接失败,以及 408 · 429 · 502 · 503 · 504 · 529 响应 404 · 500 等其他错误说明服务器仍在运行,因此不计入 |
| 熔断时间 | 1 分钟 |
| 恢复 | 1 分钟后进行 3 次试探调用,全部成功则恢复,失败则再熔断 1 分钟 |