Adobe ColdFusion 8

The submit command

To send a message to a single destination address in an SMPP SUBMIT_SM PDU, the structure used in the Data parameter of a SendGatewayMessage function or the return variable of the CFC listener method normally has the following fields:

Field

Contents

command

If present, the value must be "submit". If you omit this field, the event gateway sends a submit message.

shortMessage

or

messagePayload

The Message contents. You must specify one of these fields, but not both. The SMPP specification imposes a maximum size of 254 bytes on the shortMessage field, and some carriers might limit its size further. The messagePayload field can contain up to 64K bytes; it must start with 0x0424, followed by 2 bytes specifying the payload length, followed by the message contents.

destAddress

The address to which to send the message (required).

sourceAddress

The address of this application. You can omit this field if it is specified in the configuration file.

You can also set optional fields in the structure, such as a field that requests a delivery receipt. For a complete list of fields, see submit command in the CFML Reference. For detailed descriptions of these fields, see the documentation for the SUBMIT_MULTI PDU in the SMPP3.4 specification, which you can download from the SMS Forum at www.smsforum.net/.

Note: To send long messages, you can separate the message into multiple chunks and use a submit command to send each chunk separately. In this case, a CFC would use multiple SendGatewayMessage functions, instead of the cfreturn function.

Example: Using the submit command in sendGatewayMessage function

The following example from a CFM page uses a sendGatewyMessage CFML function with a submit command to send an SMS messages that you enter in the form. This example uses the SMS gateway that is configured in the ColdFusion installation, and will send the message to the SMS client simulator.

<h3>Sending SMS From a Web Page Example</h3>
<cfif IsDefined("form.oncethrough") is "Yes">
<cfif IsDefined("form.SMSMessage") is True AND form.SMSMessage is not "">
    <h3>Sending Text Message: </h3>
        <cfoutput>#form.SMSMessage#</cfoutput><br>
        <cfscript>
        /* Create a structure that contains the message. */
        msg = structNew();
        msg.command = "submit";
        msg.destAddress = "5551234";
        msg.shortMessage = form.SMSMessage;    
        ret = sendGatewayMessage("SMS Menu App - 5551212", msg);
        </cfscript>
</cfif>
<hr noshade>
</cfif>
<!--- begin by calling the cfform tag --->
<cfform action="command.cfm" method="POST">
    SMS Text Message: <cfinput type="Text" name="SMSMessage" value="Sample text Message" required="No" maxlength="160">
<p><input type = "submit" name = "submit" value = "Submit">
<input type = "hidden" name = "oncethrough" value = "Yes">
</cfform>
</body>
</html> 

For a simple example of a listener CFC uses the submit command to echo incoming SMS messages to the message originator, see Incoming message handling example.

The submitMulti command

To send a single text message to multiple recipients using an SMPP SUBMIT_MULTI PDU, the Data parameter of a SendGatewayMessage function or the return variable of the CFC listener method normally has the following fields:

Field

Contents

command

Must be "submitMulti".

shortMessage

or

messagePayload

The message contents. You must specify one of these fields, but not both. The SMPP specification imposes a maximum size of 254 bytes on the shortMessage field, and some carriers might limit its size further. The messagePayload field can contain up to 64K bytes; it must start with 0x0424, followed by 2 bytes specifying the payload length, followed by the message contents.

destAddress

A ColdFusion array of destination addresses (required).

You cannot specify individual TON and NPI values for these addresses; all must conform to a single setting.

sourceAddress

The address of this application; you can omit this field if it is specified in the configuration file.

You can also set optional fields in the structure, such as a field that requests delivery receipts. For a complete list of fields, see "submitMulti command" in the CFML Reference. For detailed descriptions of these fields, see the documentation for the SUBMIT_MULTI PDU in the SMPP 3.4 specification, which you can download from the SMS Forum at www.smsforum.net/.

Example: Using the submitMulti command in an onIncomingMessage method

The following example onIncomingMessage method sends a response that echoes an incoming message to the originator address, and sends a copy of the response to a second address. To test the example, run two instances of the ColdFusion SMS client application. Use the default phone number of 5551212 for the first, and set the second one to have a phone number of 555-1235. (Notice that the second phone number requires a hyphen (-).) Send a message from the first simulator, and the response will appear in both windows.

<cffunction name="onIncomingMessage" output="no">
    <cfargument name="CFEvent" type="struct" required="yes">
    <!--- Get the message. --->
<cfset data=CFEvent.DATA>
<cfset message="#data.message#">
    <!--- Create the return structure. --->
    <cfset retValue = structNew()>
    <cfset retValue.command = "submitmulti">
    <cfset retValue.sourceAddress = arguments.CFEVENT.gatewayid>
    <cfset retValue.destAddresses=arraynew(1)>
    <!--- One destination is incoming message originator; 
                    get the address from CFEvent originator ID. --->
    <cfset retValue.destAddresses[1] = arguments.CFEvent.originatorid>
    <cfset retValue.destAddresses[2] = "555-1235">
    <cfset retValue.shortMessage = "echo: " & message>
<cfreturn retValue>
</cffunction>
</cffunction>