8

我目前正试图弄清楚短信类如何在 SMPP 中正确表示。然而,我现在完全被标准和它的文档弄糊涂了。

在正常的短信中,我们有

  • Class0:显示在显示屏上的 Flash 短信
  • Class1:普通短信存储在SIM卡上或设备内部

看SMPP规范,首先找到操作data_coding中的参数,submit_sm用于设置通过MAP发送的DCS。据我了解,如果我们要显式设置消息类别,我们需要将此参数的前四位设置为 1,然后设置两位表示编码,然后再设置两位表示消息类别。所以对于 Class1 Sms,我们将设置1111xx01. 到目前为止这是正确的吗?

如果我们尝试设置此 DCS,但目前我们还将数据编码设置为“8 位数据”。看来,有几部手机无法理解这一点。这是在任何地方指定的,我们可以更改它,还是在发送其他消息类时需要特殊编码。

当我们尝试使用 SMPPv3.4 推荐的设置 Message 类的方式时,会出现更多的混乱。从 3.4 开始,操作中有一个可选参数submit_sm,称为dest_addr_subunit. 根据标准,此参数应设置为 0 表示未知,1 表示 MS-Display,2 表示移动设备等。如果我看一下,与 GSM 消息类别相比,这些参数似乎偏移了一个。Class0 编码为 1,Class1 编码为 2,依此类推。这是正确的还是这背后有更复杂的映射?

另外,如果我们设置dest_addr_subunit,我们是否还必须设置 DCS ,或者我们可以将此参数保留为默认值吗?

4

1 回答 1

11

我建议阅读带有详细 DCS(数据编码方案)描述的3GPP TS 23.038规范。

如果 DCS 位 7654 是00xx,您应该检查 DCS 的位 4值。

  • 位 4 == 0 - 此消息没有消息类别(位 1 和 0 保留)
  • 位 4 == 1 - 位 1 和 0 包含消息类别

因此,您应该data_coding按照 3GPP TS 23.038 规范设置 SMPP 参数才能message_class正确处理。

默认情况下,GSM SMS 消息没有 message_class,这与 message_class = 1 不同。

于 2012-01-27T15:52:47.260 回答