This concept document describes using SMPP instead of REST to access NeuTrafiX Network. Implementing SMPP access requires a deep understanding of this complex telecommunications protocol and a lot of low-level development work. Most developers can safely ignore this information.
What is SMPP (Short Message Peer-to-Peer) ?
Short Message Peer-to-Peer in the telecommunications industry is an open, industry standard protocol designed to provide a flexible data communication interface for the transfer of short message data between External Short Messaging Entities, Routing Entities and Message Centres.
NeuTrafiX uses SMPP V5.0 which is backward compatible with V3.4 as well.
Encodings
NeuTrafiX SMPP implementation supports 3 encodings: ASCII (GSM 03.38), LATIN1, and UCS2. Respective data_coding for these encodings are 0x01, 0x03, and 0x08.
Default encoding for data_coding:0 is ASCII.
P.S: NeuTrafiX will pass through any encoding used by the buyer and proxy it to the seller as it was sent by the customer (Pass-thru mode)
Configuring SMPP access
You can configure SMPP access to the NeuTrafiX platform by using one of the following methods:
Standard configuration:
Login as a buyer
Click on Account
Add new Account
Choose SMPP
Enter your IP address and generate username and password (The username and password generated in the portal are the credentials you will use in your SMPP Client)
Click on Add New.
Purchase the needed SMS route from Market View.
Now you may point your SMS client to smpp.neutrafix.telin.net, Port: 2776 and enter System_ID and Password generated in the previous steps.
Final SMS Gateway Configuration will look like this:
==================
Primary Host: smpp.neutrafix.telin.net
SMPP Port: 2776
System_ID: [Generated in Buyer Portal].
Password: [Auto-Generated in Buyer Portal]
Secure Host: smpps.neutrafix.telin.net
SMPP Port: 4776
System_ID: [Generated in Buyer Portal].
Password: [Auto-Generated in Buyer Portal]
Session Timeout: 60
Enquire_Link: 30
==================
P.S: null or empty sender id will be rejected by NeuTrafiX. Make sure you set the sender id one of the white listed sender ids for your account, such as ("Alert", "OTTSMS", "Notify")
Testing NeuTrafiX SMPP from NodeJS Client:
You can use our SMPP Client sample NodeJS app to initiate your tests.
Sample Response when messages is sent and delivered successfully:
Js
GOT PDU PDU {
command_length: 53,
command_id: 2147483652,
command_status: 0,
sequence_number: 2,
command: 'submit_sm_resp',
message_id: 'f252cd96-b92b-465f-8aa4-4962550d2457' }
message sent OK
PDU {
command_length: 53,
command_id: 2147483652,
command_status: 0,
sequence_number: 2,
command: 'submit_sm_resp',
message_id: 'f252cd96-b92b-465f-8aa4-4962550d2457' }
GOT PDU PDU {
command_length: 224,
command_id: 5,
command_status: 0,
sequence_number: 11228906,
command: 'deliver_sm',
service_type: '',
source_addr_ton: 0,
source_addr_npi: 0,
source_addr: '962790326274',
dest_addr_ton: 0,
dest_addr_npi: 0,
destination_addr: 'O2App',
esm_class: 4,
protocol_id: 0,
priority_flag: 0,
schedule_delivery_time: '',
validity_period: '',
registered_delivery: 0,
replace_if_present_flag: 0,
data_coding: 0,
sm_default_msg_id: 0,
short_message:
{ message: 'id:f252cd96-b92b-465f-8aa4-4962550d2457 sub:001 dlvrd:001 submit date:1812301701 done date:1812301701 stat:DELIVRD err:000 text:' },
receipted_message_id: 'f252cd96-b92b-465f-8aa4-4962550d2457',
message_state: 2 }
PDU {
command_length: 224,
command_id: 5,
command_status: 0,
sequence_number: 11228906,
command: 'deliver_sm',
service_type: '',
source_addr_ton: 0,
source_addr_npi: 0,
source_addr: '962790320000',
dest_addr_ton: 0,
dest_addr_npi: 0,
destination_addr: 'O2App',
esm_class: 4,
protocol_id: 0,
priority_flag: 0,
schedule_delivery_time: '',
validity_period: '',
registered_delivery: 0,
replace_if_present_flag: 0,
data_coding: 0,
sm_default_msg_id: 0,
short_message:
{ message: 'id:f252cd96-b92b-465f-8aa4-4962550d2457 sub:001 dlvrd:001 submit date:1812301701 done date:1812301701 stat:DELIVRD err:000 text:' },
receipted_message_id: 'f252cd96-b92b-465f-8aa4-4962550d2457',
message_state: 2 }
Received DR: [object Object]