请教关于CMPP中的CMPP_SUBMIT消息中的Msg_Id字段

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:10:20
在进行CMPP_SUBMIT操作时,CMPP上说“Msg_id 信息标识,由SP侧短信网关本身产生,本处填空”,
如果此处为空,那么后面说到的"Pk_total 相同Msg_id的消息总条数,Pk_number 相同Msg_id的消息序号"相同Msg_id,我要如何相同呢,是不是自相矛盾了呢?而在 CMPP_SUBMIT_RESP 中又给出了Msg_Id的生成算法,
"信息标识,生成算法如下:
采用64位(8字节)的整数:
(1) 时间(格式为MMDDHHMMSS,即月日时分秒):bit64~bit39,其中
bit64~bit61:月份的二进制表示;
bit60~bit56:日的二进制表示;
bit55~bit51:小时的二进制表示;
bit50~bit45:分的二进制表示;
bit44~bit39:秒的二进制表示;
(2) 短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中;
(3) 序列号:bit16~bit1,顺序增加,步长为1,循环使用。
各部分如不能填满,左补零,右对齐。
(SP根据请求和应答消息的Sequence_Id一致性就可得到CMPP_Submit消息的Msg_Id)
",
所以Msg_id 是可以自已生成的,如果不可以,那么当我要发送的短信内容过多(超过160字符),进行短信拆分的时候,又怎么保证拆分后的多条短信的Msg_Id相同呢?
再请教jiahuiren
1.CMPP协议中所提到的"Pk_total 相同Msg_id的消息总条数,Pk_number 相同Msg_id的消息序号",请问其中的"相同Msg_id"要如何实现相同呢?或者说"相同Msg_id"指的是什么意思?
2.当我用手机发送一个超过70个的字符(实际268个)的短信到另一手机上时,接收方只是显示一条短信,那是不是手机发送的短信不用拆分,如果也要拆分,那拆分后的多条短信手机是跟据什么信息来合成为一条的呢?

Msg_id 是由运营商(如:移动、联通)网关返回给SP侧的,所以 SP在提交CMPP_SUBMIT时,MsgID应该填空, 而在CMPP_SUBMIT_RESP中根据sequence_id相等获得你提交的短信在运营商网关的标识Msg_id, 这个Msg_id还将用在后续的状态报告中,用于告诉你该短信的最终发送状态。
至于你说的CMPP_SUBMIT_RESP中Msg_ID的生成算法,是给运营商网关用的,不是给你这边的程序用的。
总而言之,Msg_id是由运营商网关生成,给你的提交的短信的唯一标识。在短信拆分时,每一次提交的短信都将有一个Msg_id,并不能保持一致的Msg_id