SMS提交和传递的消息ID不相同
作为SUBMIT_SM_RESP一部分返回的邮件ID与DELIVER_SM delivery Receive中返回的邮件ID不匹配是否正确 通过阅读,我认为会,因为规范在附录B中规定了交货收据: SMSC最初分配给消息的消息ID 提交 但我发现,例如,在SUBMIT_SM_RESP中返回的十六进制是SMS提交和传递的消息ID不相同,sms,smpp,Sms,Smpp,作为SUBMIT_SM_RESP一部分返回的邮件ID与DELIVER_SM delivery Receive中返回的邮件ID不匹配是否正确 通过阅读,我认为会,因为规范在附录B中规定了交货收据: SMSC最初分配给消息的消息ID 提交 但我发现,例如,在SUBMIT_SM_RESP中返回的十六进制是 c81f136b00116d53000000000b68c86e01481101 而交付SM中返回的十进制数为 14420265882147188051 再多的位篡改也不会显示这两个或其部分之间
c81f136b00116d53000000000b68c86e01481101
而交付SM中返回的十进制数为
14420265882147188051
再多的位篡改也不会显示这两个或其部分之间的任何相关性
起初我认为这是我的一个bug,但后来我在这个晦涩难懂的文档中发现了它
§9.2.1短消息标识符不在实体和
因此,给定消息在MS和SC处可能具有不同的smi
侧面
后来
§9.3.1…因此SC/GMSC接口处的消息标识符不是
与访问的MSC/MS接口相同
那么,我是否正确理解了邮件ID对于关联SMS的提交和交付是无用的?简短回答
不,这是不对的
您看到这种不匹配的原因是您所连接的SMSC中存在一些实现错误
请继续阅读详细解释
长话短说
GSM 03.40的摘录是正确的,但并不意味着你的结论。下面的流程将有助于解释这一点
设想以下连接(表示SMPP连接):
ESME#1 SMSC#1 ESME#2
以下是将要发生的一些事件:
如果SMSC#1未能记住正确映射消息#id,它可能会向ESME#1发送错误的消息#id。这可能会造成各种混乱(就像您的情况一样)。我的问题是,我使用32位方法将十六进制转换为十进制,而返回值的前16个字符的64位转换与交货收据匹配。所以这是我的错误,但多亏瓦希德·萨迪克确认了这两人的匹配 谢谢你提供了翔实的答案,+1。在接受之前,我会做更多的调查。