Please I'll like to know the difference between SMS and SMPP or at the very least get pointed to a good resource that breaks down this difference in layman terms. I'm currently on a project where the product vendor says the product only supports SMPP for inbound messages so it cannot be integrated to an SMS gateway. I've tried researching the fundamental peculiarities of SMPP that makes the integration with an SMS gateway for inbound messages impossible for this product but my research has yielded nothing material so far.
I'll really appreciate your feedback as the project is basically at an impasse due to the insistence of the vendor on SMPP.
SMPP is the protocol used to send SMS. Currently there are 2 ways to send a SMS. Either by SMPP (beneath the TCP protocol) or by SS7 (which requires hardware and is costly).
Usually SMS gateways are SMPP which is weird that you are not able to integrate it with it.
In brief, the SMPP protocol does the below:
Client binds to the server (Bind Request) / Server Accept or Reject
bind (Bind Response)
Client Sends SMS (Submit-SM) / Server accepts or Rejects SMS (Submit
Resp) server also includes the message Id
Server sends the DLR with the same message Id in the submit
response(Deliver-SM) / Client acknowledge the DLR (Deliver Resp)
Theres also an Enquire Link sent from the client and its response from the server to keep the connection from timing out usually 30 seconds.
Here's a link describing the SMPP Protocol in details:
http://opensmpp.org/specs/smppv34_gsmumts_ig_v10.pdf
Related
I successfully installed JasminSMS on Ubuntu, added SMS provider informations such as hostname, port, user and password, but failed to receive test SMS using HTTP API:
http://127.0.0.1:1401/send?username=foo&password=bar&to=*********&content=hello
I'm writing my own number, but I don't receive it. What other configuration do I need to do?
In this scenario (you want to terminate an SMS message by using Jasmin's HTTP API) you need:
Jasmin SMS Gateway installed
An HTTP user configured in Jasmin SMS (this can be done in the included CLI)
An SMPP connector configured in Jasmin SMS to connect to an SMS service provider. The credentials will be supplied by your SMS vendor of choice.
A routing rule in Jasmin SMS Gateway to decide which SMPP connector to use
This is all well-documented here https://docs.jasminsms.com/en/latest/installation/index.html#sending-your-first-sms
If your HTTP API call is successful you'll receive an HTTP success code (200) and a GUID. Jasmin SMS then tries to deliver the SMS message via the SMPP connector (according to the routing rule configured). If your SMS message was not received you need to look into the used SMPP-connector to troubleshoot further. If the message has been accepted by the SMPP connector of choice you'll have to contact your SMPP vendor and ask them to look into the possible delivery issues.
An SMS vendor is basically a company with agreements to various operators & aggregators around the world specializing in delivering SMS messages globally (or locally of course depending on their focus) for a price.
make sure u enter the smsc creditntials on the smpp connector and mae sure it is started(smppccm -1 cid) and check its sessision if it is bound smppccm -l
I send SUBMIT_SM command with all required data and successfully get SMS to my mobile phone.
I see on my SMPP server log that DELIVER_SM_RESP is received from SMSC but I can't see logic how to request from my api (that i'm building) to get this DLR.
Do I run:
DELIVER_SM = 0x00000005
or
QUERY_SM = 0x00000003
I tried with both but for DELIVER_SM got error, and can't see nothing in QUERY_SM.
Please advise, thanks in advance.
Vedran
A delivery receipt will be sent back to your SMPP server via a DELIVER_SM message if you have the registered_delivery field set correctly in your message (make sure). Are you using Kannel or some other SMPP server or did you write your own?
Your SMPP stack software is the one responsible of handling any received DELIVER_SM containing valid message-receipt-acknowledgement content and pushing it to your API through SMPP, HTTP or whatever enabled protocol, what's your SMPP stack ?
How does Twillio get to send so many messages via SMS? I am thinking about making my own service for my company for internal use, but I am trying to discover how they managed to do that in such a large quantity while still remaning afloat? Are they using some sort of connection with a large set of phones, and automagically sending the messages from their actual devices? Wouldn't their service provider frown upon that kind of volume?
They are at most using SMPP protocol to send SMS messages directly to their service. SMPP is a protocol widely used for sending mass (bulk) SMS messages between third-party and operator.
Excerpt from Wikipedia:
The protocol is based on pairs of request/response PDUs (protocol data
units, or packets) exchanged over OSI layer 4 (TCP session or X.25
SVC3) connections. PDUs are binary encoded for efficiency. Data
exchange may be synchronous, where each peer waits for a response for
each PDU being sent, and asynchronous,
See full Wikipedia article: Short Message Peer-to-Peer
I read that a GSM modem can only receive up to 30 SMS per minute. What would you do if you need to receive more than that? Is there another technology?
I think you might want something different to those answers listed at What are the best practices for building an SMS server
If you just have one service that is running where you want to receive many SMS then it would be most cost effective (and simplest) to avoid integrating with a mobile network operator and instead use a SMS aggregator. These often call themselves SMS gateways, but they are independent companies and not a mobile network operator's gateway.
An SMS aggregator acts as a middle man between you and the networks - they have agreements with many network operators and this interconnection means you can link with one aggregator and get access to almost every network in the world.
Aggregator's usually advertise for outbound SMS (where you are sending an SMS from your application to a user), but they all offer inbound SMS as well. Depending on your country you could opt for a premium number or free to receive number. A premium number would mean that the person sending the text message would pay extra money to send you a message - you may want this for a commercial service in order to bill the user. A premium number would also mean you receive a share of the money the user paid to send you the text message. A free to receive number would not cost the person sending the text message anything more than it would normally cost for them to send an SMS. Almost all aggregators will charge you a monthly rental for a free to receive inbound telephone number, but no additional charge per message received.
You can expect to integrate with an aggregator using HTTP or SMPP. HTTP is usually the easiest and the aggregator will want to know where to send the HTTP post when a message is received on your telephone number. Therefore you will need some sort of service that is running to receive the HTTP post from the aggregator, and possibly a way to reply to the user by sending another HTTP post back to the aggregator asking them to forward a message to the user confirming receipt of the inbound SMS message.
SMPP is a more robust protocol and is often used for high volume SMS applications - unless you already have SMPP experience or are sending many hundreds of thousands of messages you may want to avoid SMPP as it is difficult to implement until you have a lot of experience with SMS.
Some aggregators will provide their own platform where you don't need to have your own service running. For example you could setup a simple "autoresponder" on an aggregators website, this would receive the inbound message from the user, then autopmatically respond with a "thank you message". All interaction is done by the aggregator and you can log on periodically to download statistics or look at the messages people have sent.
Popular aggregators are:
InfoBip
Silverstreet
mBlox
If you do not have your own platform for managing the SMS interaction then either use the aggregator's own platform of install your own SMSC gateway. Some SMSC's are:
Kannel - Open Source, fairly difficult to install and manage.
NowSMS - Commercial software. Powerful, windows only, easy to use SMPP integration and has a 30 day free version. Allows GSM modems, HTTP and SMPP integration. Most expensive of these options but pricing is based on number of messages you want to send OUT per second / minute so if you're not planning on sending many out and only receiving them maybe this would be a viable option. There's a cheaper version where you can use one GSM modem (mobile phone) connected to a computer with a USB lead but as you will only have one GSM modem and no aggregator's you are limited to the speed at which your device can receive inbound SMS.
Ozeki - Commercial software. Lots of documentation available and the support team are very responsive. You can add local GSM modems or aggregator's using HTTP or SMPP.
I am using the ruby smpp library to send/receive SMS. Right now we are sending messages to two different servers, using the ruby-smpp library. One of them works perfectly, but the other one sends multiple DELIVRD confirmations for each messages. And by multiple I mean hundreds of confirmations per message in some cases.
Does anyone know any possible reason behind this? I am thinking on something relative to the implementation of the protocol the company is using, since it works perfectly with the other one, and not on the lines of a bug in the specific smpp ruby library. We are using smpp v3.4.
I haven't used the Ruby library yet, but I'll tap my basic SMPP knowledge to attempt an answer...
It sounds like you are asking for a delivery acknowledgement, but your server is not acknowledging the receipt of the delivery acknowledgement.
Page 31 of the SMPP v3.4 spec shows:
(you are on the left)
submit_sm ->
<- submit_sm_resp
<- deliver_sm
deliver_sm_resp ->
You could do a submit_sm without delivery receipt.