【问题标题】:SMS not received with java smslib libraryjava smslib 库未收到短信
【发布时间】:2016-12-30 01:24:24
【问题描述】:

我尝试了这个,但它有时无法正常工作..我使用了一个 while 循环来循环代码。我可以为此添加一些监听器吗?任何人都可以给我正确的答案吗?需要实时响应

 while (true) {
            msgList = new ArrayList<InboundMessage>();
            Service.getInstance().readMessages(msgList, InboundMessage.MessageClasses.ALL);
            for (InboundMessage im : msgList) {

                if (last < im.getMemIndex()) {
                    ResultSet rs = DB.getConnection().createStatement().executeQuery("Select * From codes where code='" + im.getText() + "'");
                    if (rs.next()) {
                        ResultSet rs2 = DB.getConnection().createStatement().executeQuery("Select * From sms_log where code='" + im.getText() + "' AND tel_no='" + im.getOriginator() + "'");
                        if (rs2.next()) {
                                if (m == null) {
                                    m = new SMSClient(1);
                                }
                                m.sendMessage(im.getOriginator(), "The Code is Already Sent... Thank You!.");

                            System.out.println("The Code is Already Sent... Thank You!.");
                        } else {
                            System.out.println("The Code Verified... Thank You!.");
                            if (m == null) {
                                m = new SMSClient(1);
                            }

                            m.sendMessage(im.getOriginator(), "The Code Verified... Thank You!.");
                            DB.getConnection().createStatement().execute("INSERT INTO sms_log (tel_no,code,status) values('" + im.getOriginator() + "','" + im.getText() + "',1)");

                        }
                    } else {
                        if (m == null) {
                            m = new SMSClient(1);
                        }
                        m.sendMessage(im.getOriginator(), "Invalid Code... Thank You!.");
                        System.out.println("Invalid Code... Thank You!.");
                    }

                }
            }
            Thread.sleep(10000);
            System.out.println("start");

        }

【问题讨论】:

    标签: java smslib


    【解决方案1】:

    我认为 IInboundMessageNotification 是你要找的接口

    public class InboundNotification implements IInboundMessageNotification {
    
        @Override
        public void process(AGateway aGateway, Message.MessageTypes messageTypes, InboundMessage inboundMessage) {
        //add you logic for received messages here 
        }
    }

    向 smsLib 服务添加通知类

    Service.getInstance().setInboundMessageNotification(new InboundNotification())

    从现在开始,process() 方法将在您的调制解调器每次收到消息时被调用。

    据我记得,smslib(3.5.x 版)不会删除收到的消息,所以需要手动完成

    @Override
    public void process(AGateway aGateway, Message.MessageTypes messageTypes, InboundMessage inboundMessage) {
       try {
             aGateway.deleteMessage(inboundMessage);
           } catch (TimeoutException | GatewayException | InterruptedException | IOException e) {
                e.printStackTrace();
           }
       // your logic here
    }

    否则,每次收到新邮件时,您都会继续收到未删除的邮件。

    希望你会发现这很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多