什么是拼接 SMS?

拼接 SMS 是指一条长文本以多条网络消息发送,由接收端手机合并为一条完整消息。

一条长的投递通知在手机上可能看起来像一条短信,但实际上可能产生多个计费单元。每个部分既携带文本内容,也携带标识其在完整消息中位置的信息。

手机如何知道哪些部分需要拼接?

每个部分携带一个共享引用标识、总部分数以及自身在序列中的位置。

这些值与文本一起存放在请求头中。第三代合作伙伴计划的规范 23.040 定义了该机制。手机还会检查各部分是否来自同一发送方和消息中心。

请求头会占用每个部分的部分容量。因此 Bird 对拼接消息的每个部分使用更小的文本配额。

为什么多一个字符就会多出一个分段?

超过单分段限制后,Bird 会使用更小的多部分配额来拆分整个正文。

纯拉丁文本在一个分段中可容纳 160 个字符。较长消息的每个部分可容纳 153 个字符。

160 个普通拉丁字母可放入一个分段。再多一个字母,161 个字母的正文就需要两个部分,分别容纳 153 个和 8 个字母。两个部分都会预留请求头空间,包括第一个。

弯引号等字符会将整条消息切换为更小的配额:70 个字符,或每个部分 67 个。一条包含 70 个拉丁字母和一个弯引号的文本因此需要两个部分。

某些字符在计算这些限制时按双倍计数。GSM-7 与 UCS-2 解释了为什么可见字符数可能低估实际所需空间。

如果某个部分丢失会怎样?

手机在收到所有部分之前无法重建完整文本。

网络将各部分作为独立消息处理,它们的投递可以各自独立完成。某一部分投递成功并不意味着整条文本已送达。

因此,即使你的应用程序已提交了完整正文,不完整的消息仍可能造成投递问题。尽可能将一次性验证码控制在一个分段内,这样接收方无需多个部分即可读取。

Bird 接受多少个部分?

你可以在一个请求中发送最多十二个分段。Bird 会拒绝更长的正文。

这可容纳 1,836 个纯拉丁字符:十二个部分,每部分 153 个。较宽字符集可容纳 804 个:十二个部分,每部分 67 个。按双倍计数的字符(包括部分表情符号)会减少可容纳的文本量。

请求的 text 字段接受一个非空字符串,受十二分段上限约束。超出上限会返回 HTTP 422,表示请求因内容无效而被拒绝。Bird 不会静默截断文本。

如何查看计算结果?

你可以读取消息响应中的 segments 对象,查看 Bird 计算的结果。

  • count 是一个最小值为 1 的整数。发送消息不能超过 12 个。每个部分计为一个计费单元。
  • encoding 为 GSM_7BIT 或 UCS2,标识适用的容量。
  • characters 在应用双倍计数规则之前统计字符数。使用 count 来检查计费分段数。

对于较长的模板,请在插入姓名或其他变量文本后检查最终正文。SMS 分段解释了计费计算方式,字符限制指南记录了响应内容。

简而言之

  1. 你只提交一条消息。

    Bird 会将超长正文拆分为多个部分,由接收端手机拼接还原。

  2. 每个部分都需要请求头。

    重组信息会减少每个分段的文本容量,包括第一个分段。

  3. 缺少任何一个部分都无法完成重组。

    手机需要收到所有部分才能显示完整文本。

  4. Bird 将发送消息上限设为十二个分段。

    超长正文会被拒绝并返回 HTTP 422 响应,而不会被截断。

基于同一网络构建。

测试 API 密钥即刻获取。添加付款方式并验证发送者身份后,即可解锁生产环境。

Start building with Bird in minutes.