SMS Cast – Dynamic SMS Gateway Selection

What is SMS Cast?

SMS Cast is a Java REST service which was created to serve as a backend engine for scheduling outgoing SMS. The main itch that SMS Cast scratches is to dynamically select one of the supported gateways.

The service is hosted in Google AppEngine’s infrastructure and is used in a few personal projects as well as a commercial project that I contributed in. SMSCast backend is owned and maintained by me.

SMSCast supports Tropo, Twilio and Nexmo for SMS routing. It has a price matrix that it consumes to determine the most cost-effective option. A future planned extension (not yet implemented) is to actively monitor bounced messages and automatically switch to a reliable (yet still cost-effective) SMS provider for bounced destinations and / or blacklist the numbers.

Obviously, there is a provision to override the price matrix so that certain mobile numbers can be routed via a chosen gateway. This is primarily based on a set of prefix-based rules (i.e. regex) to route SMS via a specific gateway. For example, UK based (00447) numbers can be routed through Nexmo even though using Tropo might be a little bit budget-friendly. This also enables routing certain mobile numbers that might report issues with one gateway.

Architecture