npm 包 split-sms 使用教程

阅读时长 5 分钟读完

在面对短信发送时,我们常常需要将长短信进行分割处理。这种情况下,我们可以使用 split-sms 这个 NPM 包来帮助我们解决这个问题。

split-sms 简介

split-sms 是一款专门用于将长短信进行分割的 Node.js 包。其实现原理基于 GSM 的 7 位压缩算法。使用该包,我们可以很方便的将长短信按照 GSM 短信规范进行分割,同时提供了一些可选的配置参数来满足不同的需要。

split-sms 安装

我们可以使用 npm 进行 split-sms 的安装:

split-sms 使用

使用 split-sms 很简单,我们只需要传入待分割的长短信内容和配置参数,即可得到分割后的短信数组。以下为使用示例:

-- -------------------- ---- -------
----- -------- - ---------------------

----- ------- - ------------------------
----- ------- - -
  --------- ------ -- ------- --- - -------- ---
  ----------- ---- -- ------------ --- ---
  ---------- ---- -- ----- -- ---------------------------
  ----------- ----- -- ---------- -----
--

----- ------- - ----------------- ---------

---------------------
--
-----
-
  ------------------------
  ------- -- --------
-
--

可以看到,splitSMS() 函数返回了一个由短信内容组成的数组,数组的最后一项为短信签名。

split-sms 配置参数说明

在上面的示例中,我们传入了 options 配置参数,下面对几个配置参数进行一下详细说明。

encoding

encoding 是短信编码格式,支持 GSMUCS2 两种格式,默认为 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

纠错
反馈