作为SUBMIT_SM_RESP的一部分返回的消息ID与DELIVER_SM送达回执中返回的消息ID不匹配是否正确?
从阅读SMPP 3.4 spec 1.2我认为会这样做,因为附录B中的规格说明了送货单:
SMSC最初分配给消息的消息ID 提交。
但我发现例如在SUBMIT_SM_RESP中返回的十六进制是
c81f136b00116d53000000000b68c86e01481101
虽然在DELIVER_SM中返回的小数为
14420265882147188051
并且没有任何数量的比特显示两者或其部分之间的任何相关性。
我最初认为这是我的错误,但我随后在晦涩的文件Technical realization of the Short Message Service (SMS) Point-to-Point (PP) (GSM 03.40)中找到了
§9.2.1短消息标识符不在实体之间传送 因此,给定消息可以在MS和SC处具有不同的SMI 边
以后
§9.3.1...因此,SC / GMSC接口上的消息标识符不是 与访问的MSC / MS接口相同
那么,我是否正确理解消息ID对于关联提交和传送SMS无用?
答案 0 :(得分:9)
不,这不正确。
您看到这种不匹配的原因是由于您连接到的SMSC中的某些实现错误。
请继续阅读详细说明。
GSM 03.40的摘录是正确的,但这并不意味着你的结论。以下流程将有助于解释这一点。
想象一下以下连接(<>表示SMPP连接):
ESME#1<> SMSC#1<> ESME#2
以下是将要发生的一些事件:
ESME#2发送一个deliver_sm_resp,其message_id = 2000(由ESME#2生成)。
注意:虽然SMPP 3.4规范没有提到这一点,但许多实现都使用message_id来支持送达回收。
如果SMSC#1无法记住正确映射message_ids,它可能会向ESME#1发送错误的message_id。这可能会产生各种混淆(就像你的情况一样)。
答案 1 :(得分:2)
我的问题是我使用32位方法从十六进制转换为十进制,而返回值的前16个字符的64位转换与交货收据相匹配。所以这是我的错误,但感谢Wahid Sadik确认两者有望匹配。