Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SMPP Component

Available CamelSmppFinalStatusAvailable as of Camel 2.2

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

The Camel component currently operates as an ESME (External Short Messaging Entity) and not as an SMSC itself.

The SMS Router project provides an excellent example of an SMS Router daemon based on the Camel framework, routing messages between JMS queues (ActiveMQ) and the SMPP network.  Run multiple instances in parallel for high-availability.

Starting with Camel 2.9 you are also able to execute ReplaceSm, QuerySm, SubmitMulti, CancelSm and DataSm.

...

Div
classconfluenceTableSmall

Name

Default Value

Description

password

password

Specifies the password to use to log in to 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).

dataCoding

0

Camel 2.11 Defines the data coding according the SMPP 3.4 specification, section 5.2.19. (Prior to Camel 2.9, this option is also supported.) Example data encodings are:
0: SMSC Default Alphabet
3: Latin 1 (ISO-8859-1)
4: Octet unspecified (8-bit binary)
8: UCS2 (ISO/IEC-10646)
13: Extended Kanji JIS(X 0212-1990)

alphabet

0

Camel 2.5 Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. This option is mapped to Alphabet.java and used to create the byte[] which is send to the SMSC. Example alphabets are:
0: SMSC Default Alphabet
4: 8 bit Alphabet
8: UCS2 Alphabet

encoding

ISO-8859-1

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

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 (i.e. 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, 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 values defined 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 values defined above.

priorityFlag

1

only for SubmitSm and 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 and 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. Use the sourceAddrTon values defined above.

numberingPlanIndicator

0

Defines the numeric plan indicator (NPI) to be used in the SME. Use the sourceAddrNpi values defined above.

lazySessionCreation

false

Camel 2.8 onwards Sessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started.
Camel 2.11 onwards Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present, Camel will use these data to connect to the SMSC.

httpProxyHost

null

Camel 2.9.1: If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy.

httpProxyPort

3128

Camel 2.9.1: If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy.

httpProxyUsername

null

Camel 2.9.1: If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy.

httpProxyPassword

null

Camel 2.9.1: If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy.

sessionStateListener

null

Camel 2.9.3: You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed.

addressRange

""

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.

splittingPolicyALLOW

Camel 2.14.1 and 2.15.0: You can specify a policy for handling long messages:

  • ALLOW - the default, long messages are split to 140 bytes per message
  • TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC.  Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered.
  • REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long.
proxyHeadersnullCamel 2.17: These headers will be passed to the proxy server while establishing the connection.
maxReconnect2147483647Camel 2.18: Defines the maximum number of attempts to reconnect to the SMSC, if SMSC returns a negative bind response

You can have as many of these options as you like.

...

Div
classconfluenceTableSmall

Header

Type

Description

CamelSmppSequenceNumber

Integer

only for AlertNotification, DeliverSm and DataSm A sequence number allows a response PDU to be correlated with a request PDU. The associated SMPP response PDU must preserve this field.

CamelSmppCommandId

Integer

only for AlertNotification, DeliverSm and DataSm 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

String

only for AlertNotification, DeliverSm and DataSm Defines the address of SME (Short Message Entity) which originated this message.

CamelSmppSourceAddrNpi

Byte

only for AlertNotification and DataSm Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. Use the URI option sourceAddrNpi values defined above.

CamelSmppSourceAddrTon

Byte

only for AlertNotification and DataSm Defines the type of number (TON) to be used in the SME originator address parameters. Use the sourceAddrTon URI option values defined above.

CamelSmppEsmeAddr

String

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

CamelSmppEsmeAddrNpi

Byte

only for AlertNotification Defines the numeric plan indicator (NPI) to be used in the ESME originator address parameters. Use the URI option sourceAddrNpi values defined above.

CamelSmppEsmeAddrTon

Byte

only for AlertNotification Defines the type of number (TON) to be used in the ESME originator address parameters. Use the sourceAddrTon URI option values defined above.

CamelSmppId

String

only for smsc DeliveryReceipt and DataSm The message ID allocated to the message by the SMSC when originally submitted.

CamelSmppDelivered

Integer

only for smsc DeliveryReceipt 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

Date

only for smsc DeliveryReceipt The time and date at which the short message reached it's final state. The format is as follows: YYMMDDhhmm.

CamelSmppFinalStatusCamelSmppStatus

DeliveryReceiptState

only for smsc DeliveryReceipt: 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 (i.e. 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

CamelSmppCommandStatus

Integer

only for DataSm The Command status of the message.

CamelSmppError

String

only for smsc DeliveryReceipt 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

Date

only for smsc DeliveryReceipt 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

Integer

only for smsc DeliveryReceipt 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

String

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

CamelSmppScheduleDeliveryTime

String

only for DeliverSm: 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

String

only for DeliverSm 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

String

only for DeliverSm and DataSm The service type parameter indicates the SMS Application service associated with the message.

CamelSmppRegisteredDelivery

Byte

only for DataSm Is used to request an delivery receipt and/or SME originated acknowledgements. Same values as in Producer header list above.

CamelSmppDestAddrNpi

Byte

only for DataSm Defines the numeric plan indicator (NPI) in the destination address parameters. Use the URI option sourceAddrNpi values defined above.

CamelSmppDestAddrTon

Byte

only for DataSm Defines the type of number (TON) in the destination address parameters. Use the sourceAddrTon URI option values defined above.

CamelSmppMessageType

String

Camel 2.6 onwards: 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

Map<String, Object>

Deprecated and will be removed in Camel 2.13.0/3.0.0
Camel 2.10.5 onwards and only for DeliverSm The optional parameters send back by the SMSC.

CamelSmppOptionalParameter

Map<Short, Object>

Camel 2.10.7, 2.11.2 onwards and only for DeliverSm The optional parameters send back by the SMSC. The key is the Short code for the optional parameter. The value is converted in the following way:
org.jsmpp.bean.OptionalParameter.COctetString -> String
org.jsmpp.bean.OptionalParameter.OctetString -> byte[]
org.jsmpp.bean.OptionalParameter.Byte -> Byte
org.jsmpp.bean.OptionalParameter.Int -> Integer
org.jsmpp.bean.OptionalParameter.Short -> Short
org.jsmpp.bean.OptionalParameter.Null -> null

...

Please refer to the SMPP specification for the complete list of error codes and their meanings.

Samples

See the SMS Router source code for a full sample application.  Consider integrating your application with SMS Router through queues rather than adding the SMPP code directly to your routes, building a more loosely-coupled architecture.

A route which sends an SMS using the Java DSL:

...