All integration guides
Connect Restcomm SMSC to TelecomsXchange
In short: In the SMSC CLI, create a CLIENT ESME of bind type TRANSCEIVER to smpp01.telecomsxchange.com port 2776 with your account's SMPP System Id and SMPP Password, in its own networkId. An mproc rule moves your applications' messages into that networkId and adds the tech prefix with adddestdigprefix 80039#. To sell SMS, create a SERVER ESME for host 174.136.44.213 with the credentials you set on your TelecomsXchange route.
Restcomm SMSC to TelecomsXchange
- Your applicationsESMEs or HTTP in networkId 1
- then, adddestdigprefix 80039#, Restcomm SMSCmproc rule, then CLIENT ESME tcxc
- then, 80039#447700900123, TelecomsXchangesmpp01, TCP 2776
- Seller's SMSCThe SMS route you purchased
On this page
The Restcomm SMSC Gateway (Telestax, built on the Cloudhopper SMPP library) defines every SMPP connection as an ESME: a CLIENT ESME binds out to TelecomsXchange to send, a SERVER ESME accepts TelecomsXchange's bind when you sell. Routing between them uses networkIds and mproc rules. This guide sets up both directions from the CLI (ss7-cli.sh); the same settings are under ESMEs and mproc rules in the management GUI. For the values themselves, see Connect an SMPP platform.
Before you start#
- An SMPP account with its SMPP System Id and SMPP Password. Set its IP Address to your SMSC's public IP, for example
203.0.113.10. - An SMS route and its tech prefix, for example
80039. Below,TECH_PREFIXstands for it. - A sender ID registered on the account.
- A shell connected to your SMSC instance: start
./ss7-cli.shfrom the server'sbindirectory and connect to it.
How do I send SMS through TelecomsXchange?#
The layout below keeps your applications' ESMEs in networkId 1 and the TelecomsXchange link alone in networkId 2, so an mproc rule decides what goes to TelecomsXchange.
- Create the client ESME:
smpp esme create tcxc SYSTEM_ID SMPP01_IP 2776 TRANSCEIVER CLIENT password PASSWORD networkid 2 interface-version 3.4 enquire-link-delay 30000 window-size 10 routing-ton -1 routing-npi -1 routing-range ^.*
smpp esme start tcxctcxcis the ESME's name;SYSTEM_IDandPASSWORDare the account's SMPP System Id and SMPP Password.SMPP01_IPis the address ofsmpp01.telecomsxchange.com. Resolve it withdig +short smpp01.telecomsxchange.comif your version only takes an IP here.routing-range ^.*lets this ESME carry any destination, including the#the prefix adds; the default^[0-9a-zA-Z]*doesn't allow#.
-
Make sure your applications' ESMEs are in networkId
1(networkid 1when you create them, orsmpp esme modify <name> networkid 1). -
Add the mproc rule that moves their messages to TelecomsXchange and adds the prefix:
smsc mproc add mproc 1 networkidmask 1 newnetworkid 2 adddestdigprefix TECH_PREFIX#With TECH_PREFIX = 80039, a message to 447700900123 leaves as 80039#447700900123. To send only some destinations, add destdigmask with a regular expression, for example destdigmask ^44.*.
Tip
Messages from the HTTP connector get the networkId given in the request, or the configured default; set it to 1 so the same rule applies.
adddestdigprefix runs at the Arrival trigger, before routing, so the TelecomsXchange ESME's routing-range sees the prefixed number. Have your applications send numbers in E.164 without + or 00.
How do I receive delivery receipts?#
Your applications ask for a receipt with registered_delivery as usual. TelecomsXchange returns deliver_sm with id:<message_id> and stat:DELIVRD on the tcxc bind; the SMSC Gateway recognises it as a receipt for the original message.
Because the receipt arrives in networkId 2, tell the SMSC to route receipts to the networkId the original message came from:
smsc set orignetworkidforreceipts trueCheck the result with one test message and swap the value if receipts don't reach the originating ESME: the admin guide describes the option both ways. Receipts are relayed by TelecomsXchange only while the tcxc bind is up.
How do I receive SMS from TelecomsXchange as a seller?#
Create a SERVER ESME that accepts TelecomsXchange's bind, in a networkId of its own:
smpp esme create tcxc-in TCXC_SYSTEM_ID 174.136.44.213 -1 TRANSCEIVER SERVER password TCXC_PASSWORD networkid 3
smpp esme start tcxc-inTCXC_SYSTEM_IDandTCXC_PASSWORDare the SMPP System Id and SMPP Password you set on your SMS route under Routes → My Routes.174.136.44.213 -1accepts the bind from TelecomsXchange's IP on any source port. To accept several sessions, create one ESME per session with the same system ID and a different name, up to your route's Allowed BIND Sessions.- Add an mproc rule that moves this traffic to the networkId of your delivery path, for example
smsc mproc add mproc 2 networkidmask 3 newnetworkid 0for SS7 in networkId0, and keeporignetworkidforreceiptsso receipts return totcxc-in.
On the route, enter your SMSC as IP:2776 (the SMPP server port; change it with smpp smppserver set port), SMPP Version 3.4, and TLS No: Restcomm enables SSL only on CLIENT ESMEs.
Inbound SMS for numbers you sell: create another CLIENT ESME to smpp01.telecomsxchange.com port 2776 with system ID did and password did (or your custom DID credentials), with a routing-range that matches your numbers and no prefix rule. When you buy numbers, TelecomsXchange binds to the number's SMPP Endpoint, so point it at a SERVER ESME: smpp:LOGIN:PASSWORD:number@203.0.113.10:2776.
How do I test it?#
- Run
smpp esme show tcxc; the ESME should be started and bound. On TelecomsXchange, the account's Bind Status shows ONLINE. - Send a test message from one of your ESMEs in networkId
1to447700900123. - Check
cdr.login the server's log directory: the record shows the destination80039#447700900123, the ESMEtcxcand the delivery status;smsc stat getshows messages in process. - Go to Logs → SDR (SMS), choose All Messages and click Search SMS.
What if something goes wrong?#
| You see | What to do |
|---|---|
ESME tcxc never binds; bind status 0x0D |
Check the system ID and password, and that the SMSC binds from the account's IP address or an additional allowed IP. |
submit_sm_resp status 0x45 (69) |
TelecomsXchange refused the message: no route or rate for the prefix, blocked route, low balance, sender ID not allowed or rate limit. Check Failed Only in the SDR, and lower the ESME's window or rate. |
Messages don't reach the tcxc ESME |
The mproc rule didn't match (check networkidmask and destdigmask) or routing-range excludes #. |
| Messages arrive without the prefix | adddestdigprefix is missing or on a rule that didn't match. |
Status 0x01 |
The route takes single messages only. Send long texts as UDH parts. |
Status 0xFE (254) or 0x08 |
The seller timed out or the platform failed to forward; the SMSC reschedules temporary failures. Use a routing group with a failover route. |
| Receipts don't reach your application | Check orignetworkidforreceipts and that the tcxc bind stayed up. The SDR still shows the delivered status. |
| Selling: Test Bind "has FAILED" | The SERVER ESME's system ID or password don't match the route, the ESME isn't started, or TLS is on. |
| Selling: "host/port is probably unreachable" | The SMPP server isn't on that port or 174.136.44.213 is blocked. |
References#
- Restcomm SMSC Gateway admin guide: ESME settings
- Restcomm SMSC Gateway admin guide: mproc rules and routing fundamentals
- Restcomm SMSC Gateway admin guide: SMPP server settings
- Restcomm SMSC Gateway admin guide: server settings (receipt routing)
- Restcomm SMSC Gateway admin guide: monitoring and CDR log
Common questions
Is Restcomm SMSC built on jSMPP?
No. The Restcomm (Telestax) SMSC Gateway uses the Cloudhopper SMPP library. It binds to TelecomsXchange as a client ESME and accepts TelecomsXchange's bind as a server ESME.
How do I add the tech prefix?
With an mproc rule: adddestdigprefix adds digits to the start of the destination address when the message arrives, for example adddestdigprefix 80039# turns 447700900123 into 80039#447700900123.
Can TelecomsXchange bind to Restcomm over TLS?
No. Restcomm enables SSL only on CLIENT ESMEs, so set TLS to No on your TelecomsXchange SMS route when it binds to a SERVER ESME.
Which port does Restcomm listen on for TelecomsXchange's bind?
The SMPP server port, 2776 by default; change it with smpp smppserver set port. Enter that port on your TelecomsXchange route.
- Is Restcomm SMSC built on jSMPP?
- No. The Restcomm (Telestax) SMSC Gateway uses the Cloudhopper SMPP library. It binds to TelecomsXchange as a client ESME and accepts TelecomsXchange's bind as a server ESME.
- How do I add the tech prefix?
- With an mproc rule: adddestdigprefix adds digits to the start of the destination address when the message arrives, for example adddestdigprefix 80039# turns 447700900123 into 80039#447700900123.
- Can TelecomsXchange bind to Restcomm over TLS?
- No. Restcomm enables SSL only on CLIENT ESMEs, so set TLS to No on your TelecomsXchange SMS route when it binds to a SERVER ESME.
- Which port does Restcomm listen on for TelecomsXchange's bind?
- The SMPP server port, 2776 by default; change it with smpp smppserver set port. Enter that port on your TelecomsXchange route.
Finished this guide?
This guide matches platform build 83b4ebc9. Markdown version.