Specifying "SMSCRoute" parameter via SMPP client?

Specifying "SMSCRoute" parameter via SMPP client? SearchSearch
Author Message
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 202
Registered: 08-2008
Posted on Wednesday, November 05, 2008 - 04:48 pm:   

The following e-mail came into our support mailbox. I want to post it here as background information for a new feature in NowSMS that we are testing.


We run NowSMS connected to multiple carrier SMSCs and then send and receive messages via and SMPP to the NowSMS server. The setup is basically a small scale SMS aggregator. We are trying to add some new applications that require knowing the SMSC that a message orginated from and then routing a message to a certain SMSC. This should be rather easy using the SMSCRoute
parameter via HTTP but all of our apps use SMPP to connect to the Now server.

I've read the reference article on the web site that explains how to add support for optional TLVs via the SMPPOptions and how to assign DefaultSMPPOptions to an SMPP connection. This only seems to work for messages destined towards an SMSC but the default values are not assigned to messages coming in from an SMSC. Is there a way to have NowSMS insert an TLV value into a message that originated from an SMSC and is then sent out to an SME that is connected to Now via SMPP? Then when a message is received via SMPP from that same SME can they supply information that will tell NowSMS which SMSC to forward the message to? With local number portability here in the US I can't route by number ranges because some of the SMSCs serve overlapping ranges and the application uses a consistent short code so I
can't route by source address.

Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 203
Registered: 08-2008
Posted on Wednesday, November 05, 2008 - 05:20 pm:   

While this is likely to cause some confusion as people try to determine if this can apply to their configuration ... we thought this was a very good idea.

A capability to support this has been added to the 2008.11.05 release of NowSMS, which is currently available as a test version at http://www.nowsms.com/download/nowsms200811.zip.

How does it work?

As the above posting explains, this is relevant when NowSMS is used as a hub, with outbound SMSC connections to multiple providers.

In such a configuration, when you are using HTTP to interface with NowSMS, there is an "SMSCRoute" parameter that can be used to specify explicit routing for SMS messages.

If an SMS message gets routed to a 2-way command via HTTP, there is an @@SMSCROUTE@@ variable that can be included in the 2-way command to tell the command which SMSC connection the message was received from.

Similarly, when an SMS message is submitted via HTTP, a URL parameter of "&SMSCRoute=" can be specified to force the message to be routed outbound via a specific SMSC connection.

This SMSCRoute parameter/value can be the name of a defined SMSC (e.g., "Bluetooth Modem" or "SMPP - a.b.c.d:xyz"). Or, rather than using the SMSC name, it can be a route name that is defined as associated with an SMSC. To define a route name for an SMSC, it is necessary to manually edit SMSGW.INI, and under the appropriate section header (e.g., [Modem - Bluetooth Modem] or [SMPP - a.b.c.d:xyz]), add RouteName=xxxxx. It is possible for multiple SMSCs to share the same route name, meaning that if a message is submitted with "&SMSCRoute=xxxxx", it will be routed outbound over the first available SMSC that is configured with RouteName=xxxxx.

But, as the above message points out, what if the clients are connecting to NowSMS via SMPP instead of HTTP?

In the 2008.11.05 release of NowSMS (currently available as a test version at http://www.nowsms.com/download/nowsms200811.zip), we have added support for using an SMPP TLV parameter to convey the "SMSCRoute" value.

In this version, under an [SMPP] section header of SMSGW.INI, it is possible to add SMSCRouteTLV=####, where #### is the SMPP tag number (in hexadecimal) to be used for this TLV parameter.

This TLV parameter is only supported for sending/receiving SMS messages to an SMPP client that is connected to the NowSMS server (defined on the "SMSC Users" list).

This TLV parameter is NOT included in messages routed to external SMSC connections. It is used to choose which external SMSC connection is used for routing. If you need to include TLV parameters for messages routed to external SMSC connections, use the SMPPOptions settings, which are described in more detail at the following link: http://blog.nowsms.com/search/label/SMPPOptions.

When NowSMS routes a message to an SMPP client, this TLV parameter will contain the route information for the SMSC route from which the message was received (either the SMSC Host Name and port, or the RouteName= parameter configured in SMSGW.INI for the SMSC).

Similarly, the SMPP client can specify this parameter when submitting a message to request a specific outbound route for routing the message.

The SMSCRoute TLV parameter is encoded as a C-Octet string (null terminated string).

NowSMS Support
Frank Danielson
New member
Username: Fdanielson

Post Number: 2
Registered: 02-2006
Posted on Wednesday, November 05, 2008 - 07:49 pm:   

We're currently running v2006.10.31. Can I simply replace the executable with this new version?
Des - NowSMS Support
Board Administrator
Username: Desosms

Post Number: 209
Registered: 08-2008
Posted on Wednesday, November 05, 2008 - 08:01 pm:   

I'd suggest backing up EXE and DLL files.

Then run the installer from the ZIP (the only EXE file in the ZIP).

The installer will update the EXE and DLL files.