2012-03-09 17 views
3

私はsmslibでSMSを送信しようとしていますが、メッセージを送信しませんでした。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はあなたがメキシコの番号にそのメッセージを送信しているようです。送信元のコメントに実際にギリシャのVodafone SIMカードを持っているか、実際に持っているとSMSC番号を変更しましたか? (+91はインドを示唆しているようだが...) – andri

+0

実際に私のモデムgsmを持つプログラムに従ってsmscを変更し、プログラムはモデルの名前を印刷し、SMSを送信しないでください – bentham

+0

ハードウェアまたはSIMで機能が無効になる可能性がある場合、提供されたソフトウェアからそのスティックを含むSMSを送信しましたか? –

答えて

5

この例では、SMSC-数に関するコードの余分な行があります。私はこの同じライブラリで遊んだし、私のコードではSMSCはありません - 私のコードのどの行でも。

これは「必要な場合」の提案であり、私はそれを取り除くことがあなたの問題を解決すると確信しています。あなたはおそらくあなたが正確にそれに置く必要があるか分からないので、それを残しておく方がよいでしょう。モデムはこのルーティングを手動で与えられた番号にしようとはしませんが、SIMカード上のSIM設定によって正しいものにすることができます。

私がチェックするもう1つのことは、モデムが実際にCOM4ポートから応答することです。今は信号強度が読み取られるのでそうするようですが。しかし、これは常にチェックしてください。なぜなら、サーバを起動するたびにデバイスを別のポートにマップできるからです。私は少なくともLinux側でこの種の問題を抱えていました。

1

SerialModemGatewayコンストラクタの引数にはまだ気を配らず、ノキアデバイスを使用している間に "Huawei"をベンダーとして残しておきました。このパラメータは重要ではありませんが、ボーレートは重要です。 SMSlib documentationによると、ほとんどのデバイスは、プリセット/ユニークボーレートで正常に動作します。

は、私はあなたが使用しているパラメータを取得したり、確認するために、他のソフトウェアの設定を開き提案:

  • ボーレート
  • ゲートウェイSMSC番号 - 多分接続履歴メニューからNokiaのユーザーガイドに従って

Huaweiの例からコードを取得したので、この例ではゲートウェイのSMSC番号を設定していますが、このパラメータはほとんどのデバイスではオプションであると考えられています。 gateway.setSmscNumberなしで試してみてください!

たとえば、シリアルポートのトラフィックをPortmonで監視し、こことSMSlibフォーラムでサポートを受けるように通知してください。それはcompatibility listであるよう

最後に、あなたは私が使用してテストしたサンプル・コードで続き(まだ)、SMSlibのメンテナに

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

あなたのコードを試してみましたが、この例外が発生しています:org/smslib/IOutboundMessageNotification:サポートされていないmajor.minorのバージョン51.0 –

+0

私は正確に言うことができないいくつかのコンポーネントの間にバージョンの不一致があるようですが、同じjarとdllでソースを使用しているかどうか再確認してください。 –

関連する問題