ServiceMix SMPP

The ServiceMix SMPP component provides support for receiving and sending SMS using the SMPP protocol via the enterprise service bus. It uses the jSMPP library.

Maven Archetype

You can use Maven servicemix-smpp-service-unit archetype to create a SMPP service unit:

mvn archetype:create \
  -DarchetypeGroupId=org.apache.servicemix.tooling \
  -DarchetypeArtifactId=servicemix-smpp-service-unit \
  -DarchetypeVersion=2010.01 \
  -DgroupId=your.group.id \
  -DartifactId=your.artifact.id \
  -Dversion=your-version

Once you've customized the service unit, simply install the SU:

mvn install

Remember that to be deployable in ServiceMix, the ServiceUnit has to be embedded in a Service Assembly: only the Service Assembly zip file can be deployed in ServiceMix.
To add your SU in a SA, you need to define it in the dependency sets:

<dependency>
  <groupId>your.group.id</groupId>
  <artifactId>your.artifact.id</artifactId>
  <version>your-version</version>
</dependency>(servicemix-smmp 2010.02 or newer) 

Endpoints Configuration

Consumer Endpoint

A SMPP Consumer endpoint connects to a SMPP server, waiting for incoming SMS message. When a SMS message comes, the endpoint converts it into a JBI message (using the marshaler) and send to the NMR.

Currently, the SMPP Consumer endpoint only supports the DELIVERY_SM protocol data unit, which will acknowledge positive even if the exchange fails.

Consumer Endpoint
<smpp:consumer service="test:service"
               endpoint="endpoint"
               host="smpp.example.com"
               port="2700"
               systemId="user"
               password="passwd"/>

Consumer Endpoint Attributes

Name

Type

Description

Default

service

QName

the service name of the endpoint

require to be spec'd

endpoint

string

the endpoint name of the endpoint

require to be spec'd

targetService

QName

the service name of the target endpoint

 

targetEndpoint

string

the endpoint name of the target endpoint

 

host

string

the SMPP server hostname/IP

require to be spec'd

port

int

the SMPP server port number

2700

systemId

string

the SMPP user system ID

require to be spec'd

password

string

the SMPP user password

require to be spec'd

marshaler

class

org.apache.servicemix.smpp.marshaler.SmppMarshalerSupport

DefaultSmppMarshaler

Provider Endpoint

A SMPP Provider endpoint expects messages coming from the NMR, converts it into a SMS message (using the marshaler) and send to the SMPP server.

Currently, the SMPP Provider endpoint only supports the SUBMIT_SM protocol data unit. Positive or negative acknowledgements received from the SMSC will set the Exchange status to DONE or ERROR. For InOut Exchanges the OUT NormalizedMessage is a copy of IN message.

Provider Endpoint
<smpp:provider service="test:service"
               endpoint="endpoint"
               host="smpp.example.com"
               port="2700"
               systemId="user"
               password="passwd"/>

Provider Endpoint Attributes

Name

Type

Description

Default

service

QName

the service name of the endpoint

require to be spec'd

endpoint

string

the endpoint name of the endpoint

require to be spec'd

targetService

QName

the service name of the target endpoint

 

targetEndpoint

string

the endpoint name of the target endpoint

 

host

string

the SMPP server hostname/IP

require to be spec'd

port

int

the SMPP server port number

2700

systemId

string

the SMPP user system ID

require to be spec'd

password

string

the SMPP user password

require to be spec'd

marshaler

class

org.apache.servicemix.smpp.marshaler.SmppMarshalerSupport

DefaultSmppMarshaler

Marshalers

By default, SMPP endpoints expect (and generate) the content of the message in XML format. The XML message looks like:

<message>
  <source>SOURCE_PHONE_NUMBER</source>
  <destination>DESTINATION_PHONE_NUMBER</destination>
  <text>MESSAGE_CONTENT</text>
  <npi>NATIONAL_PREFIX_INDICATOR</npi>
  <ton>TYPE_OF_NUMBER</ton>
</message>

If you want to manipulate different format, you need to define your own marshaler.

SMPP marshaler example
<?xml version="1.0"?>
<beans xmlns:smpp="http://servicemix.apache.org/smpp/1.0"
       xmlns:test="http://test">

  <smpp:consumer service="test:smpp"
                 endpoint="endpoint"
                 host="smpp.example.com"
                 port="2700"
                 systemId="test"
                 password="test">
    <property name="marshaler">
       <bean class="org.apache.servicemix.smpp.marshaler.OtherSmppMarshaler"/>
    </property>
  </smpp:consumer>

</beans>

Optional Parameters (for servicemix-smpp 2010.02 or newer)

SMPP provides a set of Optional parameters that can be set on the supported protocol data units. The default SMPP marshaler will treat the optional parameters as Normalized message properties (will copy matching properties from the NormalizedMessage to the PDU and vice versa). Below is a small matrix the presentes the supported optional parameters and how they are mapped to NomralizedMessage properties.

Optional Parameter Support

Name

Type

Supported by PDUs

Description

DEST_ADDR_SUBUNIT

Byte

SUBMIT_SM, DATA_SM

The subcomponent in the destination device for which the user data is intended.

DEST_NETWORK_TYPE

Byte

DATA_SM

The correct network for the destination device.

DEST_BEARER_TYPE

Byte

DATA_SM

The correct bearer type for the delivering the user data to the destination.

DEST_TELEMATICS_ID

Short

DATA_SM

The telematics identifier associated with the destination.

SOURCE_ADDR_SUBUNIT

Byte

SUBMIT_SM, DATA_SM

The subcomponent in the destination device which created the user data.

SOURCE_NETWORK_TYPE

Byte

DATA_SM

The correct network associated with the originating device.

SOURCE_BEARER_TYPE

Byte

DATA_SM

The correct bearer type for the delivering the user data to the destination.

SOURCE_TELEMATICS_ID

Byte

DATA_SM

The telematics identifies associated with the source.

QOS_TIME_TO_LIVE

Integer

DATA_SM

Time to live as a relative time in seconds from submission.

PAYLOAD_TYPE

Byte

SUBMIT_SM, DELIVERY_SM, DATA_SM

Defines the type of payload (e.g. WDP, WCMP, etc.).

ADDITIONAL_STATUS_INFO_TEXT

String

DATA_SM_RESP

ASCII text giving a description of the meaning of he response

RECEIPTED_MESSAGE_ID

String

DELIVERY_SM

SMSC message ID of receipted message Should be present for SMSC Delivery Receipts and Intermediate Notifications.

MS_MSG_WAIT_FACILITIES

Byte

SUBMIT_SM

This parameter controls the indication and specifies the message type (of the message associated with the MWI) at the mobile station.

PRIVACY_INDICATOR

Byte

SUBMIT_SM, DELIVERY_SM, DATA_SM

Indicates the level of privacy associated with the message.

SOURCE_SUBADDRESS

String

SUBMIT_SM, DELIVERY_SM, DATA_SM

The subaddress of tmessage originator.

DEST_SUBADDRESS

String

SUBMIT_SM, DELIVERY_SM, DATA_SM

The subaddress of tmessage destination.

USER_MESSAGE_REFERENCE

Short

SUBMIT_SM, DELIVERY_SM, DATA_SM

ESME asginged message reference number.

USER_RESPONSE_CODE

Byte

SUBMIT_SM , DATA_SM

A user response code.

SOURCE_PORT

Short

SUBMIT_SM, DELIVERY_SM, DATA_SM

Indicates the application port number associated with the source address of the message. This parameter should be present for WAP applications.

DESTINATION_PORT

Short

SUBMIT_SM, DELIVERY_SM, DATA_SM

Indicates the application port number associated with the destination address of the message. This parameter should be present for WAP applications.

LANGUAGE_INDICATOR

Byte

SUBMIT_SM, DELIVERY_SM, DATA_SM

Indicates the language of an alphanumeric text message.

SAR_MSG_REF_NUM

Byte

SUBMIT_SM, DATA_SM

The reference number for a particular concatenated short message.

SAR_TOTAL_SEGMENTS

Byte

SUBMIT_SM, DATA_SM

Indicates the total number of short messages within the concatenated short message.

SAR_SEGMENT_SEQNUM

Byte

SUBMIT_SM, DATA_SM

Indicates the sequence number of a particular short message fragment within the concatenated short message.

SC_INTERFACE_VERSION

Byte

BIND (not applicable)

Smmp version supported by the SMSC (not applicable)

CALLBACK_NUM_PRES_IND

String

SUBMIT_SM, DATA_SM

Defines the callback number presentation and screening.

CALLBACK_NUM_ATAG

String

SUBMIT_SM, DATA_SM

Associates a displayable alphanumeric tag with the callback number.

NUMBER_OF_MESSAGES

Byte

SUBMIT_SM, DATA_SM

Indicates the number of messages stored in a mail box.

CALLBACK_NUM

String

SUBMIT_SM, DELIVERY_SM, DATA_SM

A callback number associated with the short message. Smpp supports multiple occurances of this parameter per message, but servicemix-smmp only supports once per message.

DPF_RESULT

String

DATA_SM_RESP

Indicates whether the Delivery Pending Flag was set.

SET_DPF

String

DATA_SM

Indicator for setting Delivery Pending Flag on delivery failure.

MS_AVAILABILITY_STATUS

Byte

QUERY_SM

The status of the mobile station.

NETWORK_ERROR_CODE

String

DELIVERY_SM, DATA_SM

Network Error Code. May be present for Intermediate Notifications and SMSC Delivery Receipts.

MESSAGE_PAYLOAD

String

SUBMIT_SM, DELIVERY_SM, DATA_SM

Contains the extended short message user data. Up to 64K octets can be transmitted.

DELIVERY_FAILURE_REASON

Byte

DATA_SM_RESP

Include to indicate reason for delivery failure.

MORE_MESSAGES_TO_SEND

Byte

SUBMIT_SM, DATA_SM

Indicates that there are more messages to follow for the destination SME.

MESSAGE_STATE

Byte

DELIVERY_SM

Message State. Should be present for SMSC Delivery Receipts and ntermediate Notifications.

USSD_SERVICE_OP

Byte

SUBMIT_SM

This parameter is used to identify the required USSD Service type when interfacing to a USSD system.

DISPLAY_TIME

Byte

SUBMIT_SM, DATA_SM

Provides the receiving MS with a display time associated with the message.

SMS_SIGNAL

Byte

SUBMIT_SM, DATA_SM

Indicates the alerting mechanism when the message is received by an MS.

MS_VALIDITY

Byte

SUBMIT_SM

Indicates validity information for this message to the recipient MS.

ALERT_ON_MESSAGE_DELIVERY

Null

SUBMIT_SM, DATA_SM

Request an MS alert signal be invoked on message delivery.

ITS_REPLY_TYPE

Byte

SUBMIT_SM, DELIVERY_SM, DATA_SM

The MS user’s reply method to an SMS delivery message received from the network is indicated and controlled by this parameter.

ITS_SESSION_INFO

Byte

SUBMIT_SM, DELIVERY_SM, DATA_SM

Session control information for Interactive Teleservice.

Note: DATA_SM, QUERY_SM and and response PDUs are not currently supported.

  • No labels