SMS

什么是 SMS 分段,为什么一条消息收了三段的费用?

SMS 分段是一条 SMS 短信的一个计费单位,因此三个分段按三个单位收费。

手机可以将一条长文本显示为一条消息,即使网络实际传输了多个分段。用于编码文本的字母表决定了 Bird 按多少个分段收费。

什么是分段?

分段是一条网络消息能承载的最大文本片段。纯拉丁文本每个分段可容纳 160 个字符。如果消息中包含哪怕一个超出该字符集的字符,例如 emoji、弯引号或大多数带重音的字母,则每个分段只能容纳 70 个字符。

当一条消息需要多个分段时,每个分段会让出少量空间给手机用于重组的请求头:纯文本每段 153 个字符,宽字符集每段 67 个字符。因此 161 个纯字母需要两个分段,第一段装 153 个,第二段装 8 个。

Bird 将纯文本按 GSM-7 字母表计数,其余内容按 UCS-2 计数,这是运营商接受的两种编码。即使在 GSM-7 中也有少数字符按双倍计数,部分 emoji 在 UCS-2 中同样按双倍计数;编码页面列出了这些字符。

为什么一条消息收了三段的费用?

Bird 按分段数收费,因此一条三段消息按适用费率收取三个单位的费用。

Bird 在接受发送请求时计算分段数。目的地、消息类别和发送方类型也会影响适用价格。请查看 SMS 定价了解您使用的路由。

例如,150 个普通拉丁字母可装入一个分段。加上一个笑脸 emoji,整条消息就会使用 UCS-2。该 emoji 按双倍计数,总数变为 152。将 152 除以多段容量 67,需要三个分段。

哪些字符会改变编码?

GSM-7 之外的任何字符都会将整条消息切换到 UCS-2。

直引号在 GSM-7 中。弯引号则不在。字母 éü 在其中。字母 áíú 则不在。中文、日文、韩文、阿拉伯文、泰文和印地文也需要使用宽编码。

插入模板中的姓名或产品名称可能因此改变整条消息的编码。请在插入这些值之后检查完整文本。

为什么字符计数的结果不一样?

部分字符在分段限额中按双倍计数。

GSM-7 将 []{}\~^| 各计为两个字符。换页符(用于请求分页)同样按双倍计数。因此 80 个欧元符号刚好填满一个分段。

一条包含 159 个普通拉丁字母加上 的消息有 160 个字符,但在限额中计为 161,因此需要两个分段。

部分 emoji(例如 😀)在 UCS-2 中按双倍计数。35 个这样的 emoji 刚好填满一个分段。编码页面列出了需要特别注意的字符。

如何在 Bird 中检查分段数?

您可以从消息响应的 segments 对象中读取计算后的分段数。

  • count 是一个最小值为 1 的整数。每个计入的分段都是一个计费单位。发出消息的上限为 12 段。超出长度的消息会收到 HTTP 422,请求被拒绝且文本不会被截断。
  • encodingGSM_7BITUCS2,标识适用的容量。
  • characters 统计应用双倍计数规则之前的文本字符数。使用 count 来检查计费分段数。

如果消息必须控制在一个分段内,请在准备好完整消息体之后检查 count。将插入的姓名包含在内,并将 😀 等字符按双倍计数。

您还可以将 options.smart_encoding 设置为 truefalse,默认值为 false。启用后,仅当整条结果可以放入 GSM-7 时,才会替换支持的标点。消息体中如有 emoji 则会阻止所有替换。智能编码解释了该行为。

字符限制指南记录了计数规则和响应字段。

简而言之

  1. 每个分段都是一个计费单位。

    一条被拆分为三个分段的消息按适用费率收取三个单位的费用。

  2. 编码方式决定容量。

    只要有一个字符不在紧凑的 SMS 字母表中,整条消息就会切换到 Unicode 编码。

  3. 部分字符按双倍计数。

    一个欧元符号在限额中算两个字符。部分 emoji 同样按双倍计数。

  4. 每个多段分段都会预留请求头空间。

    拆分会减少每个分段的可用容量,包括第一个。

基于同一网络构建。

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

你的下一个创意。
随时连接。