如何在SMPP中正确表示消息类

LiK*_*Kao 7 sms gsm network-protocols smpp

我目前正在试图找出sms类如何在SMPP中正确表示.但是我现在完全被标准和它的文档混淆了.

在正常的短信我们有

  • Class0:Flash短信,显示在显示屏上
  • Class1:正常的Sms存储在SIM上或设备内部

查看SMPP规范,我首先data_codingsubmit_sm操作中找到参数,该参数用于设置通过MAP发送的DCS.据我所知,如果我们想要显式设置消息类,我们需要将此参数的前四位设置为1,然后指示编码的两位,然后指示消息类的另外两位.所以对于Class1 Sms,我们会设置1111xx01.到目前为止这是正确的吗?

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

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

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

小智 10

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

如果DCS位7654是00xx,则应检查DCS的第4位值.

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

因此,您应根据3GPP TS 23.038规范设置data_coding SMPP参数,以正确处理message_class.

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