SMPP — provides access to an SMSC (Short Message Service Center) over the SMPP protocol
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 to implement the connections.
As of Apache Camel 2.9, you can also execute
ReplaceSm
, QuerySm
,
SubmitMulti
, CancelSm
, and
DataSm
.
Maven users need to add the following dependency to their pom.xml
file:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-smpp</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
The URI scheme for an SMPP endpoint is as follows:
smpp://[username
@]hostname
[:port
][?options
] smpps://[username
@]hostname
[:port
][?options
]
If no username
is provided, Apache Camel provides the default value
smppclient
.
If no port
number is provided, Apache Camel provides the default value
2775
.
If the protocol name is smpps
, Apache Camel tries to use SSLSocket to
initialize a connection to the server.
Table 40, “SMPP Options” lists the options for a SMPP endpoint.
Table 40. SMPP Options
Name | Default Value | Description |
---|---|---|
password
|
password
| Specifies the password to use for logging into to the SMSC. |
systemType
|
cp
| Categorizes the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters). |
dataCoding
|
0
|
Defines encoding of data according the SMPP 3.4 specification, section 5.2.19. Example data encodings are:
|
alphabet
|
0
| Apache Camel 2.5: Defines the encoding of data according to
the SMPP 3.4 specification, section 5.2.19. This option is mapped to
Example alphabets:
|
encoding
|
ISO-8859-1
| Apache Camel 2.5: 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, SubmitMulti, CancelSm, and DataSm: Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined:
|
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:
|
sourceAddr
|
1616
| Defines the address of SME (Short Message Entity) which originated the 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:
|
destAddrTon
|
0
|
Only for SubmitSM, SubmitMulti, CancelSm,
and DataSm: Defines the type of number (TON) to be
used in the SME destination address parameters. Use the values
defined in
|
sourceAddrNpi
|
0
|
Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined:
|
destAddrNpi
|
0
|
Only for SubmitSM, SubmitMulti, CancelSm,
and DataSm: Defines the numeric plan indicator (NPI)
to be used in the SME destination address parameters. Use the values
defined in |
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:
|
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:
|
typeOfNumber
|
0
|
Defines the type of number (TON) to be used in the SME. Use the
values defined in |
numberingPlanIndicator
|
0
|
Defines the numeric plan indicator (NPI) to be used in the SME.
Use the values defined in |
lazySessionCreation |
false
|
Apache Camel 2.8: Specifies whether to create sessions lazily to avoid exceptions that occur if the SMSC is unavailable when the Camel producer is started. |
httpProxyHost |
null
|
Apache Camel 2.9.1: Enables tunneling SMPP through the specified HTTP proxy. To enable, set this option to the hostname or ip address of your HTTP proxy. |
httpProxyPort |
3128
|
Apache Camel 2.9.1: Enables tunneling SMPP through the specified HTTP port. To enable, set this option to the port number of your HTTP proxy. |
httpProxyUsername |
null
|
Apache Camel 2.9.1: Enables basic authentication for an HTTP proxy. If your HTTP proxy requires basic authentication, set this option to the required username. |
httpProxyPassword |
null
|
Apache Camel 2.9.1: Enables basic authentication for an HTTP proxy. If your HTTP proxy requires basic authentication, set this option to the required password. |
sessionStateListener |
null
|
Apache Camel 2.9.3: Specifies a
reference to an
|
You can include as many of these URI options as you like, for example:
smpp://smppclient@localhost:2775?password=password&enquireLinkTimer=3000&transactionTimer=5000&systemType=consumer
Table 41, “SMPP producer headers” describes the message headers that affect the behavior of the SMPP producer.
Table 41. SMPP producer headers
Header | Description |
---|---|
CamelSmppDestAddr
| Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS. |
CamelSmppDestAddrTon
|
Defines the type of number (TON) to be used in the SME destination address parameters. The following TON values are defined:
|
CamelSmppDestAddrNpi
|
Defines the numeric plan indicator (NPI) to be used in the SME destination address parameters. The following NPI values are defined:
|
CamelSmppSourceAddr
| Defines the address of SME (Short Message Entity) which originated this message. |
CamelSmppSourceAddrTon
|
Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined:
|
CamelSmppSourceAddrNpi
|
Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined:
|
CamelSmppServiceType
|
The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined:
|
CamelSmppRegisteredDelivery
|
Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined:
|
CamelSmppPriorityFlag
|
Allows the originating SME to assign a priority level to the short message. Four Priority Levels are supported:
|
CamelSmppScheduleDeliveryTime
| 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
| 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. |
CamelSmppReplaceIfPresentFlag
|
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:
|
CamelSmppAlphabet/CamelSmppDataCoding
|
Apache Camel 2.5 For SubmitSM, SubmitMulti,
and ReplaceSM (Prior to Apache
Camel 2.9: use |
The following message headers are used by the SMPP producer to set the response from the SMSC in the message header
Table 42. SMPP headers for the SMSC
Header | Description |
---|---|
CamelSmppId
| Specifies the id to use to identify the submitted short message for later use (delivery receipt, query sm, cancel sm, replace sm). |
CamelSmppSentMessageCount
| Apache Camel 2.9: only for SubmitSm and SubmitMultiSm: The total number of messages that have been sent. |
CamelSmppError
|
Apache Camel 2.9: only for
SubmitMultiSm: The errors that occurred by sending short
messages in the form Map<String, List<Map<String,
Object>>> (messageID : (destAddr : address, error :
errorCode)) . |
The following message headers are used by the SMPP consumer to set the request data from the SMSC in the message header.
Table 43. SMMP consumer headers
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. The following NPI values are defined:
|
CamelSmppSourceAddrTon
|
only for alert notification and data sm: Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined:
|
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. The following NPI values are defined:
|
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:
|
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 it's final state. The format is as follows: YYMMDDhhmm. |
CamelSmppFinalStatus
|
only for smsc delivery receipt and data sm: The final status of the message. The following values are defined:
|
CamelSmppCommandStatus
| only for DataSm: The command status of the message. |
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 data sm: Is used to
request an delivery receipt and/or SME originated acknowledgements.
The following values are defined: |
CamelSmppDestAddrNpi
|
only for data sm: Defines the
numeric plan indicator (NPI) in the destination address parameters.
The following NPI values are defined: |
CamelSmppDestAddrTon
|
only for data sm: Defines the
type of number (TON) in the destination address parameters. The
following TON values are defined: |
CamelSmppMessageType
|
Apache Camel 2.6: Defines the type of incoming messages:
|