我目前正在尝试弄清楚 sms 类如何在 SMPP 中正确表示。然而,我现在完全对标准及其文档感到困惑。
在普通短信中我们有
- Class0:Flash短信,显示在显示屏上
- Class1:普通短信存储在 SIM 卡上或设备内部
查看SMPP规范,首先找到submit_sm
操作中的参数data_coding
,该参数用于设置通过MAP发送的DCS。据我了解,如果我们想显式设置消息类别,我们需要将此参数的前四位设置为 1,然后两位指示编码,然后另外两位指示消息类别。因此,对于 1 类短信,我们将设置 1111xx01
。到目前为止这是正确的吗?
如果我们尝试设置此 DCS,但目前我们还将数据编码设置为“8 位数据”。看来,很多手机都无法理解这一点。这是在任何地方指定的吗?我们是否可以更改它,或者是发送其他消息类时需要的特殊编码。
当我们尝试使用 SMPPv3.4 推荐的方式设置消息类时,会出现更多困惑。从 3.4 开始,submit_sm
操作中有一个可选参数,称为 dest_addr_subunit
。根据标准,该参数应设置为 0(表示未知)、1(表示 MS-Display)、2(表示移动设备)等。如果我看一下,与 GSM 消息类别相比,这些参数似乎移动了 1。 Class0 编码为 1,Class1 编码为 2,依此类推。这是正确的还是这背后有更复杂的映射?
另外,如果我们设置了dest_addr_subunit
,我们是否还需要设置DCS,或者我们可以将此参数保留为默认值吗?
最佳答案
我建议阅读3GPP TS 23.038规范以及详细的 DCS ( Data Coding Scheme ) 描述。
如果 DCS 位 7654 为 00xx
,您应该检查 DCS 的位 4 值。
- 位 4 == 0 - 此消息没有消息类别(位 1 和 0 被保留)
- 位 4 == 1 - 位 1 和 0 包含消息类别
因此,您应该根据 3GPP TS 23.038 规范设置 data_coding
SMPP 参数,以正确处理 message_class
。
默认情况下,GSM SMS 消息没有 message_class,这与 message_class = 1 不同。
关于sms - 如何在 SMPP 中正确表示消息类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765369/