Wednesday, September 16, 2015

smpp协议submit_sm操作的data_coding的一些说明 - widebright的日志 - 网易博客

smpp协议submit_sm操作的data_coding的一些说明 - widebright的日志 - 网易博客: smpp协议submit_sm操作的data_coding的一些说明��

2014-04-09 16:43:04|��分类: 电信协议 |举报|字号�订阅
����
下载LOFTER客户端
1.�GSM Default Alphabet (7-bits),
GSM7位编码,自己client发送时不需要做7bit的压缩(compact/pack),SMSC会在收到消息之后自己再把GSM 7bit的字节流(每个7位的还是分别保留在一个8位的字节里面)的最高为空位压缩掉。
参考网上别人的介绍 �http://www.telecomspace.com/smsforum.net_archive/smf/index00d0.html?topic=1257.0
SMSC应该是有个配置选项,可以设置做或者不做7bit到8bit的转换的,但一般SMSC发过来的消息应该也是把gsm 7bit单独放到一个8bit的字节里面了。有的SMSC也会支持直接使用压缩过最高位的7bit数据的。 如果考虑smpp client和 server的话好像我也还没想到需要自己压缩7bit高位的情况。可能做的是server的话,后续的通过其他协议比如MAP协议的forward-sm操作发送到sigtran网络里面去的话那个消息的user data是需要做这种7bit编码的高位压缩的吧。

具体代码,可以使用开源项目 Kannel 里面的
charset_gsm_to_utf8
charset_utf8_to_gsm
函数来做转换

2.�UCS2 (16-bits)
unicode编码,可以使用libxml代码里面
UTF8ToUTF16BE
UTF16BEToUTF8
函数来做转换吧。

3.�LATIN 1 (8-bits)
可以用libxml代码里面
UTF8Toisolat1
isolat1ToUTF8
函数来做到utf8编码的转换

4.�SMSC default alphabet (7 or 8-bits)
好像根据SMSC的不同,默认可能是7bit也可能是8bit编码,

5. UDH �(User Data Header)
udh数据端也是在放在data里面的。sm_length里面包含这个udh的长度。
UDH段的内容不要做data_coding对应编码的转换,data_coding只针对实际的消息内容。
也就是说UDH不用做gsm 7bit ,ucs这些编码。参见GSM 03.40 规范的说明的

参考�
1.�SMPP_v3_4_Issue1_2.pdf
Short Message Peer to Peer�Protocol Specification v3.4

2..�smppv34_gsmumts_ig_v10.pdf
SMPP v3.4 Protocol Implementationguide for GSM / UMTS�Version 1.0

3. �Data Coding values in SMPP
http://www.telecomspace.com/smsforum.net_archive/smf/index00d0.html?topic=1257.0

相关的电信规范:
GSM 03.38 �Alphabets and language-specific information
GSM 03.40 �Technical realization of the Short Message Service (SMS)�Point-to-Point (PP)
3GPP TS 23.040 �Technical realization of the Short Message Service (SMS)

No comments: