大家好!我在尝试提交国际短信víaSMPP(使用Logica Java库)时遇到问题。我要总结一下我做过的测试。我正在使用WireShark来监控与SMPP相关的活动。
(工作)
//Connect and stablish session
Connection conn = new TCPIPConnection(providerAddress, port);
Session session = new Session(conn);
BindRequest breq = new BindTransmitter();
breq.setSystemId(user);
breq.setPassword(pass);
breq.setSystemType("CMT");
breq.setInterfaceVersion((byte)34);
breq.setAddressRange((byte)0x01, (byte)0x01,null);
Response resp = session.bind(breq);
//Create message
SubmitSM msg = new SubmitSM();
msg.setDestAddr((byte)1, (byte)1, "58412014XXXX");
msg.setSourceAddr((byte)1, (byte)1, "58412014XXXX");
msg.setShortMessage("Test from tedexis","ISO-8859-1");
//Here we submit message
session.submit(msg);
//Disconnect
session.unbind();
结果:邮件正确传递。在这里,我们验证凭据是否有效,并注意源和目标地址是相同的
(失败)除了现在为国际电话号码设置的留言目的地地址外,代码保持不变
msg.setSourceAddr((byte)1, (byte)1, "1321237XXXX");
结果:失败,检查WireShark我在提交期间观察到以下异常: SMPP Submit_sm - resp:“目标地址无效”
我们可能认为我们的凭据对国际交付无效,但我们目前正在使用这些凭据通过其Web服务界面提供国际消息。
我必须错过配置设置或错误地设置一个,但我没有想法,如果有人能指出我正确的方向我会很高兴。
答案 0 :(得分:0)
首先,您不必设置地址范围,因为您绑定为发送器,因为地址范围用于通知SMSC此“接收方”会话将处理来自所需地址范围的MO消息。
至于发送到国际号码,我没有进入logica的API,但我很确定你错过了将目标地址ton设置为1(国际号码)和目的地址npi为0(未知)或1(ISDN)并重试发送。
如果错误仍然存在,您必须致电您的提供商,他们可能会授予您通过网络服务发送给国际号码的权限。