2012-03-09 1 views
3

Я пытаюсь отправить смс с smslib, но он не отправил сообщение, может ли кто-нибудь мне поучаствовать?smslib не отправляет sms почему?

это мой код:

import org.smslib.AGateway; 
import org.smslib.IOutboundMessageNotification; 
import org.smslib.Library; 
import org.smslib.OutboundMessage; 
import org.smslib.Service; 
import org.smslib.modem.SerialModemGateway; 

public class SendMessage 
{ 
    public void doIt() throws Exception 
    { 
     OutboundNotification outboundNotification = new OutboundNotification(); 
     System.out.println("Example: Send message from a serial gsm modem."); 
     System.out.println(Library.getLibraryDescription()); 
     System.out.println("Version: " + Library.getLibraryVersion()); 
     SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM4", 115200, "Huawei", ""); 
     gateway.setInbound(true); 
     gateway.setOutbound(true); 
     gateway.setSimPin("0000"); 
     // Explicit SMSC address set is required for some modems. 
     // Below is for VODAFONE GREECE - be sure to set your own! 
     gateway.setSmscNumber("+919825068000"); 
     Service.getInstance().setOutboundMessageNotification(outboundNotification); 
     Service.getInstance().addGateway(gateway); 
     Service.getInstance().startService(); 
     System.out.println(); 
     System.out.println("Modem Information:"); 
     System.out.println(" Manufacturer: " + gateway.getManufacturer()); 
     System.out.println(" Model: " + gateway.getModel()); 
     System.out.println(" Serial No: " + gateway.getSerialNo()); 
     System.out.println(" SIM IMSI: " + gateway.getImsi()); 
     System.out.println(" Signal Level: " + gateway.getSignalLevel() + " dBm"); 
     System.out.println(" Battery Level: " + gateway.getBatteryLevel() + "%"); 
     System.out.println(); 
     // Send a message synchronously. 
     OutboundMessage msg = new OutboundMessage("+524747388616", "que onda como andas!"); 
     Service.getInstance().sendMessage(msg); 
     System.out.println(msg); 
     // Or, send out a WAP SI message. 
     //OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("306974000000", new URL("http://www.smslib.org/"), "Visit SMSLib now!"); 
     //Service.getInstance().sendMessage(wapMsg); 
     //System.out.println(wapMsg); 
     // You can also queue some asynchronous messages to see how the callbacks 
     // are called... 
     //msg = new OutboundMessage("309999999999", "Wrong number!"); 
     //srv.queueMessage(msg, gateway.getGatewayId()); 
     //msg = new OutboundMessage("308888888888", "Wrong number!"); 
     //srv.queueMessage(msg, gateway.getGatewayId()); 
     System.out.println("Now Sleeping - Hit <enter> to terminate."); 
     System.in.read(); 
     Service.getInstance().stopService(); 
    } 

    public class OutboundNotification implements IOutboundMessageNotification 
    { 
     public void process(AGateway gateway, OutboundMessage msg) 
     { 
      System.out.println("Outbound handler called from Gateway: " + gateway.getGatewayId()); 
      System.out.println(msg); 
     } 
    } 

    public static void main(String args[]) 
    { 
     SendMessage app = new SendMessage(); 
     try 
     { 
      app.doIt(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

и мой результат:

Example: Send message from a serial gsm modem. 
SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways. 
This software is distributed under the terms of the Apache v2.0 License. 
Web Site: http://smslib.org 
Version: 3.5.1 

Modem Information: 
    Manufacturer: Nokia Corporation 
    Model: Nokia Internet Stick CS-10 
    Serial No: 359340022861915 
    SIM IMSI: ** MASKED ** 
    Signal Level: -53 dBm 
    Battery Level: 0% 


=============================================================================== 
<<OutboundMessage>> 
------------------------------------------------------------------------------- 
Gateway Id: * 
Message Id: 0 
Message UUID: e30f84ad-b083-4956-85ef-16dc89020769 
Encoding: 7-bit 
Date: Fri Mar 09 13:15:52 CST 2012 
SMSC Ref No: null 
Recipient: 524747388616 
Dispatch Date: null 
Message Status: FAILED 
Failure Cause: UNKNOWN 
Validity Period (Hours): -1 
Status Report: false 
Source/Destination Ports: -1/-1 
Flash SMS: false 
Text: que onda como andas! 
PDU data: F17A19F47693C3A0F1BBFD0685DDE4F03C04 
Scheduled Delivery: null 
=============================================================================== 

Now Sleeping - Hit <enter> to terminate. 
+0

+52 Предполагается, что вы отправляете это сообщение мексиканскому номеру. Вы изменили номер SMSC, поскольку комментарий в источнике сообщает вам или у вас действительно есть греческая Vodafone SIM-карта? (хотя +91, кажется, предлагает Индию ...) – andri

+0

На самом деле я изменил smsc в соответствии с программой с моим модемом gsm, а программа напечатала имя модели и все, просто не отправляйте sms – bentham

+0

. Вы уже успешно отправил SMS с этой палкой из предоставленного программного обеспечения - в случае, если эта функция может быть отключена на оборудовании или для этой SIM-карты? –

ответ

5

Этот пример имеет дополнительную строку кода о SMSC-номера. Я играл с этой же библиотекой, и в моем коде не было никакого SMSC - в любой строке моего кода.

Это предложение «при необходимости», и я уверен, что избавление от него решает вашу проблему. Вы, скорее всего, не знаете, что именно вам нужно надеть, так что лучше оставить его. Затем модем не будет пытаться выполнить эту маршрутизацию вручную с заданным номером, но он может сделать это правильно, что он знает по настройкам SIM-карты на SIM-карте.

Еще одна вещь, которую я хотел бы проверить, это то, что модем действительно отвечает на порт COM4. Хотя теперь, похоже, это так, потому что сила сигнала читается. Но проверяйте это всегда, потому что каждый запуск сервера может отображать устройство на другой порт. У меня была такая проблема на стороне Linux.

1

Возможно, вы до сих пор не позаботились о аргументах конструктора SerialModemGateway, поскольку вы оставили «Huawei» в качестве поставщика, в то время как вы используете устройство Nokia. Этот параметр не важен, но скорость в бодах. Согласно SMSlib documentation, большинство устройств работают только в предустановленном/uniq-бодстрате.

Я предлагаю вам открыть другие настройки программного обеспечения, чтобы получить или подтвердить параметры, которые вы использовали:

  • бод
  • шлюз номер SMSC - может быть, из меню истории соединения в соответствии с Nokia руководства пользователя

Как вы получите код из примера Huawei, этот пример устанавливает номер SMSC шлюза, но этот параметр должен быть опционным для большинства устройств, но для него могут потребоваться только устройства Huawei. Попробуйте запустить без gateway.setSmscNumber!

Я также приглашаю вас отслеживать трафик последовательного порта с помощью Portmon и сообщить об этом здесь и на форуме SMSlib для получения поддержки.

Наконец, вы должны спросить SMSlib MAINTAINER опционом об устройстве, так как он находится в compatibility list (пока)

0

Ниже приведен пример кода, я использовал и испытанный. Вы можете повторно использовать его.

package com.stackoverflow.smstest; 

import java.net.URL; 

import org.smslib.AGateway; 
import org.smslib.IOutboundMessageNotification; 
import org.smslib.Library; 
import org.smslib.OutboundMessage; 
import org.smslib.OutboundWapSIMessage; 
import org.smslib.Service; 
import org.smslib.modem.SerialModemGateway; 

public class Main { 

    public void sendMessage() throws Exception { 
     OutboundNotification outboundNotification = new OutboundNotification(); 
     System.out.println("Sample of Send message from a serial gsm modem."); 
     System.out.println(Library.getLibraryDescription()); 
     System.out.println("Version: " + Library.getLibraryVersion()); 
     SerialModemGateway gateway = new SerialModemGateway("modem.com4", 
       "COM4", 57600, "Huawei", "E160"); 
     gateway.setInbound(false); 
     gateway.setOutbound(true); 
     // gateway.setSimPin(""); 
     Service.getInstance().setOutboundMessageNotification(
       outboundNotification); 
     Service.getInstance().addGateway(gateway); 
     Service.getInstance().startService(); 
     System.out.println(); 
     System.out.println("Modem Information:"); 
     System.out.println(" Manufacturer: " + gateway.getManufacturer()); 
     System.out.println(" Model: " + gateway.getModel()); 
     System.out.println(" Serial No: " + gateway.getSerialNo()); 
     System.out.println(" SIM IMSI: " + gateway.getImsi()); 
     System.out.println(" Signal Level: " + gateway.getSignalLevel() 
       + " dBm"); 
     System.out.println(" Battery Level: " + gateway.getBatteryLevel() 
       + "%"); 

     // Send a message synchronously. 
     OutboundMessage msg = new OutboundMessage("+94123456789", 
       "SMS test: sample message from StackOverflow"); 

     Service srvice = Service.getInstance(); 
     // Service.getInstance().sendMessage(msg); 
     System.out.println(msg); 
     // Or, send out a WAP SI message. 
     OutboundWapSIMessage wapMsg = new OutboundWapSIMessage("+94123456789", 
       new URL("http://stackoverflow.com/"), 
       "WAP test: sample message from StackOverflow!"); 
     // gateway.setFrom("chandpriyankara"); 
     // wapMsg.setFrom("chandpriyankara"); 
     srvice.queueMessage(wapMsg); 

     Service.getInstance().stopService(); 
    } 

    /** 
    * Outbound Message informations handler 
    * 
    * @author chandpriyankara 
    * 
    */ 
    public class OutboundNotification implements IOutboundMessageNotification { 
     public void process(AGateway gateway, OutboundMessage msg) { 
      System.out.println("Outbound handler called from Gateway: " 
        + gateway.getGatewayId()); 
      System.out.println(msg); 
     } 
    } 

    public static void main(String args[]) { 
     Main app = new Main(); 
     try { 
      app.sendMessage(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Я пробовал свой код, и я получаю это исключение java.lang.UnsupportedClassVersionError: org/smslib/IOutboundMessageNotification: Unsupported major.minor version 51.0 –

+0

Похоже, что существует некорректная версия некоторых компонентов, о которой я не могу сказать точно, но, пожалуйста, проверьте, используете ли вы источник с одинаковыми банками и dll. –

 Смежные вопросы

  • Нет связанных вопросов^_^