Make your SMS apps scale

posted on: August 12, 2010

A new version of Nuntium, is out and I wanted to share some of the great new features it contains.

Nuntium is an open source and free messaging service, built with Ruby on Rails. It has a simple but powerful API that you can use to integrate your application. You can use Nuntium from InSTEDD’s server or deploy it in your own machine. Join our list to get help or discuss your needs.

To put it in a simple way, Nuntium acts as your one-stop for all the messaging needs of your applications, including -but not limited to- SMS, Mail, Twitter and XMPP. It allows you to focus on your functionality without having to deal with all the crazy quirks of telephone companies infrastructure, SMS aggregators or communication protocols.

It also supports the QST protocol defined by the OpenMobile Consortium.

Every single feature built in Nuntium, is the result of a concrete need that we had during our work with messaging systems, mainly in South-East Asia -where Nuntium delivers the daily communications and disease reporting of a few thousands users- and Haiti where it served as the keystone layer for receiving and sending hundreds of thousands of messages from the 4636 shortcode. So, instead of going through the features I’ll present some examples.

Share your number among many applications

nuntium-login Once you have created your account in Nuntium, you can add as many applications as you need. Let’s imagine that after lots of negotiations you got a 1234 shortcode in Kenya and you need to use it with four applications. We’ll call them “Maternal Health”, “Road accidents”, “Disease Reporting” and “Team chat”.

For the Maternal Health application, you decided you are going to ask your users to prefix their messages with “MH”. In the case of “Road accidents”, your users are 5 specific individuals and you know their phone numbers. For “Disease Reporting” you are using a mobile application that sends SMS reports in a machine-readable format. And with your “Team chat” app you don’t want people to have to prefix their messages.

By using Rules in Nuntium you could configure that scenario, and support 4 different applications, coded in different languages, with a single number for all of them. All that, while keeping the routing logic out of your apps, and making it transparent to each one.

Rules can change properties in the message, like removing a keyword prefix or decide to which application the message should be routed. You can do simple things like matching the start of the body, or use regex expression to target very specific formats or syntaxes.

Supporting complex, emerging, dynamic ecosystems

haiti ecosystem - phase 6

In many situations you might face a constantly changing environment, in which you need to switch routing rules, deliver messages through different channels according to the carrier of the recipient, or you might have to create an infrastructure by combining plugged-in phones, direct network connections to telephone companies and international aggregators. All that while keeping track of what is going on with each single message.

haiti ecosystem - phase 3.png

Nuntium is packed with lots of tools to do so. You can:

  • Configure any number of SMPP connections to telephone companies
  • Specify an individual throttle number for each connection
  • Create rules to route messages based on their carrier, prefix, country code, or any custom attribute that you want to create
  • Track each single message with a detailed log
  • Define delivery strategies like broadcasting through different channels or choosing the most appropriate channel based on priorities
  • Configure restrictions to the use of channels, based on country, carrier or custom attributes
  • Re-route messages that failed through a specific channel, through another one
  • Track credit consumed by channels.

Tracking your messages

Nuntium gives you detailed logs of what happened to each message:

  • How and when it was received
  • Which channels were available to send it
  • Which was chosen and based on what strategy or priority
  • Errors or warnings in the communication with the telco server
  • Sucessful deliveries

Using Clickatell

Clickatell is the de-facto service for a quick, reliable, international messaging setup. They provide you with one or more numbers that you can use in several countries and carriers.

Nuntium supports the creation of a channel for Clickatell. All you need to configure are your credentials, decide if you want to use it as incoming, outgoing or bi-directional channel and the network that you got your number in. That network determines in which countries and carriers your phone number will work. Nuntium already imports periodically all the coverage tables from Clickatell, so you don’t need to worry about that.

After doing the setup, you can either pull the messages using an RSS feed, or you can configure an endpoint in your app, an Nuntium will do a post to that URL for each incoming message. That way you don’t even need to code a scheduled recurrent task to check for new messages.

Using a plugged-in phone or a gsm modem

A very common scenario in a mobile app deployment is that the use of international numbers for SMSing is either cost-prohibitive or just doesn’t work. Getting a local telephone company to provide you with a cheap number and a machine-friendly interface to read and receive messages can take some time in many countries.

The default choice in this cases is to buy a local simcard, get a cheap phone and just interface through a computer.

You can also do that with Nuntium by configuring another type of channel and downloading our mobile gateway application. It’s a java app, so you can run it under Windows, Linux or OSX.

The nice thing is that whenever you need to scale up and you have your short-code or long-code ready with a carrier or aggregator, you just add another channel and without changing a single line in your application, you are ready to go from a few messages per minute, to hundreds or thousands.

Allowing your apps to interact with users through Twitter, Email and Chat

Nuntium does more than sending SMS. You can use it for any other messaging channel you can think of. Mail is supported through POP3 and SMTP, so you can just create a gmail account and start sending and receiving mails from your app. Or create a twitter account and set it up. If you want your users to be able to chat with your application or receive notifications in their GTalk, Adium, or any other XMPP (ex-Jabber) client, you can also do it.

And all of this through only ONE interface. Your application doesn’t have to worry if it’s an SMS, email, twitter or instant message what it want to send. Just adding a prefix like “xmpp://” or “sms://” to the recipient address will tell Nuntium everything it needs to know to dispatch the message. You will also get all the incoming messages in exactly the same way.


If you need to SMS-enable your apps, or if you want to switch to something that will allow you to scale both horizontally and vertically, get in touch, we would love to help you out build a world-class app with world-class messaging powers.

Comments are closed.

View more of InSTEDD's blog posts.