What is the difference between SMS Carrier & SMS Gateway.
Also what is the role of an aggregator in Gateway ?
SMS Carriers are the wireless service providers like T-Mobile, AT&T, Verizon, etc. These companies use their own proprietary communication protocol.
We cannot connect two SMS centers if they do not support a common protocol. To deal with this, an SMS Gateway is placed between them. It will translate one protocol to another, and can be used by different wireless carriers to interconnect.
SMS Gateway software providers are referred to as SMS Aggregators. They have multiple agreements with the large mobile network providers to send and receive text messages through these networks' SMS centers.
Related
2G and 3G have been sunset in few countries and other countries will be sunsetting them soon. VoLTE feature of LTE modules is necessary to be able to do calls over 4G without 2G/3G fallback need.
Native SMS can be transmitted or received over 2G/3G circuit switched or packet switched. when 2G/3G are completely removed and we are left with 4G and 5G only. is the only way for SMS to continue is the use of IMS or are there any different solutions?
No. SMS over IMS is not the only way for the SMS to be transmitted in 4G/5G.
In both 4G and 5G (SA) architectures you can send an SMS in two ways: over IP/IMS, or over NAS (SG-SMS).
So for the equipment to send an SMS over IMS you need to first register on IMS (either VoLTE or VoWifi) including +g.3gpp.smsip parameter into the Contact header of your IMS SIP REGISTER.
If you do not inform SMS over IMS capability to the network in that registration, you'll send/receive SMS over NAS. It's very similar to an SMS sent over 2G/3G network, in the sense that the data/text is sent into a control channel and not a data channel.
The ideal way is to send SMS over IP/IMS (IMS is meant to transfer any type of data: text/audio/video/etc.), but there's the fallback solution in both 5GS and 4G networks which is SMS over NAS signaling. Because IMS capability varies a lot from operator to operator, the SMS over NAS is a very common scenario.
For more details, refer to the specifications: 3GPP TS 24.341 (Support of SMS over IP networks) and 3GPP TS 24.301 (Non-Access-Stratum protocol for EPS).
SMS can be sent over IMS using the IMS Core.
If there is an existing LTE network but no IMS support, still the SMS can be sent or received over the SG interface in the LTE network.
Many operators use the SG interface to deliver and receive SMS.
What software/hardware do the SMS centers use to make the following possible:
An SMS is received to a number. The SMS is routed to one of X machines (Mac/PC). An operator responds to the sender.
It seems that a GSM modem is needed? However, I have trouble understanding the architecture.
Is there any plug-and-play solution? Are there any specific frameworks/languages/tools for building such a system? How do you route incoming messages to machines? How do you queue outgoing text messages?
For getting SMS there are at least 2 types of numbers exist: real (simcards) and virtual (VLN).
Real numbers:
-simcards you need to own and to insert into devices called gsm-gateways or gsm-modems, gsm-modem pools etc. These devices are like collection of many mobile phones, they will collect and/or keep/forward all incoming SMS (to some DB, to server/script etc.)
-to make lot of users manage SMS you need some tool. Most common - webserver with appropriate GUI software. Webserver collects all SMS into DB (by downloading them from gsm-gateways via protocols like SMPP or HTTP, or by geting as HTTP Requests from devices). Via some WEB-GUI you can make messages available to your operators for replying.
Virtual numbers (VLN) (provided by most SMS operators):
-no need for hardware. Just contract operator for numbers, then connect via HTTP API or some protocol like SMPP for collecting inbound SMS on these numbers, or get them on your server as HTTP Requests from operator's server.
-WEB-GUI the same as for real numbers
So basically the flow is:
for Real numbers: SMS Origination from phone -> GSM-operator (Vodaf... etc) -> SIM-Card (Vodaf...) in GSM-gateway -> GSM-Gateway API -> Your Web-GUI
for Virtual numbers: SMS Origination from phone -> GSM-operator (Vodaf... etc) -> SMS Service provider (Clicat... etc.) API -> Your Web-GUI
There are some software titles free and paid available for each task.
Any organisation with a large amount of traffic will most likely use a connection to an opertors SMSC (SMS Message Centre in an operators network) via an IP interface and the SMPP protocol.
The SMPP protocol is an open standard designed to bridge the IP web world to the CCITT No.7 messaging world in the telcos, and allow web services be built to send an receive SMS's.
There are also providers who provide aggregation services for SMS - some are independent and some are 'preferred partners' of an operator (e.g. http://developer.att.com/technical-library/app-certification-policies/working-with-aggregators)
One of my customer is asking for setting up his own sms gateway, where his employees share sms freely. I suggested him to go with 1 of the bulk SMS API offered by other vendors. But he is willing to setup his own.
So when i went through different open source SMS gateways i found Kannel is best one. But it looks like we need to buy GSM SIM with some SMS package with GSM modem. By this every SMS sent will be chargable.
My questions is, how do way2sms, 160by2 works? I mean do they get charged by there vendor for free SMS sent by users? If no, Then how users are able to send free SMS?
Free sms is impossible with Kannel. Best way to deal with kannel is buying a sms-server service from a service provider. It will be very cheaper than normal connection fees.
USB Modem will give you problems when try to send bulk sms.
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.
Is it possible to get all the SMS forwarded to a mobile number? Is there any web service provider you know of?
Some (near) duplicates:
SMS API Suggestions
How do I design sms service ?
Receive SMS messages by web application
Free SMS API
What is the best way to handle incoming SMS messages?
plus others, if you search for SMS and incoming or receiving.