Posted by on Jun 14, 2007 in Support Blog

Topic Keywords: , , , ,

From time to time we get asked questions about USSD support in NowSMS.

The quick answer is that, yes, NowSMS can support USSD … assuming that you can connect to the USSD gateway using SMPP.

SMPP extensions have been defined specifically for the support of USSD, so that you don’t have to use yet another protocol.

However, before you get too excited … let me explain how USSD works … more from a user perspective … not the tech nitty-gritty.

On T-Mobile in the US, you can type in #646# and press the call button … after a short wait, a response will appear on your screen telling you how many minutes you have used that month. You can get something similar on AT&T Wireless/Cingular by typing *646# and pressing the call button. (Or on Vodafone UK, try *#100# and it will respond back with your phone number if you’re having a senior moment.)

The bottom line is that there are a lot of these codes out there … they are all operator specific … some are available only to contract customers, some only to pay-as-you-go.

These simple request/response applications are built using USSD. From a user perspective, USSD provides something similar to a 2-way SMS, except that you generally can’t save the response that you get back.

All USSD codes are operator specific. So they are different from SMS short codes where, at least within country, there is interoperability support amongst the operators to allow cross operator short codes.

If you want to deploy a USSD application, then you need to be a mobile operator, or you need to do it through a connection to an operator’s USSD gateway. You can’t just use a GSM modem. You can’t just go to a bulk SMS provider and get a connection. You need to go to the mobile operator … and even more challenging, you need to find someone at the operator that has a clue what you are talking about.

So, when we get asked questions about USSD support, sometimes it is a technical curiosity question … people looking for potentially cheaper alternatives to SMS. In those cases, generally, it is not worth pursuing.

But if you are a mobile operator, USSD is convenient for some simple applications. And if your USSD gateway support SMPP, then the 2-way facility in NowSMS can be used to build a USSD request/response application.

To support USSD in SMPP, an optional parameter extension is used. This parameter must be defined by adding the following section to SMSGW.INI:


When this parameter is present, if NowSMS receives a message via SMPP where this paramter is set, NowSMS will automatically append “&SMPPOption_ussd_service_op=value” to the 2-way URL. It is not necessary to add any variables to the 2-way command template, as these values will be appended automatically if present in a received message.

I’m not an expert at USSD, but people who have used NowSMS for USSD applications have told me that when sending back USSD response, it is necessary to set a ussd_service_op value when sending back the reply.

From what I have been told, usually the value that needs to be set is the same each time. In that case, it is possible to edit SMSGW.INI, and under the [SMPP – host:port] section that defines the SMPP connection to the USSD gateway, you can add DefaultSMPPOptions=ussd_service_op=x … where x is the value that you want to set for this parameter. NowSMS will then set that parameter value for all messages sent via that SMPP connection.

If you need to set different values for this parameter, then it is necessary to include the “&SMPPOption_ussd_service_op=x” parameter when making an HTTP request to submit a message via NowSMS. If you need to do this for a 2-way command response, see

Based upon past customer discussions, sometimes it is also necessary to set the SMPP service_type value. Unlike the SMPPOptions parameter above, NowSMS supports the service_type parameter differently. To pass the service_type value to a 2-way command, the command template must include the replaceable parameter @@SERVICETYPE@@. To specify a service type when submitting a message to NowSMS via HTTP, use “&ServiceType=xxxx” in the URL request. To set a default service_type value for an SMPP connection, edit SMSGW.INI, and under the [SMPP – host:port] section, add ServiceType=xxxx.

That’s my brain dump on USSD …

There have a been a few past USSD related discussions on the NowSMS discussion board, so it may be worth searching there using a keyword of USSD … but probably more of those discussions that I’ve been involved in have been over e-mail. A quick search shows the following past threads on the discussion board:


For comments and further discussion, please click here to visit the NowSMS Technical Forums (Discussion Board)...