提交预警通知后,code=2只代表受理成功。短信是否送达、语音电话是否被接听、通话时长多少,这些结果需要通过回调(推送通知)或主动查询来获取。理解回调机制,才能形成提交、送达、接听的完整闭环。本文介绍如何接收并解析互亿无线预警通知的回调数据…
提交预警通知后,code=2只代表受理成功。短信是否送达、语音电话是否被接听、通话时长多少,这些结果需要通过回调(推送通知)或主动查询来获取。理解回调机制,才能形成提交、送达、接听的完整闭环。本文介绍如何接收并解析互亿无线预警通知的回调数据。
为什么需要回调
告警通知的价值在于确认人真的收到了。尤其是语音预警,值班人员是否接听、听了几秒,直接关系到是否需要升级通知。回调就是把这些结果主动推送给业务方。
- 短信回调:通知送达状态,成功或失败;
- 语音回调:通知是否接听、通话时长;
- 通过流水号smsid与提交时关联,定位到具体告警;
- 通话时长为0通常表示未接听,需要触发重拨或升级。
回调接收服务端配置
在互亿无线控制台配置回调地址,服务端把状态数据POST到该URL。业务方需提供一个公网可访问的HTTP接口。
- 在控制台填写回调URL,例如https://yourdomain.com/notify/callback;
- 服务端接收POST参数,解析流水号与状态;
- 根据流水号关联到对应告警记录;
- 若语音未接听(通话时长为0),触发重拨或升级到上级;
- 返回固定响应告知服务端已接收。
回调解析代码示例(Python)
下面用一个简单的HTTP处理逻辑演示如何解析回调参数:
def handle_callback(params):
smsid = params.get("smsid") # 流水号
status = params.get("status") # 送达状态
duration = params.get("voicetime") # 通话时长(秒)
if status == "成功":
log.info(f"告警{smsid}已送达")
if duration and int(duration) == 0:
# 语音未接听,触发升级通知
escalate(params.get("mobile"))
return "success"
实际字段以控制台回调文档为准,建议在联调时先打印原始参数对照。
回调接入注意事项
- 回调URL必须公网可达,且能快速返回,避免服务端重试堆积;
- 用流水号做幂等处理,同一回调可能重复推送;
- 语音通话时长为0时按升级策略处理,确保告警有人接;
- 回调数据注意鉴权,不要暴露未验证的回调接口。
回调常见字段说明
服务端把发送状态POST到业务方配置的URL时,会携带一组字段。联调时建议先打印原始参数,再按业务需要提取。常见字段含义如下:
| 字段 | 说明 |
|---|---|
| smsid | 提交时返回的流水号,用于关联具体告警记录 |
| mobile | 接收手机号 |
| status | 短信送达状态或语音处理结果 |
| voicetime | 语音通话时长,单位秒,为0通常表示未接听 |
| receiptTime | 状态回调时间 |
回调接收的健壮性处理
回调可能重复推送,业务方必须用smsid做幂等处理,同一流水号的同一状态只处理一次。回调接口要在数秒内返回固定响应,否则服务端会按策略重试,造成重复通知。生产环境建议先把原始参数落库,再异步处理升级逻辑,避免阻塞回调响应。
from flask import Flask, request
app = Flask(__name__)
@app.route("/notify/callback", methods=["POST"])
def callback():
p = request.form
smsid = p.get("smsid")
status = p.get("status")
duration = p.get("voicetime")
if already_processed(smsid, status): # 幂等
return "success"
mark_processed(smsid, status)
if duration and int(duration) == 0:
escalate(p.get("mobile")) # 未接听,升级
return "success"
回调接入常见问题
- 回调URL必须公网可达,本地开发可用内网穿透工具临时联调;
- 同一回调可能重复推送,务必按smsid幂等;
- 回调接口不要做耗时操作,先响应再异步处理;
- 建议对回调来源做校验,避免伪造请求触发升级通知。
完整字段以控制台回调文档为准。前往注册免费试用配置回调地址开始联调。
打通回调,预警通知才形成闭环。前往注册免费试用配置回调地址开始联调。