在服务器宕机、生产线停机、消防报警等紧急场景下,一条预警往往需要同时通知值班工程师、组长、主管甚至安全团队多人,并且每个人可能同时持有工作手机和备用手机两部设备。如果逐个人工拨打电话或手动发短信,不仅慢,还容易在慌乱中漏发。互亿无线预警通知…
在服务器宕机、生产线停机、消防报警等紧急场景下,一条预警往往需要同时通知值班工程师、组长、主管甚至安全团队多人,并且每个人可能同时持有工作手机和备用手机两部设备。如果逐个人工拨打电话或手动发短信,不仅慢,还容易在慌乱中漏发。互亿无线预警通知接口支持通过程序批量下发,一次任务即可通知多人多设备,把"通知一个人"升级为"通知一个响应小组"。
批量发送预警通知的实现思路
互亿无线短信与语音接口单条请求的 mobile 字段传入一个手机号,因此批量发送的核心做法是:在业务侧维护一个接收人列表,程序循环调用接口,或用线程池并发下发。这样做的好处是每条通知独立计数、独立返回流水号,便于后续按人跟踪送达状态。接收人列表通常按值班角色分层:一线值班先收,5 分钟未确认再向上一层级扩散,避免一上来就打扰所有人。
批量发送预警通知的代码示例
下面以 Python 为例,演示如何从接收人清单读取手机号并循环发送语音预警,并加入超时与简单错误处理:
import requests
ACCOUNT = "你的APIID"
PASSWORD = "你的APIKEY"
VOICE_URL = "https://api.ihuyi.com/voice/vm"
receivers = ["13800000001", "13800000002", "13900000003"]
content = "注意,机房空调故障,请值班人员立即处理"
for mobile in receivers:
try:
resp = requests.post(VOICE_URL, data={
"account": ACCOUNT,
"password": PASSWORD,
"mobile": mobile,
"content": content[:70]
}, timeout=(5, 10))
result = resp.json()
print(mobile, result.get("code"), result.get("msg"))
if result.get("code") != 2:
print("提交未成功,记录待重试:", result)
except requests.RequestException as e:
print("网络异常,%s 发送失败: %s" % (mobile, e))
批量发送预警通知的关键参数
- account 填控制台的 APIID,password 填 APIKEY,两者建议从环境变量读取,不要硬编码。
- mobile 一次只传一个手机号;多设备、多人就放在接收人列表里逐个下发。
- content 为语音播报文本,TTS 合成约 70 字对应 20 秒,超长会拉长通话,建议切片。
- 响应 code=2 表示提交成功并返回 smsid 流水号,按成功计费、失败不计费。
多人多设备批量发送的注意事项
- 接收人清单建议从配置中心或值班表读取,避免把手机号硬编码在代码里。
- 同一人多部设备时,把工作机与备用机都加入列表,确保一部无人接听时另一部仍能触达。
- 循环发送时建议加入简单间隔,避免瞬时打满并发;详见接口文档中的并发说明。
- 每条响应返回 code=2 即表示提交成功,同时拿到 smsid 流水号用于回调对账。
- 把发送结果按手机号落库,配合回调判断每通语音是否被接听,未接听的号码进入升级名单。
批量发送预警通知的进阶做法
当接收人较多(几十上百人)时,可以用线程池控制并发度,例如同时开 5 个线程发送,既快又不至于触发限流。互亿无线语音通道支持语音群呼方案,适合团队全员紧急通知,接入方式与单呼一致,只是接收人列表更长。建议先在测试额度内小批量验证,再放量到正式环境。接口参数与返回码可参考语音接口文档。
批量发送让告警从"通知一个人"升级为"通知一个响应小组",是值班体系里非常实用的一环。注册免费试用即可拿到测试额度,亲手跑一遍多人群发流程。