Camel Component: SMPP - 6.3

Talend ESB Mediation Developer Guide

EnrichVersion
6.3
EnrichProdName
Talend Data Fabric
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
task
Design and Development
EnrichPlatform
Talend ESB

This component provides access to an SMSC (Short Message Service Center) over the SMPP protocol to send and receive SMS. The JSMPP is used.

Maven users will need to add the following dependency to their pom.xml for this component:

<dependency>
   <groupId>org.apache.camel</groupId>
   <artifactId>camel-smpp</artifactId>
   <!-- use the same version as your Camel core version -->
   <version>x.x.x</version>
</dependency>

This component has log level DEBUG, which can be helpful in debugging problems. If you use log4j, you can add the following line to your configuration:

log4j.logger.org.apache.camel.component.smpp=DEBUG

URI Format and options

smpp://[username@]hostname[:port][?options]
smpps://[username@]hostname[:port][?options]

If no username is provided, then Camel will provide the default value smppclient. If no port number is provided, then Camel will provide the default value 2775. If the protocol name is "smpps", camel-smpp with try to use SSLSocket to init a connection to the server.

You can append query options to the URI in the following format, ?option=value&option=value&..., where option can be:

Table 20. 

Name

Default Value

Description

password

password

Specifies the password to use to log into the SMSC.

systemType

cp

This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters).

alphabet

0

Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. Example data encodings are: 0 : SMSC Default Alphabet 4 : 8 bit Alphabet 8 : UCS2 Alphabet

encoding

ISO-8859-1

Defines the encoding scheme of the short message user data. Only for SubmitSm, ReplaceSm and SubmitMulti.

enquireLinkTimer

5000

Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC.

transactionTimer

10000

Defines the maximum period of inactivity allowed after a transaction, after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (that is, SMSC or ESME).

initialReconnectDelay

5000

Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost.

reconnectDelay

5000

Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed.

registeredDelivery

1

Only for SubmitSm, ReplaceSm and SubmitMulti and DataSm. Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: 0 : No SMSC delivery receipt requested. 1 : SMSC delivery receipt requested where final delivery outcome is success or failure. 2 : SMSC delivery receipt requested where the final delivery outcome is delivery failure.

serviceType

CMT

The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined: CMT : Cellular Messaging CPT : Cellular Paging VMN : Voice Mail Notification VMA : Voice Mail Alerting WAP : Wireless Application Protocol USSD : Unstructured Supplementary Services Data

sourceAddr

1616

Defines the address of SME (Short Message Entity) which originated this message.

destAddr

1717

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS.

sourceAddrTon

0

Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined: 0 : Unknown 1 : International 2 : National 3 : Network Specific 4 : Subscriber Number 5 : Alphanumeric 6 : Abbreviated

destAddrTon

0

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Defines the type of number (TON) to be used in the SME destination address parameters. Same as the sourceAddrTon URI options listed above.

sourceAddrNpi

0

Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined: 0 : Unknown 1 : ISDN (E163/E164) 2 : Data (X.121) 3 : Telex (F.69) 6 : Land Mobile (E.212) 8 : National 9 : Private 10 : ERMES 13 : Internet (IP) 18 : WAP Client Id (to be defined by WAP Forum)

destAddrNpi

0

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Defines the numeric plan indicator (NPI) to be used in the SME destination address parameters. Same as the sourceAddrNpi URI options listed above.

priorityFlag

1

Only for SubmitSm, SubmitMulti. Allows the originating SME to assign a priority level to the short message. Four Priority Levels are supported: 0 : Level 0 (lowest) priority 1 : Level 1 priority 2 : Level 2 priority 3 : Level 3 (highest) priority

replaceIfPresentFlag

0

Only for SubmitSm, SubmitMulti. Used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service type match the same fields in the new message. The following replace if present flag values are defined: 0 : Don't replace 1 : Replace

typeOfNumber

0

Defines the type of number (TON) to be used in the SME. Same as the sourceAddrTon URI options listed above.

numberingPlanIndicator

0

Defines the numeric plan indicator (NPI) to be used in the SME. Same as the sourceAddrNpi URI options listed above.

lazySessionCreationfalseSessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started. Starting with Camel 2.11, Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present, Camel will use this information to connect to the SMSC.
httpProxyHostnullIf you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy.
httpProxyPort3128If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy.
httpProxyUsernamenullIf your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy.
httpProxyPasswordnullIf your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy.
sessionStateListenernullYou can refer to a org.jsmpp. session. SessionStateListener in the Registry to receive callbacks when the session state changed.
addressRangenullStarting with Camel 2.11, you can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range.

You can have as many of these options as you like, for example:

smpp://smppclient@localhost:2775?password=password&enquireLinkTimer=
3000&transactionTimer=5000&systemType=consumer

Producer Message Headers

The following message headers can be used to affect the behavior of the SMPP producer

Header

Type

Description

CamelSmppDestAddr

List/String

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS.

CamelSmppDestAddrTon

Byte

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Defines the type of number (TON) to be used in the SME destination address parameters. Same as the sourceAddrTon URI options listed above.

CamelSmppDestAddrNpi

Byte

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Defines the numeric plan indicator (NPI) to be used in the SME destination address parameters. Same as the sourceAddrNpi URI options listed above.

CamelSmppSourceAddr

String

Defines the address of SME (Short Message Entity) which originated this message.

CamelSmppSourceAddrTon

Byte

Defines the type of number (TON) to be used in the SME originator address parameters. Same as the sourceAddrTon URI options listed above.

CamelSmppSourceAddrNpi

Byte

Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. Same as the sourceAddrNpi URI options listed above.

CamelSmppServiceType

String

The service type parameter can be used to indicate the SMS Application service associated with the message. Same as the serviceType URI options listed above.

CamelSmppRegistered Delivery

Byte

Only for SubmitSm, SubmitMulti, CancelSm and DataSm. Same as the registeredDelivery URI options listed above.

CamelSmppPriorityFlag

Byte

Only for SubmitSm and SubmitMulti. Same as the priorityFlag URI options listed above.

CamelSmppSchedule DeliveryTime

Date

Only for SubmitSm, SubmitMulti, ReplaceSm. This parameter specifies the scheduled time at which the message delivery should be first attempted. It defines either the absolute date and time or relative time from the current SMSC time at which delivery of this message will be attempted by the SMSC. It can be specified in either absolute time format or relative time format. The encoding of a time format is specified in Chapter 7.1.1. in the SMPP specification v3.4.

CamelSmppValidityPeriod

String/Date

Only for SubmitSm, SubmitMulti and ReplaceSm. The validity period parameter indicates the SMSC expiration time, after which the message should be discarded if not delivered to the destination. It can be defined in absolute time format or relative time format. The encoding of absolute and relative time format is specified in chapter 7.1.1 in the smpp specification v3.4.

CamelSmppReplace IfPresentFlag

Byte

The replace if present flag parameter is used to request the SMSC to replace a previously submitted message, that is still pending delivery. The SMSC will replace an existing message provided that the source address, destination address and service type match the same fields in the new message. The following values are defined: 0 : Don't replace 1 : Replace

CamelSmppAlphabet / CamelSmppDataCoding

Byte

Only for SubmitSm, SubmitMulti and ReplaceSm. Same as the alphabet URI options listed above.

CamelSmppOptionalParameters

Map<String, String>

Deprecated and will be removed in Camel 2.13.0/3.0.0

Camel 2.10.5 and 2.11.1 onwards and only for SubmitSm, SubmitMulti and DataSm The optional parameters send back by the SMSC.

CamelSmppOptionalParameter

Map<Short, Object>

Camel 2.10.7 and 2.11.2 onwards and only for SubmitSm, SubmitMulti and DataSm

The optional parameter which are send to the SMSC. The value is converted in the following way:

String -> org.jsmpp.bean.

OptionalParameter.COctetString

byte[] -> org.jsmpp.bean.

OptionalParameter.OctetString

Byte -> org.jsmpp.bean.

OptionalParameter.Byte

Integer -> org.jsmpp.bean.

OptionalParameter.Int

Short -> org.jsmpp.bean.

OptionalParameter.Short

null -> org.jsmpp.bean.

OptionalParameter.Null

The following message headers are used by the SMPP producer to set the response from the SMSC in the message header

Header

Type

Description

CamelSmppId

String or List<String>

the id to identify the submitted short message for later use (delivery receipt, query sm, cancel sm, replace sm). In case of a ReplaceSm, QuerySm, CancelSm and DataSm this header value is a String. In case of a SubmitSm or SubmitMultiSm this header vaule is a List<String>.

CamelSmppSent MessageCountIntegerFor SubmitSm and SubmitMultiSm only - the total number of messages which has been sent.
CamelSmppErrorMap<String, List<Map<String, Object>>>For SubmitMultiSm only - The errors which occurred by sending the short message(s) the form Map<String, List<Map<String, Object>>>}} (messageID : (destAddr : address, error : errorCode)).
CamelSmppOptionalParametersMap<String, String>

Deprecated and will be removed in Camel 2.13.0/3.0.0

From Camel 2.11.1 onwards only for DataSm The optional parameters which are returned from the SMSC by sending the message.

CamelSmppOptionalParameterMap<Short, Object>

From Camel 2.10.7, 2.11.2 onwards only for DataSm

The optional parameter which are returned from the SMSC by sending the message. The key is the Short code for the optional parameter. The value is converted in the following way:

org.jsmpp.bean.Optional

Parameter.COctetString -> String

org.jsmpp.bean.Optional

Parameter.OctetString -> byte[]

org.jsmpp.bean.Optional

Parameter.Byte -> Byte

org.jsmpp.bean.Optional

Parameter.Int -> Integer

org.jsmpp.bean.Optional

Parameter.Short -> Short

org.jsmpp.bean.Optional

Parameter.Null -> null

Consumer Message Headers

The following message headers are used by the SMPP consumer to set the request data from the SMSC in the message header

Header

Description

CamelSmppSequenceNumber

only for alert notification, deliver sm and data sm : A sequence number allows a response PDU to be correlated with a request PDU. The associated SMPP response PDU must preserve this field.

CamelSmppCommandId

only for alert notification, deliver sm and data sm : The command id field identifies the particular SMPP PDU. For the complete list of defined values see chapter 5.1.2.1 in the smpp specification v3.4.

CamelSmppSourceAddr

only for alert notification, deliver sm and data sm : Defines the address of SME (Short Message Entity) which originated this message.

CamelSmppSourceAddrNpi

only for alert notification and data sm : Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. Same as the sourceAddrNpi URI options listed above.

CamelSmppSourceAddrTon

only for alert notification and data sm : Defines the type of number (TON) to be used in the SME originator address parameters. Same as the sourceAddrTon URI options listed above.

CamelSmppEsmeAddr

only for alert notification : Defines the destination ESME address. For mobile terminated messages, this is the directory number of the recipient MS.

CamelSmppEsmeAddrNpi

only for alert notification : Defines the numeric plan indicator (NPI) to be used in the ESME originator address parameters. Same as the sourceAddrNpi URI options listed above.

CamelSmppEsmeAddrTon

only for alert notification : Defines the type of number (TON) to be used in the ESME originator address parameters. The following TON values are defined: Same as the sourceAddrTon URI options listed above.

CamelSmppId

only for smsc delivery receipt and data sm : The message ID allocated to the message by the SMSC when originally submitted.

CamelSmppDelivered

only for smsc delivery receipt : Number of short messages delivered. This is only relevant where the original message was submitted to a distribution list.The value is padded with leading zeros if necessary.

CamelSmppDoneDate

only for smsc delivery receipt : The time and date at which the short message reached its final state. The format is as follows: YYMMDDhhmm.

CamelSmppStatus

only for smsc delivery receipt and data sm : The final status of the message. The following values are defined: DELIVRD : Message is delivered to destination EXPIRED : Message validity period has expired. DELETED : Message has been deleted. UNDELIV : Message is undeliverable ACCEPTD : Message is in accepted state (that is, has been manually read on behalf of the subscriber by customer service) UNKNOWN : Message is in invalid state REJECTD : Message is in a rejected state

CamelSmppError

only for smsc delivery receipt : Where appropriate this may hold a Network specific error code or an SMSC error code for the attempted delivery of the message. These errors are Network or SMSC specific and are not included here.

CamelSmppSubmitDate

only for smsc delivery receipt : The time and date at which the short message was submitted. In the case of a message which has been replaced, this is the date that the original message was replaced. The format is as follows: YYMMDDhhmm.

CamelSmppSubmitted

only for smsc delivery receipt : Number of short messages originally submitted. This is only relevant when the original message was submitted to a distribution list.The value is padded with leading zeros if necessary.

CamelSmppDestAddr

only for deliver sm and data sm : Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS.

CamelSmppScheduleDeliveryTime

only for deliver sm and data sm : This parameter specifies the scheduled time at which the message delivery should be first attempted. It defines either the absolute date and time or relative time from the current SMSC time at which delivery of this message will be attempted by the SMSC. It can be specified in either absolute time format or relative time format. The encoding of a time format is specified in Section 7.1.1. in the smpp specification v3.4.

CamelSmppValidityPeriod

only for deliver sm : The validity period parameter indicates the SMSC expiration time, after which the message should be discarded if not delivered to the destination. It can be defined in absolute time format or relative time format. The encoding of absolute and relative time format is specified in Section 7.1.1 in the smpp specification v3.4.

CamelSmppServiceType

only for deliver sm and data sm : The service type parameter indicates the SMS Application service associated with the message.

CamelSmppRegisteredDelivery

Only for DataSm. Is used to request an delivery receipt and/or SME originated acknowledgements. Same as the registeredDelivery URI options listed above.

CamelSmppDestAddrNpi

Only for DataSm. Defines the numeric plan indicator (NPI) in the destination address parameters. Same as the sourceAddrNpi URI options listed above.

CamelSmppDestAddrTon

Only for DataSm. Defines the type of number (TON) in the destination address parameters. Same as the sourceAddrTon URI options listed above.

CamelSmppMessageType

Identifies the type of an incoming message: AlertNotification : an SMSC alert notification DataSm : an SMSC data short message DeliveryReceipt : an SMSC delivery receipt DeliverSm : an SMSC deliver short message

CamelSmppOptionalParameters

A Map<String, Object>. Starting with Camel 2.10.5 onwards, only for DeliverSm. The optional parameters sent back by the SMSC.

Note

See the documentation of the JSMPP Library for more details about the underlying library.

Samples

A route which sends an SMS using the Java DSL:

from("direct:start")
   .to("smpp://smppclient@localhost:2775?password=password&
enquireLinkTimer=3000&transactionTimer=5000&systemType=producer");

A route which sends an SMS using the Spring XML DSL:

<route>
   <from uri="direct:start"/>
   <to uri="smpp://smppclient@localhost:2775?password=password&
enquireLinkTimer=3000&transactionTimer=5000&systemType=producer"/>
</route>

A route which receives an SMS using the Java DSL:

from("smpp://smppclient@localhost:2775?password=password&enquireLinkTimer=
3000&transactionTimer=5000&systemType=consumer")
   .to("bean:foo");

A route which receives an SMS using the Spring XML DSL:

<route>
   <from uri="smpp://smppclient@localhost:2775?password=password&
enquireLinkTimer=3000&amp;transactionTimer=5000&systemType=consumer"/>
   <to uri="bean:foo"/>
</route>

Note

If you need an SMSC simulator for your test, you can use the simulator provided by Logica.