Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Application output of the above JAVA example for a successful send should look similar to the code block below. In this case the SMS addressed to 61412345678 has a state of 10 (SMS_STATE_CODE_SUBMITTED), which indicates it has been successfully submitted to the SMS Gateway.

Code Block
documentId=5682808080808080808080808080ECB501$  java - 61412345678, 10

Once the destination handset replies to the SMS, with a message such as "This is the reply". The SMS Gateway will send a HTTP GET to the reply-to address similar to the following, which can be parsed by a web application at that URL for reply-to systems integration:

Code Block

http://www.example.com/replyto.php?smsid=MYUNIQUEID&text=This is the reply&from=61412345678

Polling for SMS replies

The web services's receive method is a polling functionality used to query for SMS replies in response to out going messages that contain a reply-to value of INBOX. For example to send a out going SMS that will be used with the web service's receive method the following value needs to be substituted when creating the SMS document as in the above example,

Code Block

String replyToURL = "inbox:MYUNIQUEID"

...

cp .:./lib/mc-client.jar:./lib/axis.jar:./lib/jaxrpc.jar:./lib/commons-logging-1.0.4.jar:./lib/commons-discovery-0.2.jar:./lib/saaj.jar:./lib/wsdl4j-1.5.1.jar \
      SMSServiceClient

documentId=5682808080808080808080808080ECB501
  - 61412345678, 10

Once the destination handset replies to the SMS, with a message such as "This is the reply". The SMS Gateway will send a HTTP GET to the reply-to address similar to the following, which can be parsed by a web application at that URL for reply-to systems integration:

Code Block

http://www.example.com/replyto.php?smsid=MYUNIQUEID&text=This is the reply&from=61412345678

Polling for SMS replies

The web services's receive method is a polling functionality used to query for SMS replies in response to out going messages that contain a reply-to value of INBOX. For example to send a out going SMS that will be used with the web service's receive method the following value needs to be substituted when creating the SMS document as in the above example,

Code Block

String replyToURL = "inbox:MYUNIQUEID"

The key part of the reply-to value is that it begins with the key word 'inbox:'. It is possible to us any string there after as the destination address identifier. Preferably the string should be a sensible identifier of some form for the case where the user would like to search for reply messages based on destination address. In this example it is set to MYUNIQUEID, alternatively it is also acceptable to not pass a destination value other than 'inbox:'.

Warning

The inbox: reply-to value is only supported from the web service's API. It cannot be used or set by sending a SMS via the deprecated XML API. Doing so will result in a XML parsing error.

The following is a simple example JAVA class that shows how to use the web service's receive method to query for a SMS reply using a document-id based on the sending example above .using the substituted replyToURL value prefixed with 'inbox:',

Code Block
import com.amethon.mc.ws.stubs.Message;
import com.amethon.mc.ws.stubs.SMSOption;
import com.amethon.mc.ws.stubs.SMSServiceServiceLocator;
import com.amethon.mc.ws.stubs.SMSServiceSoapBindingStub;

public class SMSReceiveClient {
    	public static void main(String\[\] args) throws Exception {
        		SMSServiceServiceLocator serviceLocator = new SMSServiceServiceLocator();
        		SMSServiceSoapBindingStub smsService = (SMSServiceSoapBindingStub)serviceLocator.getSMSService();
        
        String username = "anh@amethon.com";
        String password = "M355ag3";
        String documentId;
                
        // Stop if there is no arguments supplied
        if (args.length == 0) {
            System.out.println("Required option missing: DocumentId");
            System.exit(1);
        }        
        
        // documentId is passed as first argument to program
        documentId = args\[0\];
        
        // create a documentId option
        SMSOption documentIdOption = new SMSOption();
        documentIdOption.setName("document-id");
        documentIdOption.setValue(args\[0\]);    
        SMSOption\[\] receiveOptions = {documentIdOption};
        
        // poll for messages received passing in the documentId option
        Message\[\] receivedMessages = smsService.receive(username, password, receiveOptions);
                
        // iterate over the received Message array
        for (Message receivedMessage : receivedMessages) {            
            // Gets the source address and message body assuming its ASCII text
            String source = receivedMessage.getDestinations()\[0\].getSourceAddress().getValue();
            String subject = receivedMessage.getSubject();
            
            if (subject \!= null) {
                // The subject usually contains a error code if it is set
                System.out.println("Received message from " + source + " \"" + subject + "\"");
            }
            else {
                // Get the message and print it out
                String message = receivedMessage.getBody().getPayloads()\[0\].getContent();
                System.out.println(source + " : " + message);
            }
        }
        
        System.exit(0);
    }
}
		String username = "username@example.com";
		String password = "password";
		String documentId;

		// Stop if there is no arguments supplied
		if (args.length == 0) {
			System.out.println("Required option missing: Document-Id");
			System.exit(1);
		}

		// documentId is passed as first argument to program
		documentId = args[0];

		// create a documentId option
		SMSOption documentIdOption = new SMSOption();
		documentIdOption.setName("document-id");
		documentIdOption.setValue(args[0]);
		SMSOption[] receiveOptions = {documentIdOption};

		// poll for messages received passing in the documentId option
		Message[] receivedMessages = smsService.receive(username, password, receiveOptions);

		// iterate over the received Message array
		for (Message receivedMessage : receivedMessages) {
			// Gets the source address and message body assuming its ASCII text
			String source = receivedMessage.getDestinations()[0].getSourceAddress().getValue();
			String subject = receivedMessage.getSubject();

			if (subject != null) {
				// The subject usually contains a error code if it is set
				System.out.println("Received message from " + source + " : " + subject);
			}
			else {
				// Get the message and print it out
				String message = receivedMessage.getBody().getPayloads()[0].getContent();
				System.out.println(source + " : " + message);
			}
		}

		System.exit(0);
	}
}

Running the receive application returns the following reply message that was sent back to the system from the handset 61412345678,

Code Block

$ java -cp .:./lib/mc-client.jar:./lib/axis.jar:./lib/jaxrpc.jar:./lib/commons-logging-1.0.4.jar:./lib/commons-discovery-0.2.jar:./lib/saaj.jar:./lib/wsdl4j-1.5.1.jar \
      SMSReceiveClient 5682808080808080808080808080ECB501

61412345678 : this is the reply