Hi all,

thanks for your mails. Yes, I had it that way (outbound and inbound  both
enable) and it still didn't work. Is it supposed to work like this?
please see code attached.

any other suggestions please?

Is it easier to use smsserver for this? and how?

Thanks, in anticipation.

Ime


2010/1/21 nxnlvz <[email protected]>

> Make sure that you are enable for outbound as well as inbound.
>
>
>                        // Do we want the Gateway to be used for Inbound
> messages?
>                        gateway.setInbound(true);
>
>                        // Do we want the Gateway to be used for Outbound
> messages?
>                        gateway.setOutbound(true);
>
>
>
> -nxn
>
>
>
> On Jan 21, 6:52 am, Ime Asangansi <[email protected]> wrote:
> > thanks for the quick reply.
> >
> > I tried that too.
> > No that doesn't work either
> >
> > any alternative please?
> >
> > thanks
> >
> > ime
> >
> > 2010/1/21 Thanasis <[email protected]>
> >
> > > Hi,
> >
> > > Can you try altering the command:
> >
> > > this.srv.sendMessage(msgOut, "modem.com3");
> >
> > > to:
> >
> > > this.srv.sendMessage(msgOut);
> >
> > > Does this work?
> >
> > > On Jan 21, 10:39 am, sanga <[email protected]> wrote:
> > > > Hi,
> >
> > > > I need your help on this.
> >
> > > > In my program, i am trying to send an sms reply (outbound message)
> > > > "Received" to every SMS that is received (inbound).
> > > > That is, I am trying to notify anybody who sends an SMS that their
> SMS
> > > > have been received.
> >
> > > > I have refactored the doIt() method in examples.modem.ReadMessages in
> > > > trying to do this.
> >
> > > > // Read Messages. The reading is done via the Service object and
> > > >             // affects all Gateway objects defined. This can also be
> > > > more directed to a specific
> > > >             // Gateway - look the JavaDocs for information on the
> > > > Service method calls.
> > > >             msgList = new ArrayList<InboundMessage>();
> > > >             this.srv.readMessages(msgList, MessageClasses.ALL);
> > > >             for (InboundMessage msg : msgList)
> > > >         {        System.out.println(msg);
> > > > msgOut = new OutboundMessage(msg.getOriginator(), "Your message has
> > > > been received");
> > > > this.srv.sendMessage(msgOut, "modem.com3");
> > > > System.out.println(msgOut);
> > > >         }
> >
> > > > But I find that the outbound message fails (as below) :(
> >
> > >
> ===========================================================================
> > > ====
> > > > << InboundMessage >>
> >
> > >
> ---------------------------------------------------------------------------
> > > ----
> > > >  Gateway Id: modem.com3
> > > >  Encoding: 7-bit
> > > >  Date: Wed Jan 20 23:36:56 WAT 2010
> > > >  Dispatched via SMSC:
> > > >  Text: Sup?
> > > >  PDU data: D33AFC07
> > > >  Originator:
> > > >  Memory Index: 1
> > > >  Multi-part Memory Index:
> > > >  Memory Location: SM
> > > >  Source / Destination Ports: -1 / -1
> >
> > >
> ===========================================================================
> > > ====
> >
> > >
> ===========================================================================
> > > ====
> > > > << OutboundMessage >>
> >
> > >
> ---------------------------------------------------------------------------
> > > ----
> > > >  Gateway Id: modem.com3
> > > >  Message Id: 1
> > > >  Encoding: 7-bit
> > > >  Date: Thu Jan 21 02:32:22 WAT 2010
> > > >  SMSC Ref No: null
> > > >  Recipient:
> > > >  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: Received
> > > >  PDU data: D9775D0E6A97E7F3F0B90C4287E72071B9EC06C9CBE372DA5E2603
> >
> > >
> ===========================================================================
> > > ====
> >
> > > > Any suggestions? any examples?
> >
> > > > also, any examples to do this with SMSserver?
> >
> > > > Many thanks
> >
> > > > Ime
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "SMSLib for Java User Group" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected]<smslib%[email protected]>
> <smslib%[email protected]<smslib%[email protected]>
> >
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/smslib?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "SMSLib for Java User Group" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<smslib%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/smslib?hl=en.
>
>
>
>
// ReadMessages.java - Sample application.
//
// This application shows you the basic procedure needed for reading
// SMS messages from your GSM modem, in synchronous mode.
//
// Operation description:
// The application setup the necessary objects and connects to the phone.
// As a first step, it reads all messages found in the phone.
// Then, it goes to sleep, allowing the asynchronous callback handlers to
// be called. Furthermore, for callback demonstration purposes, it responds
// to each received message with a "Got It!" reply.
//
// Tasks:
// 1) Setup Service object.
// 2) Setup one or more Gateway objects.
// 3) Attach Gateway objects to Service object.
// 4) Setup callback notifications.
// 5) Run

package examples.modem;

import java.util.ArrayList;
import java.util.List;
import javax.crypto.spec.SecretKeySpec;
import org.smslib.ICallNotification;
import org.smslib.IGatewayStatusNotification;
import org.smslib.IInboundMessageNotification;
import org.smslib.IOutboundMessageNotification;
import org.smslib.IOrphanedMessageNotification;
import org.smslib.InboundMessage;
import org.smslib.Library;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.AGateway.GatewayStatuses;
import org.smslib.AGateway.Protocols;
import org.smslib.InboundMessage.MessageClasses;
import org.smslib.Message.MessageTypes;
import org.smslib.crypto.AESKey;
import org.smslib.modem.SerialModemGateway;


public class ReadMessages
{
        Service srv;
        OutboundMessage msgOut;

        public void doIt() throws Exception
        {
                // Define a list which will hold the read messages.
                List<InboundMessage> msgList;

                // Create the notification callback method for inbound & status 
report
                // messages.
                InboundNotification inboundNotification = new 
InboundNotification();

                // Create the notification callback method for inbound voice 
calls.
                CallNotification callNotification = new CallNotification();

                //Create the notification callback method for gateway statuses.
                GatewayStatusNotification statusNotification = new 
GatewayStatusNotification();

                OrphanedMessageNotification orphanedMessageNotification = new 
OrphanedMessageNotification();

                
        
                
                try
                {
                        System.out.println("Example: Read messages from a 
serial gsm modem.");
                        System.out.println(Library.getLibraryDescription());
                        System.out.println("Version: " + 
Library.getLibraryVersion());

                        // Create new Service object - the parent of all and 
the main interface
                        // to you.
                        this.srv = new Service();

                        // Create the Gateway representing the serial GSM modem.
                        SerialModemGateway gateway = new 
SerialModemGateway("modem.com3", "COM3", 19200, "Generic USB", 
"generic-usb-modem");

                        // Set the modem protocol to PDU (alternative is TEXT). 
PDU is the default, anyway...
                        gateway.setProtocol(Protocols.PDU);

                        // Do we want the Gateway to be used for Inbound 
messages?
                        gateway.setInbound(true);

                        // Do we want the Gateway to be used for Outbound 
messages?
                        gateway.setOutbound(true);

                        // Let SMSLib know which is the SIM PIN.
                        gateway.setSimPin("0000");

                        // Set up the notification methods.
                        
this.srv.setInboundMessageNotification(inboundNotification);
                        this.srv.setCallNotification(callNotification);
                        
this.srv.setGatewayStatusNotification(statusNotification);
                        
this.srv.setOrphanedMessageNotification(orphanedMessageNotification);
                        
                                                
                        // Add the Gateway to the Service object.
                        this.srv.addGateway(gateway);

                        // Similarly, you may define as many Gateway objects, 
representing
                        // various GSM modems, add them in the Service object 
and control all of them.

                        // Start! (i.e. connect to all defined Gateways)
                        this.srv.startService();

                        // Printout some general information about the modem.
                        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() + "%");
                        System.out.println("  Battery Level: " + 
gateway.getBatteryLevel() + "%");
                        System.out.println();

                        // In case you work with encrypted messages, its a good 
time to declare your keys.
                        // Create a new AES Key with a known key value. 
                        // Register it in KeyManager in order to keep it 
active. SMSLib will then automatically
                        // encrypt / decrypt all messages send to / received 
from this number.
                        this.srv.getKeyManager().registerKey("+306948494037", 
new AESKey(new SecretKeySpec("0011223344556677".getBytes(), "AES")));

                        // Read Messages. The reading is done via the Service 
object and
                        // affects all Gateway objects defined. This can also 
be more directed to a specific
                        // Gateway - look the JavaDocs for information on the 
Service method calls.
                        msgList = new ArrayList<InboundMessage>();
                        this.srv.readMessages(msgList, MessageClasses.ALL);
                        for (InboundMessage msg : msgList)
                {               System.out.println(msg);
msgOut = new OutboundMessage(msg.getOriginator(), "Your message has been 
received");
this.srv.sendMessage(msgOut);
System.out.println(msgOut);     
                }
                        
                        // Sleep now. Emulate real world situation and give a 
chance to the notifications
                        // methods to be called in the event of message or 
voice call reception.
                        
                        System.out.println("Now Sleeping - Hit <enter> to stop 
service.");
                        System.in.read(); System.in.read();
                }
                catch (Exception e)
                {
                        e.printStackTrace();
                }
                finally
                {
                        this.srv.stopService();
                }
        }

        public class InboundNotification implements IInboundMessageNotification
        {
                public void process(String gatewayId, MessageTypes msgType, 
InboundMessage msg)
                {
                        if (msgType == MessageTypes.INBOUND) 
System.out.println(">>> New Inbound message detected from Gateway: " + 
gatewayId);
                        else if (msgType == MessageTypes.STATUSREPORT) 
System.out.println(">>> New Inbound Status Report message detected from 
Gateway: " + gatewayId);
                        System.out.println(msg);
                        
                        try
                        {
                                new SendMessage().doIt();                       
        
                        }
                        catch (Exception e)
                        {
                                e.printStackTrace();
                        }       
                        
                        
                }
        }

        
        
        
        public class CallNotification implements ICallNotification
        {
                public void process(String gatewayId, String callerId)
                {
                        System.out.println(">>> New call detected from Gateway: 
" + gatewayId + " : " + callerId);
                }
        }

        public class GatewayStatusNotification implements 
IGatewayStatusNotification
        {
                public void process(String gatewayId, GatewayStatuses 
oldStatus, GatewayStatuses newStatus)
                {
                        System.out.println(">>> Gateway Status change for " + 
gatewayId + ", OLD: " + oldStatus + " -> NEW: " + newStatus);
                }
        }

        public class OrphanedMessageNotification implements 
IOrphanedMessageNotification
        {
                public boolean process(String gatewayId, InboundMessage msg)
                {
                        System.out.println(">>> Orphaned message part detected 
from " + gatewayId);
                        System.out.println(msg);
                        // Since we are just testing, return FALSE and keep the 
orphaned message part.
                        return false;
                }
        }

        public static void main(String args[])
        {
                ReadMessages app = new ReadMessages();
                try
                {
                        app.doIt();
                }
                catch (Exception e)
                {
                        e.printStackTrace();
                }
        }
        
        
                
        public class OutboundNotification implements 
IOutboundMessageNotification
        {
                public void process(String gatewayId, OutboundMessage msgOut)
                {
                        System.out.println("Outbound handler called from 
Gateway: " + gatewayId);
                        System.out.println(msgOut);
                }
        }

                
}
--
You received this message because you are subscribed to the Google Groups "SMSLib for Java User Group" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected].
For more options, visit this group at http://groups.google.com/group/smslib?hl=en.

Reply via email to