Topic Keywords: 2-way SMS, routing
If you need control over routing to particular SMSC connections, the logic in NowSMS works like this:
When NowSMS routes a message, it first looks to see if a sender address has been specified for the message submission (normally there is not a sender address specified, unless either you submitted the message via HTTP and specified a “Sender=” parameter, or a “Forced Sender Address” is configured for the user account that is submitting the message). If a sender address was specified, then NowSMS checks to see if the sender address matches the “Default Sender Address” that is configured for any of the SMSC links (or the “Phone Number” associated with a GSM modem). If NowSMS finds a match, then it will route the message only via an SMSC connection with a matching sender address.
(Note: It is possible for the “Default Sender Address” field to include a comma delimited list of phone/shortcode numbers, indicating that a message with a sender address that matches any of these numbers should be routed via the connection.)
If NowSMS did not find a match on the sender address, then it evaluates the recipient address, and it will look to see if it finds a match in the “Preferred SMSC Connection for” recipient address masks associated with any of the SMSC connections. (These recipient address masks can be wildcards such as “+44*” to match any phone number that starts with “+44”.) If NowSMS finds a match, then it looks for the longest mask that provides a match, and routes the message via the connection with the longest matching mask. (For example, if you were sending to +447624999999, and you had one connection with a mask of “+44*”, and another with “+447624*”, then the connection with the mask of “+447624*” would be used as it is a longer match than “+44*”.)
If there is no match on the recipient address mask, then the message will be routed via any connection that has “Support any outbound message traffic” checked.
(Note: It should also be mentioned that if NowSMS found multiple matches on the sender address, it evaluates the “Preferred SMSC Connection for” recipient address masks for each of the connections that had a sender address match.)
There is also an additional HTTP parameter setting that can be used to explicitly route a message via a particular SMSC, so that you don’t have to use the sender/recipient matching logic if it is not appropriate for your configuration.
This additional HTTP parameter works like this:
When you submit a message via HTTP, the HTTP interface supports “&SMSCRoute=xxxxx”, where the value of this setting 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. For older versions of NowSMS, 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.
With mobile number portability (MNP), it can be difficult to determine the mobile operator to which any given phone number belongs. If mobile subscribers initiate their subscription to your service by sending an SMS to your short code, it may be useful for your service to remember the SMSC route from which the message was received. This way, you can be sure to route any future messages to that subscriber via the same SMSC connection. If you use the 2-way command functionality in NowSMS, include an @@SMSCROUTE@@ parameter in your 2-way command, and NowSMS will insert the received “RouteName” into this parameter value. More information on this topic can be found in the posting titled 2-way SMS: Multiple operators with the same shortcode.
Update: Additional related information can be found in the posting titled Dynamic SMS Message Routing with HTTP Callbacks.
For comments and further discussion, please click here to visit the NowSMS Technical Forums (Discussion Board)...