Introduction
Sergel has been a SMS distributor since 2010 and has much experience in working with both operators and connection aggregators. This platform is designed to handle large traffic volumes, maintain a high availability, and make it easy to route traffic via multiple connections.
This is document describes the SMPP interface to the SMSC-platform and which parameters and commands that are required and which parameters are supported.
This document will not handle specific use cases as concatenated messages, WAP-push, Flash SMS, etc. More information about those cases can be provided by contacting support.
Supported commands
Sergel server should be treated as SMPP 3.4. The official specification can be found at https://smpp.org/SMPP_v3_4_Issue1_2.pdf.
All methods are not supported, and all differences are specified below.
Bind
The following bind commands are supported.
Transmitter
Transciever
Receiver
Required parameters:
system_id – obtained from support
password – obtained from support
Optional parameters:
addr_ton – default value if TON is set to Unknown during submit.
addr_npi – default value if NPI is set to Unknown during submit.
Unsupported parameters:
address_range
Unbind
The unbind command is supported.
Enquire link
The enquire link command is supported and should be called every 60 seconds.
Submit
The submit method should be used for delivering messages.
Required parameters:
source_addr_ton
source_addr_npi
source_addr
dest_addr_ton
dest_addr_npi
dest_addr
esm_class
data_coding
sm_length
short_message
Unsupported parameters:
service_type
protocol_id
priority_flag
schedule_delivery_time
replace_if_present_flag
sm_default_msg_id
Note that the payload tag is not supported and only one SMS may be delivered per call and it is recommended that the validity_period tag has a value of 15 minutes long at least.
Recommended TON and NPI
The following TON and NPI should be used when sending messages using submit command.
Source
The following TON and NPI combinations are supported for source address. All other combinations will be treated as invalid. The default TON from bind command will be used if TON is set to Unknown (0). The default NPI from bind command will be used if NPI is set to Unknown (0).
TON | NPI | Description |
Alphanumeric (5) | Unknown (0) ISDN (1) | Will be treated as Alphanumeric sender text |
International (1) | Unknown (0) ISDN (1) | Will be treated as MSISDN |
National (2) Network specific (3) Subscriber number (4) Abbreviated (6) | Unknown (0) ISDN (1) National (8) | Will be treated as country specific short number. |
Destination
The following TON and NPI combinations are supported for destination address. All other combinations will be treated as invalid. The default TON from bind command will be used if TON is set to Unknown (0). The default NPI from bind command will be used if NPI is set to Unknown (0).
TON | NPI | Description |
International (1) | Unknown (0) ISDN (1) | Will be treated as MSISDN |
Supported encodings
The following encodings are supported. X may contain any value.
DCS | Encoding |
0xX0 | Default GSM Alphabet with extension |
0xX2 | 8-bit binary |
0xX8 | UCS2 (ISO-10646-UCS-2) |
Configuration
Window size, we use 20 as a default but can go higher depending on your use case.
SMPP sessions, we use 2 as a default but can go higher depending on your use case.
Delivery reports
Only none or final delivery with successful/failure result are supported.
Format on delivery report:
id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx done date: yyMMddHHmm stat: <status>
Available values in status:
DELIVRD
EXPIRED
REJECTD
UNDELIV
DELETED
Supported TLS versions
From 2020-11-15 will TLS 1.2 or higher be required for all TLS connections.
At the same time support for TLS 1.0 and 1.1 will be discontinued. Versions 1.0 and 1.1 of TLS are older protocols that have been deprecated and are considered as security risks in the Internet community.
Sergel strongly recommend to use TLS if unencrypted connections are being used today. HTTP is deprecated as of 2020-09-01 by Sergel.
Connections towards the SMPP server for TLS is at port 3601 instead of unencrypted at port 3600.
You may still use TLS even if your SMPP implementation doesn't support TLS using stunnel, see https://www.stunnel.org/