This concept document describes using SMPP instead of REST to access TelecomsXChange 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.


TelecomsXChange uses SMPP V5.0 which is backward compatible with V3.4 as well.


Encodings

TelecomsXChange 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.




Configuring SMPP access

You can configure SMPP access to the TelecomsXChange platform by using one of the following methods:


Standard configuration:


  1. Login as a buyer
  2. Click on Accounts
  3. Add new Account
  4. Choose SMPP 
  5. 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)
  6. Point your SMPP client to smpp01.telecomsxchange.com , Port: 2776 [Enter System_ID and Password generated in the previous step]
  7. Send your SMPP message.


Final SMS Gateway Configuration will look like this:


==================


Primary Host: smpp01.telecomsxchange.com

Backup Host: smpp02.telecomsxchange.com

SMPP Port: 2776

System_ID: [Generated in Buyer Portal].

Password:  [Auto-Generated in Buyer Portal] 


==================



Testing TelecomsXChange 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:


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]