文字处理器在粘贴通知内容时,可能会把直引号变成弯引号。这个小改动就能迫使整段文本使用一种更不紧凑的编码。
纯拉丁文本在一个分段(消息的计费单位)中可容纳 160 个字符。一个弯引号会将整段文本切换到更宽的字母表,每个分段只能容纳 70 个字符。Bird 将这两种编码称为 GSM-7 和 UCS-2。
智能编码替换哪些字符?
Bird 将受支持的标点、空格和表现形式变体替换为适合 GSM-7 的字符。
弯引号变为直引号。排版用的破折号变为连字符。不间断空格变为普通空格。单个省略号字符变为三个句点。智能编码指南列出了所有替换规则。
Bird 通常不会去除字母上的重音。它会将 á 保留为 á,以保持拼写不变。GSM-7 已包含 à、ä、å、é、è、ì、ò、ù、ö、ñ 和 ü。这些字母无需替换。它不包含 á、í 或 ú。
为什么正文有时保持不变?
Bird 仅在整个替换后的正文适合 GSM-7 且非空时才应用替换。
如果表情符号或不受支持的带重音字母仍然存在,Bird 会发送原始文本。同时包含弯引号和 á 的正文因此会保留两个字符。仅替换引号仍会使消息停留在 UCS-2 中。
编辑器存储重音的方式会影响结果。作为单个字符存储的 ê 保持不变。e 后跟一个单独的扬抑符看起来一样,但可以变成 e^。该替换仅在整个结果适合 GSM-7 时才会生效。
智能编码是否总能降低费用?
不一定,因为有些替换会使文本变长。
70 个省略号字符可放入一个分段。将每个替换为三个句点后产生 210 个字符,超出了 160 个字符的单分段上限,需要两个分段,每段允许 153 个字符。
对于夹杂在较长文字中的普通标点,结果可能相反。一段 150 个拉丁字母加一个弯引号共 151 个字符,按 67 个字符的多段配额需要三个分段。替换掉引号后,这 151 个字符可放入一个 GSM-7 分段。
计费数量是最终文本的分段数。SMS 分段解释了这些容量。
它能否将超大消息缩短到可以发送?
它可以将编码后的大小降到 Bird 上限以下,但绝不会截断文本。
Bird 在应用智能编码后检查 12 段限制。仍超出该限制的正文会收到 HTTP 422,即内容无效的拒绝。已在 GSM-7 中的正文会原样通过。
如何在 Bird 中启用智能编码?
你需要在每次发送时设置该选项。将返回的消息与你提交的文本进行比较,以检查结果。
options.smart_encoding接受true或false,默认为false。响应会报告实际生效的设置。text是最终的非空字符串,但身份验证消息会返回**REDACTED**以保护其验证码。自由文本请求必须符合 12 段上限。segments.encoding为GSM_7BIT或UCS2。segments.count是一个至少为 1 的整数。每个计入的分段都是计费单位。出站消息上限为 12 段。
true 设置为 UCS2 意味着转换未产生可用的 GSM-7 正文。请在再次更改设置前检查最终文本中的字符。
什么时候应该启用?
当文档中列出的替换规则能保留你期望的文本、且最终分段数符合你的消息需求时,启用该选项。
将模板与其实际插入的姓名和产品描述进行比较。当精确的标点或字符表示方式很重要时,保持该选项禁用。分段计算器可帮助你在发送前检查编码后的长度。
简而言之
替换作用于整个正文。
如果替换后仍有任何不受支持的字符,Bird 会保留原始文本。
带重音的字母通常不会被简化。
一个不受支持的带重音字母(如 á)会阻止替换生效。
每次发送都需要显式设置。
智能编码选项接受 true 或 false,默认为 false。
检查最终文本和分段数。
替换可能会使文本变长,因此更改编码并不保证减少分段数。