2

美好的一天,伙计们!我在尝试通过 SMPP(使用 Logica Java 库)提交国际短信时遇到问题。我将总结我所做的测试。我正在使用 WireShark 来监控与 SMPP 相关的活动。

  1. (在职的)

        //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();
    

结果:消息正确传递。在这里,我们验证凭据是否有效,并注意源地址和目标地址相同

  1. (失败)除了现在为国际电话号码设置的消息目标地址之外,代码保持不变

        msg.setSourceAddr((byte)1, (byte)1, "1321237XXXX");
    

结果:失败,检查 WireShark 我在提交过程中观察到以下异常: SMPP Submit_sm - resp:“无效的目标地址”

我们可能认为我们的凭据对国际递送无效,但我们目前正在使用这些凭据通过其 Web 服务接口递送国际消息。

我一定错过了配置设置或已经错误地设置了一个,但是我没有想法,如果有人能指出我正确的方向,我会很高兴。

4

1 回答 1

0

首先,您不必设置地址范围,因为您绑定为发送器,因为地址范围用于通知 SMSC 这个“接收器”会话将处理来自所需地址范围的 MO 消息。

至于发送到国际号码,我不喜欢 logica 的 API,但我很确定您缺少将目标地址 ton 设置为 1(国际号码)并将目标地址 npi 设置为 0(未知)或 1( ISDN)并重试发送。

如果错误仍然存​​在,您将不得不致电您的提供商,他们可能只允许您通过网络服务发送到国际号码。

于 2013-01-09T18:24:33.073 回答