什么是短信网关?工作原理、类型与选择方法
什么是短信网关?了解一条短信如何从您的应用到达手机,网关的类型(API、SMPP、邮件转短信、GSM 调制解调器)、核心功能以及选择方法。
作者: OmniChannels.ai Editorial Team · 审阅: BroadNet Messaging Solutions Team
短信与验证码
简短回答
短信网关是在您的应用与移动网络之间转换短信的系统。您的软件通过 HTTP API 或 SMPP 提交短信,网关会检查号码、选择编码和路由、拆分长短信,并交给运营商的短信中心(SMSC),再由其投递到手机。送达回执随后原路返回,让您看到投递结果。
本页内容
要点速览
- 短信网关位于您的应用与运营商 SMSC 之间,负责路由、编码、分段、吞吐量控制和送达回执。
- 目前有四类网关:HTTP API 网关、SMPP 网关、邮件转短信网关,以及硬件 GSM 调制解调器或 SIM 卡箱(SIM box)网关。企业级 A2P 流量应使用与运营商直连的软件网关。
- 短信 API 是网关前端面向开发者的接口,而 SMPP bind 是用于大批量发送的持久连接。
- 通过 SIM 卡发送企业流量可能导致发件人 ID 丢失、短信延迟、阿拉伯语文本乱码以及被拦截,因为它绕过了运营商的商业协议。
- 选择网关时,应按国家查看路由类型、送达回执质量、发件人 ID 处理、吞吐量和编码支持,并在转移业务量之前用您自己的号码做一次测试。
本指南面向需要了解应用与客户手机之间到底有什么的开发者、产品负责人和运营负责人。您将了解一条短信经过的路径、网关的类型、重要的功能,以及如何发送第一条测试短信。
什么是短信网关?
短信网关是在应用与移动网络之间转换短信的系统,负责路由、编码、分段和送达回执。它是您的软件与向手机投递短信的运营商之间的转换层。
这个词有两种用法。它可以指连接多家运营商的服务商平台,也可以指把一家公司的系统连接到服务商的软件和硬件。我们的短信网关术语条目给出了简短的定义。
有两个相近的术语经常与它混淆:
- SMSC(短信中心): 运营商自己网络中负责存储、转发和投递短信的网元。3GPP TS 23.040 称之为 Service Centre。参见 SMSC。
- 短信 API: 网关前端面向开发者的接口。参见短信 API。
网关就是它们之间的路由和转换层,同一家服务商可以同时扮演网关、API 服务商和聚合商的角色。
一条短信如何经过短信网关?
短信从您的应用到网关,再从网关到运营商的 SMSC,最后从 SMSC 到手机,送达回执则沿同一路径返回。以下是逐步的过程。
- 您的应用提交短信。 它调用 HTTP 端点或发送 SMPP
submit_sm,附带目标号码、发件人 ID 和文本。 - 网关校验并规范化。 它检查号码格式,应用各国规则,并可能查询号码。
- 选择编码。 纯拉丁文本使用 GSM-7,单段 160 个字符。阿拉伯语等其他文字需要 UCS-2,单段 70 个字符。中文同样是 Unicode,单条为 70 个字符,超长则按每段 67 个字符拆分。我们的短信字符限制指南说明了这会如何影响费用和长度。
- 拆分长短信为多个分段,手机会把它们重新拼合。
- 选择路由,对应目标网络,并在要求时附上已登记的发件人 ID。
- 排队以遵守吞吐量, 避免超过运营商约定的上限。
- 交给运营商的 SMSC, 通常通过 SMPP。
- SMSC 投递。 它向网络查询用户的位置并转发短信。如果手机关机,它会保存短信并重试,直到有效期结束。
- 送达回执返回。 网关把它映射为一个状态,并推送到您的 webhook。
SMSC 的第一次响应只表示它接受了这条短信,回执才会在之后说明实际发生了什么。收到“已接受”响应但没有回执的短信,既不能算已送达,也不一定是失败。我们的消息投递状态指南解读了各种状态。
短信网关有哪些类型?
常用的有四种,它们在连接方式以及是否适合企业流量方面各不相同。
| 类型 | 连接方式 | 典型用途 | 是否适合 A2P 流量 |
|---|---|---|---|
| HTTP API 网关 | 带 JSON 或表单数据的 HTTPS 请求,外加 webhook | 应用、验证码、通知、营销 | 适合 |
| SMPP 网关 | 持久的 TCP 会话(bind) | 大批量发送、转售商、使用 SMPP 客户端的企业 | 适合 |
| 邮件转短信网关 | 向特定地址发送邮件或通过网页表单 | 只能发邮件的旧系统和工具 | 有限:对编码、发件人 ID 和回执的控制很少 |
| 硬件 GSM 调制解调器或 SIM 卡箱 | 由软件驱动设备中的 SIM 卡 | 小范围本地测试、用自己 SIM 卡发的一次性提醒 | 不适合企业 A2P |
API 网关
API 网关是通常的选择。您的代码发起一次 HTTPS 调用并收到消息 ID,平台则把状态发送到 webhook。它是无状态的,用标准工具就很容易调试。cURL、Node.js、Python 和 PHP 的写法请参阅我们的短信 API 示例。
SMPP 网关
SMPP(Short Message Peer-to-Peer)是基于 TCP 的开放二进制协议,应用(称为 ESME)和服务商用它与 SMSC 交换短信。3.4 版部署最广;我们引用的规范是 1999 年 10 月 12 日的 Issue 1.2。会话以 transmitter、receiver 或 transceiver 身份的 bind 开始。客户端用 submit_sm 发送短信,并以 deliver_sm 接收上行短信和送达回执,enquire_link 用于保持会话存活。每个请求都带有序列号,因此可以同时有许多请求在途,这正是 SMPP 在大批量时高效的原因。
如果您已经在运行 SMPP 软件或发送量很大,请选择 SMPP。我们的短信 API 与 SMPP 对比指南比较了两者,SMPP bind 条目则解释了各种会话类型。
邮件转短信网关
它们让只能发送邮件的系统也能发出短信。对于旧系统很方便,但可控性很低:编码、发件人 ID 规则和送达报告通常都很有限。请仅将其作为权宜之计,并在每个国家测试送达情况。
硬件 GSM 调制解调器和 SIM 卡箱
调制解调器或 SIM 卡箱装有 SIM 卡,像普通手机一样发送短信。发少量短信可以,但用于企业 A2P 流量则存在下文所述的实际风险。
为什么企业短信不应通过 SIM 卡箱发送?
基于 SIM 卡的发送绕过了运营商的商业协议,因此流量可能被延迟、改号或被拦截。在消息行业,这正是许多灰色路由背后的手法。
- 企业短信从一个随机的本地手机号码发来,而不是已登记的发件人 ID。
- 短信延迟到达、丢失阿拉伯语编码,或在运营商识别出这些 SIM 卡时被拦截。
- 送达回执可能不可靠,甚至由网关伪造。
- 阿联酋和沙特阿拉伯等市场的发件人 ID 登记规则得不到满足。
发送短信的企业承担这些风险,却往往看不到。价格过低是一个警示信号。请询问每个目的地的路由类型,并用您自己的号码测试。
短信网关应具备哪些功能?
好的网关能可靠地处理那些枯燥的环节:送达回执、编码、吞吐量和发件人 ID。比较各个方案时,请使用这份清单。
| 功能 | 为什么重要 | 应当询问的问题 |
|---|---|---|
| 与运营商直连 | 跳数更少,送达更好,可追溯 | 哪些目的地是直连,哪些经由合作伙伴? |
| 送达回执和 webhook | 您需要知道发生了什么 | 回执来自哪里,各个状态对应什么? |
| 发件人 ID 处理 | 许多国家要求或限制 | 谁负责提交登记,被拒绝时会怎样? |
| Unicode 和阿拉伯语支持 | 阿拉伯语需要 UCS-2,分段更短 | API 在发送前会计算分段数吗? |
| 吞吐量控制 | 防止过载和被限流 | 每个账号的发送速度如何约定? |
| 号码查询 | 清洗名单并支持路由 | 发送前能检查号码吗?参见 HLR 查询 |
| 故障切换 | 路由可能出故障 | 某条路由质量下降时会怎样? |
| 双向短信 | 回复、退订和对话 | 客户能回复吗,回复发往哪里? |
| API 和 SMPP | 与您的系统匹配 | 两者是否在相同路由上都提供? |
| 定时和批量任务 | 营销活动 | 能上传文件并定时发送吗? |
| 防欺诈控制 | 防范短信盗刷(SMS pumping) | 有哪些限制和告警?参见防范短信盗刷 |
如何选择短信网关?
先确定您的流量,再在转移业务量之前用您自己的号码测试路由。请按以下顺序进行。
- 列出目的地和流量类型: 验证码、告警和促销的表现各不相同,通常需要分别登记。
- 使用免费的发件人 ID 检查器核对各国的发件人 ID 规则。
- 决定用 API 还是 SMPP。 大多数应用使用 API,发送量很大的用户会再加上 SMPP。
- 询问每个国家的路由类型, 以及送达回执的来源。
- 用您自己已验证的号码在每个目标国家做一次测试。检查到达时间、发件人显示、阿拉伯语渲染和回执。
- 审阅支持与升级渠道, 包括短信停发时应该联系谁。
- 阅读商务条款, 包括发件人 ID 登记和价格如何报价。我们的群发短信服务商检查清单有更详细的说明。
免费的消息服务商招标工具包可以把这份清单转化为向供应商提出的问题。
如何连接短信网关并发送第一条短信?
申请测试权限,安全保存令牌,调用发送端点,并在 webhook 上接收送达状态。BroadNet 没有即时自助注册,所以第一步是一次简短的权限申请。
- 申请测试权限。 告诉我们您的渠道、目的国家、预计发送量和使用场景。工程师会发放测试凭证,并验证您将用于测试的号码。
- 把令牌保存在服务器的环境变量中,例如
BROADNET_TOKEN。 - 发送短信: 向
https://api.broadnet.me发起POST /sms/sendSms,并使用请求头Authorization: Bearer <token>。 - 在您的 HTTPS webhook 上接收状态。 状态包括 SUBMITTED、SENT、DELIVERED、READ、FAILED 和 REJECTED。请处理重复和乱序的事件。
curl -X POST https://api.broadnet.me/sms/sendSms \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"senderId": "OmniDemo",
"destinationNumber": "447700900123",
"message": "Your OmniDemo code is 482913",
"messageType": "TEXT"
}'
包含 Node.js、Python 和 PHP 的完整教程见开发者快速入门、短信 API 参考和 webhook 指南。SMPP 的 bind 按账号开通并使用 TLS;参见 SMPP 连接。
使用短信网关时常犯哪些错误?
大多数问题源于对送达和路由的想当然,而不是 API 调用本身。
- 把“已接受”当作“已送达”。 请等待回执。
- 忽视编码。 一个阿拉伯语字符就能让短信切换为 UCS-2,并缩小分段大小。请使用短信字符计数器。
- 在要求登记的国家跳过发件人 ID 登记。
- 只看价格购买。 便宜的路由可能意味着灰色路由。
- 验证码和促销短信走同一条路由, 没有分开。
- 没有规划故障切换。 请问清楚路由质量下降时会怎样。
- 跳过防欺诈控制。 不受保护的验证码端点会招来短信盗刷。
实际案例:迪拜的一款配送应用
“Rahal Express”是迪拜一款虚构的配送应用,它会发送登录验证码、司机即将到达的提醒和每周促销。他们最初的网关是旧工具里内置的邮件转短信桥接。验证码有时在会话过期后才到达,阿拉伯语姓名出现乱码,应用也没有任何送达状态。
他们改用 API 网关:应用调用短信端点,在需要的地方登记发件人 ID,阿拉伯语文本在发送前按 UCS-2 分段计数,状态则返回到 webhook,这样客服团队就能看到失败。验证码和促销流量使用各自独立的营销活动和发件人 ID。在转移业务量之前,他们在每个目的地用自己的号码做了测试。结果没有任何神奇之处:送达可见、文本正确,每条短信都有明确的负责人。
OmniChannels.ai 如何提供帮助
OmniChannels.ai 通过 BroadNet 的运营商直连发送 A2P 短信,支持双向短信、发件人 ID、群发、Unicode 和阿拉伯语、HLR 号码查询,以及面向大批量的 SMPP 3.4。位于 api.broadnet.me 的 REST API 以统一的 webhook 格式报告送达状态,我们的团队会与您一起准备并提交发件人 ID 登记。测试权限限于您自己已验证的号码。申请权限或阅读开发者文档即可开始。
常见问题
简单来说,短信网关是什么?
短信网关是把短信从您的软件送入移动网络的系统。您通过 API 或 SMPP 把短信交给它,它负责号码检查、编码、拆分、路由和送达报告。没有网关,您就需要与每一家想要触达的移动运营商分别建立连接。
短信网关和短信 API 有什么区别?
短信 API 是开发者调用的接口,通常是基于 HTTPS 的 JSON。网关则是其背后把短信路由到运营商的平台。同一家服务商通常两者都提供,SMPP 则是接入同一个网关的另一种方式。人们说“网关 API”时,指的就是让您的软件接入网关基础设施的那个 API。
短信网关是如何工作的?
您的应用提交短信,网关校验号码,选择 GSM-7 或 UCS-2 编码,附上发件人 ID,拆分长短信,然后通过 SMPP 或其他接口发送给运营商的 SMSC。SMSC 再投递到手机。送达回执返回后,网关把它映射为已送达或失败等状态。
短信网关和 SMSC 是一回事吗?
不是。SMSC 是运营商移动网络内部的存储转发中心,会保存并重试短信,直到送达或过期。网关则是您的系统与一家或多家运营商之间的一层。有些网关直接连接运营商的 SMSC,有些则通过聚合商路由。
可以把 GSM 调制解调器或 SIM 卡箱当作短信网关吗?
从技术上说可以,用于用自己的 SIM 卡发少量类似个人对个人的短信。但用于企业流量并不合适:容量有限,发件人 ID 选项很差,运营商还可能识别并拦截基于 SIM 卡的 A2P 流量。验证码、告警和营销活动请使用与运营商连接的网关,并在签约前确认路由类型。
选择短信网关时应该看什么?
要询问路由是否直连运营商、送达回执从哪里获取、在要求登记的国家如何登记发件人 ID、支持哪些编码、吞吐量如何约定、故障切换如何运作,以及能否用您自己的号码测试。避免只根据单条短信的价格做决定。
资料来源
继续阅读
更多指南短信与验证码
每天发送数百万条短信:高并发短信发送指南
每天发送数百万条短信:TPS 规划算法、SMPP 绑定与窗口、队列与限速、送达回执处理、发送方 ID、静默时段和监控指标,适合国际短信群发团队。
11 分钟阅读
短信与验证码
A2P短信批发:如何选择供应商并测试线路
A2P短信批发详解:谁在采购、SMPP bind如何运作、送达回执与延迟如何反映线路质量,以及应当要求供应商落实的KYC与反欺诈控制,帮助您选对批发线路。
9 分钟阅读
集成
短信API发送示例:Python、Node.js、PHP与cURL
用API发送短信的Python、Node.js、PHP和cURL示例:单条与批量发送、Unicode与阿拉伯语、分段计数、送达状态Webhook以及错误处理,开发者可直接复制使用。
10 分钟阅读
