开发者

POST/v3/smslength

计算短信编码和分段数

分析最终消息文本,不发送消息,也不估算发送费用。

本页
  1. 分析实际要发送的消息文本
  2. 请求
  3. 响应
  4. 编码和分段上限
  5. 错误和空文本
  6. 发送前使用计算结果

分析实际要发送的消息文本

计算您打算发送的文本所用的编码、编码后的长度以及短信分段数。此接口不会发送短信、预留路由或返回发送价格报价。请提交完整的最终文本,包括发送流程添加的任何页脚、链接或退订说明。

请求

使用已启用的 API 账户,并从该账户允许的来源 IP 地址进行身份验证。请将凭据保存在服务器端的机密存储中。在 UTF-8 编码下,通过 text 字段提交字符串;示例使用环境变量。

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  --data-urlencode 'text=Your message here' \
  https://api.multitel.net/v3/smslength

支持表单编码的输入。对于 JSON 对象,例如 {"text":"Your message here"},在未提供表单字段或查询字段时也可接受。建议使用 POST,以免消息文本出现在 URL 中。如果同时提供表单输入和查询输入,则使用表单。请勿混用请求格式。

响应

{
  "status": {
    "code": "200",
    "msg": ""
  },
  "response": {
    "charset": 0,
    "encoding": "GSM-7",
    "count": 1,
    "parts": 1,
    "chars": 17,
    "units": 17,
    "single_limit": 160,
    "multipart_limit": 153
  }
}
计算器结果字段
字段含义
charset0 表示 GSM-7,2 表示 UTF-16。
encodingGSM-7 或 UTF-16。
parts、count这两个字段都表示计算得出的短信分段数。文本为空时,两者均为零。
units、chars这两个字段都表示编码单元数,其值不一定等于可见字符数。
single_limit使用所选编码时,单段短信的编码单元数上限。
multipart_limit扣除长短信拼接开销后,每个分段可用的编码单元数上限。

编码和分段上限

计算器采用的上限
编码单段短信多段短信中的每个分段
GSM-7160 个七位编码单元153 个七位编码单元
UTF-1670 个编码单元67 个编码单元

GSM-7 扩展字符(例如 ^、花括号、方括号、反斜杠、竖线、波浪号和欧元符号)会占用两个七位编码单元。只要出现一个不属于 GSM-7 的字符,整条消息就会改用 UTF-16 计数。基本多文种平面以外的一个表情符号占用两个 UTF-16 编码单元;一个可见的表情符号序列可能包含多个码点。

例如,160 个普通的 GSM-7 字母可容纳于一段短信中,而 161 个则需要两段。八十个 ^ 字符占用 160 个编码单元,可容纳于一段短信中;八十一个则占用 162 个编码单元,需要两段。三十五个简单的基本多文种平面以外的表情符号占用 70 个 UTF-16 编码单元,可容纳于一段短信中;三十六个则占用 72 个编码单元,需要两段。组合标记和连结的表情符号可能改变这些计数。

错误和空文本

缺少 text 字段、以数组或对象代替标量值,或使用无效的 UTF-8,都会返回 API 代码 403。除 HTTP 状态外,还应读取 JSON 中的 status.code 和 status.msg;此接口以字符串形式返回代码。空字符串是有效输入,会返回零个编码单元和零个分段。

发送前使用计算结果

经审查的计算器不包含消息发送、运营商调用或账户扣款操作。其结果是对所提交文本的分析,不代表送达保证,也不是最终账单。发送时可能涉及目的地费率、运营商费用、活动要求以及额外的文本转换。修改消息后请重新计算,再使用获准的发送流程和账户当前价格进行发送。