1

I am using SMSLib v4 for communicating with a GSM gateway in IP mode. I send and receive messages successfully but the problem is with delivery message. After testing with Diaffan SMS Server I figured out when sending with receiver number in international format (e.g +98........) the delivery message came in Diafaan. I set options such that PDUs in both of them become same. But steel didn't receive delivery in my app.

My code is:

public class TestIPModem 

{
    public  String RECIPIENT1 = "+98...";
    public  String message = "salam";
    public  int count = 1;

    public class InboundMessageCallback implements IInboundMessageCallback
    {
        @Override
        public boolean process(InboundMessageCallbackEvent event)
        {

            if(event.getMessage().getType() == Type.Inbound){
                System.out.println(event.getMessage().getPayload().getText());
            }else if (event.getMessage().getType() == Type.StatusReport){
                System.out.println(event.getMessage().getPayload().getText() + "Delivery");
            }
            return true;
        }
    }

    public class DeliveryReportCallback implements IDeliveryReportCallback
    {
        @Override
        public boolean process(DeliveryReportCallbackEvent event)
        {
            System.out.println("[DeliveryReportCallback] " + event.getMessage().toShortString());
            System.out.println(event.getMessage().toString());
            return true;
        }
    }

    public void test() throws Exception
    {

        {

            Settings.deleteMessagesAfterCallback = true;
            Settings.modemPollingInterval = 100; 
            Service.getInstance().setInboundMessageCallback(new InboundMessageCallback());
            Service.getInstance().setDeliveryReportCallback(new DeliveryReportCallback());
            Service.getInstance().start();

            Modem gateway1 = new Modem("modem1", "192.168.2.77", "9101", "0000", "0000", "+989350001400", "SM");
            gateway1.setRequestDeliveryReport(true);
            Service.getInstance().registerGateway(gateway1);

            new Sender(1,count, RECIPIENT1, message, gateway1).start();

        }
    }

    public class Sender implements Runnable{
        int number;
        int count;
        String receiver;
        String message;
        Modem modem;

        public Sender(int number, int count, String receiver, String message, Modem m) {
            this.number = number;
            this.count = count;
            this.receiver = receiver;
            this.message = "";
            this.modem = m;
        }

        @Override
        public void run() {
            int i = 0;
            while(i < this.count){
                try {
                    OutboundMessage m = new OutboundMessage(this.receiver, this.messager);
                    m.setRequestDeliveryReport(true);
                    try {
                        modem.send(m);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    Thread.currentThread();
                    Thread.sleep(10);
                    i++;
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }
    }

    public static void main(String[] args) throws Exception {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    try {
                        Thread.currentThread();
                        Thread.sleep(100000);

                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
        new TestIPModem().test();
    }
}

So where do you think the problem is?

UPDATE: They say SMSLib doesn't support +CDS delivery reports.

0 Answers0