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

标签 sms network-protocols gsm smpp

我目前正在尝试弄清楚 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/

相关文章:

client-server - 如何告诉服务器客户端支持SPDY协议(protocol)?

c - 通过 UDP 实现 ack?

java - 基于 SMS 的应用程序如何

android - 短信计费安卓

android:我怎样才能得到短信发件人的字母名称?

networking - 关于计算机网络端口号的问题

gsm - 如何根据 SIM 卡自动选择 APN?

java - 如何将我的笔记本电脑麦克风重定向到 gsm 调制解调器输入..?

mp3 转 gsm( Asterisk )

ios - 带有SMS token 登录的Apple App Review演示帐户