在面对短信发送时,我们常常需要将长短信进行分割处理。这种情况下,我们可以使用 split-sms
这个 NPM 包来帮助我们解决这个问题。
split-sms 简介
split-sms
是一款专门用于将长短信进行分割的 Node.js 包。其实现原理基于 GSM 的 7 位压缩算法。使用该包,我们可以很方便的将长短信按照 GSM 短信规范进行分割,同时提供了一些可选的配置参数来满足不同的需要。
split-sms 安装
我们可以使用 npm 进行 split-sms
的安装:
npm install split-sms --save
split-sms 使用
使用 split-sms
很简单,我们只需要传入待分割的长短信内容和配置参数,即可得到分割后的短信数组。以下为使用示例:
-- -------------------- ---- ------- ----- -------- - --------------------- ----- ------- - ------------------------ ----- ------- - - --------- ------ -- ------- --- - -------- --- ----------- ---- -- ------------ --- --- ---------- ---- -- ----- -- --------------------------- ----------- ----- -- ---------- ----- -- ----- ------- - ----------------- --------- --------------------- -- ----- - ------------------------ ------- -- -------- - --
可以看到,splitSMS()
函数返回了一个由短信内容组成的数组,数组的最后一项为短信签名。
split-sms 配置参数说明
在上面的示例中,我们传入了 options
配置参数,下面对几个配置参数进行一下详细说明。
encoding
encoding
是短信编码格式,支持 GSM
和 UCS2
两种格式,默认为 GSM
。
对于 GSM
编码格式,一个字符将被编码成一个 7 位二进制数,一个字母或数字需要 7 位二进制数表示,如果字符集中不存在该字符,则会发生截断或使用未知字符替代。因此,我们需要确认我们的短信内容都在 GSM 字符集中。
对于 UCS2
编码格式,一个字符将被编码成一个 16 位二进制数。 UCS2
编码支持的字符范围比 GSM
更广,可以表示所有语言的字符。但是,一个字符编码需要占用 16 位,因此一个短信可包含的字符数将减少一半,导致分割为多条短信的可能性更高。此外,对于某些短信网关,需要使用 UCS2
编码格式才能正常发送带有表情符号的短信。
smsMaxSize
smsMaxSize
用于指定单条短信允许的最大长度。该参数默认为 160 个字符,对于 UCS2
编码格式则为 70 个字符。当一条短信的长度超过该限制时,该短信将会被分割成多条。
splitFunc
splitFunc
是一个自定义的分割函数,用于支持不同的短信网关。在实际使用中,不同的短信网关可能对短信的内容、格式、签名等方面都有不同的要求。因此,需要我们自己定义一个合适的分割函数来满足我们的需求。
splitFunc
接收一个字符串参数,表示待分割的长短信内容,需要返回一个数组,表示分割后的短信列表。以下为一个自定义的分割函数示例:
-- -------------------- ---- ------- -------- --------------------- - ----- ------ - -------- -- ------- ----- ---------------- - --- - -------------- -- ------------- ----- ------------ - --------------------- - ------------------ -- ------------ ------ ------------ ------- ------------ ---------- ------ -- - ----- ----- - ----- - ----------------- ----- --- - ----- - ----------------- ----- ------- - ----------------- ----- -- ------- ----- ------------- - ----- --- ------------ - -- -- --------- ------ -------------------------- - ------ - ----- --- -
在这个例子中,我们自定义了一个分割函数,使用自定义的短信签名 [安装商]
,并将每一条短信的字符长度限制为 160 个字符。
forceSplit
forceSplit
表示是否强制分割短信。当该参数值为 true
时,无论短信内容是否超过短信长度限制,都会将其分割为多条短信。默认情况下,该参数值为 false
,即当短信长度小于等于字数限制时,不会强制分割短信。
总结
split-sms
是一款非常实用的类库,当我们面对长短信发送时,可以借助它提供的分割函数分割长短信。它支持 GSM 和 UCS2 编码,同时提供了一些可选的配置参数,可满足不同的需求。
在实际的开发中,我们可以将其用于短信发送、短信验证码等场景,能够提升我们的开发效率,减少对短信相关业务的困扰。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600670a58ccae46eb111f14e