How to develop my own sms Gateway? - c#

I intend to develop an SMS gateway in c#, but i am doubtful about it's feasibility, because my initial research had shown that an SMS gateway had to cover for protocol differences.
So what exactly a gateway had to do, further if i use SMPP, so is it possible to send/receive SMS to/from any number in the world by simply using SMPP ?

A "true" SMS gateway will need to generate an SMPP request in the the correct format (yes there are several types like CIMD & EMI) and dispatch it to the mobile networks SMSMC for sending.
You would need a direct connection to, and contract with the network(s) you use on the back end. The countries you would be able to send to will depend on the what the network provider supports/allows.
Creating one is difficult & expensive, why not use an SMS aggregator who have already done all the hard work, for example http://www.clickatell.com/.

I don't know anything about creating a gateway but I'm fairly sure that the answer to so is it possible to send/receive SMS to/from any number in the world by simply using SMPP is no. I looked at a few online SMS services a year or two ago and all of the ones I looked at listed networks/countries where messages could/couldn't be sent to.

Related

Building Bulk SMS Web Application

We are creating a bulk SMS messages sending Web application using ASP.NET web Forms and C#.
There could be multiple logged-in users, sending bulk (1-5000) messages to their clients.
As per initial R&D we have selected to use Twilio's SMS API for this purpose.
But I am anxious about potential timeout issue while sending messages and saving response in loop, Also does Twilio accept multiple request instances?
Twilio has a limit or 1 message per second Then we can only send 3600 messages in one Hour, that would be a limitation.
Twilio provide Rest API but we are not familiar with MVC, so REST API idea has been dropped.
Please suggest other alternative, best practice and strategy to accomplish the task.
------------------UPDATE------------------------
Short Code Rest API Documentation
https://www.twilio.com/docs/api/rest/short-codes
Twilio Sending Documentation
https://www.twilio.com/docs/api/rest/sending-messages
Request Data From Twilio Documentation
https://www.twilio.com/docs/api/twiml/sms/twilio_request
With those volumes, there is no way you are going to be able to get by without using an SMS shortcode. Even if you could technically get it to work with a regular number, I suspect you would be shutdown as a spammer pumping out so many messages on a regular phone number.
A short code will let you send at at least 30 messages per second (1800/minute), and supposedly they can up that for you if you have a justified need.
https://www.twilio.com/sms/shortcodes
and this:
https://www.twilio.com/help/faq/sms/can-my-twilio-sms-messages-be-blacklisted-as-spam
Can my Twilio SMS messages be blacklisted as spam?
Recipient carriers always reserve the right to filter out messages
from certain numbers, and routinely do so to protect their users from
spam.
If you’ll be sending SMS messages as part of a bulk campaign (with 30
or more identical or similar messages going out within a few minutes),
we discourage you from using regular 10-digit numbers. Instead, we
highly recommend using an SMS short code.

How do I convert text-to-call?

Am building an app for WP7 Mango version. The requirement is that when ever a message is sent from that app to a predefined set of contacts, in case the number to which the message is sent is not capable of receiving messages, then, a call should be made to such numbers and the text message (intended to be sent) should be read out to on the call to the call-receiver.
I have a huge doubt that this is achievable on WP7. Am I wrong in thinking so? Is there any way that this can be achieved? If yes, how?
Well...
There is a launcher which allows an app to send SMS, but it requires user interaction, and the user can change the SMS before sending. So you have no way to know exactly which SMS was sent.
There's no API on the phone to check whether a phone number can receive SMS or not (but maybe you can figure that out yourself using the phone number prefix or something)
There's no way to programmaticaly dial a number
There's no way to play a sound to the call-receiver. Arguably the user could turn on the phone's speaker while the app plays the sound out loud
There's no way to programmaticaly tell when the call-receiver has answered the phone call. So the user would have to manually push a button in the app when the call-receiver answers
In conclusion, while it might somehow be possible, it would require so much user interaction that the app would be pretty much pointless ;)
You could achieve these requirements using an SMS and IVR service in the cloud, such as SMSIfied and Prophecy, instead of attempting to do it directly from WP7.
SMSIfied lets you send and receive text message through a simple to use REST API. You can also get the results of sending the text message in a callback. Here is a blog post "Sending SMS messages with C# and SMSified".
For phone number that will not accept SMS you can use Prophecy to dial the number and play the message using Text-To-Speech (TTS). Prophecy is programmed using the open W3C standards Call Control XML (CCXML) and VoiceXML. You use CCXML to perform the outbound dialing and when the user or answering machine answers you pass control to VoiceXML application that handles the TTS. The Prophecy IVR has excellent call progress analysis which makes it easier to get the whole message on the answering machine/voice mail. Have you ever gotten those chopped messages from an automated system? The Voxeo documentation on CCXML has good coverage on how to perform outbound dialing in Chapter F. There is a good open source project called VoiceModel that makes it easier to develop VoiceXML applications using ASP.NET MVC 4.
To initiate this outbound dialing request from WP7 would just require an HTTP request that passes the parameters like the number to dial and the CCXML application to run in the query string. The actual CCXML and VoiceXML application would be hosted as web applications.

How to do interactive SMS in .NET?

I want to write an app that sends an SMS to users, and when the recipients texts back, I receive that response, including the originating phone number, and my program can react to that response.
I've googled "Interactive SMS" but didn't find anything that was clearly a fit. Has anyone else done this, got any recommendations for a paid service that provides this kind of functionality?
Alternatively, do you have any other recommendations for how to build this service into my app, which will probably be written in C#?
Find an SMS service provider that gives you an API you can use (e.g. an HTTP API). Then read their documentation.
You need to learn about SMPP (short message peer to peer) protocol. Is the protocol usually used to communicate with carrier's SMSC (Short Message Service Center). Here's a blog entry summarizing the actual status of some C# SMPP libraries. If you don't want to use an existing .NET library, you can always write your own. SMPP is not a very complex protocol after all.
An alternative might be attach your application to a cell phone, and if that cell phone provides you with an API, use it to send and receive texts. The problem here is that it won't scale if your application expects to send and receive hundreds of thousands of text messages per day.
Yet another alternative will be to use a CARRIER AGGREGATOR company that provides you with an API for your application. There are some out there, but I don't know if they will be able to offer you a short code and the possibility to receive texts in your application. Depending on the market you are targeting, you should do a little bit of research on how other VAS companies do it over there.
You can use the TextMarks API for this. It's REST-based and super simple to use. So simple that Harvard uses it to teach new students how to use APIs. Docs here.
Messages routed to you from a user are called MO messages (Mobile Originated) and most 3rd party SMS gateways implement simple api's whereby they will simply HTTP post you incoming messages (including the originators msisdn and home network).
For example http://www.clickatell.com/products/two_way.php
Search the site for SMS Gateways for others.
Check SMS Studio - guys have done a lot on that subject and maybe you can use of-the-shelve software or customize it a little to suit your needs.
If not, at least you can find some good keywords for googling.
Anyway, you will have a choice - either go with SMS gateway, or for low volume SMS traffic, you can go with GSM Modem and handle it manually, though it's not recommended.

How to send sms

I want to send an sms to a mobile phone through my C#, C++ code. Can any body help me. I dont want any mobile, or any external device attached to my computer. I am just having my laptop, or desktop PC and in that i want to write a C++ or C# application which can send an sms to a mobile phone.
Clickatell is a popular SMS gateway, which covers 819 networks in over 220 countries.
The API offers a choice of connection options via: HTTP/S, SMPP, SMTP, FTP, XML, SOAP and COM. You can simply choose any suitable connection method that you feel confortable using in C# or C++.
To give a few examples, the HTTP method would be as simple as requesting the following URI from your application:
http://api.clickatell.com/http/sendmsg?to=NUMBER&msg=Message+Body+Here
The SMTP method would consist in sending a plain-text email to sms#messaging.clickatell.com, with a body as in the following example:
user: xxxxx
password: xxxxx
api_id: xxxxx
to: NUMBER
text: Message Body Here
The other methods are similarly easy to interface with, in my opinion. You can check out the full details from the Clickatell API Guide.
There are a couple options out there. You could use a gateway like Twilio, Clickatell or the many others. These cost money but are more reliable than other methods. I wrote a C#/.NET library for Twilio that makes it super easy to use.
Alternately you could ask each user for their carrier, then send an email to their phone's email address. This is less reliable and requires you to know what carrier they use and if they change carriers, they have to remember to tell you.

Is it possible Connecting and sending message through GSM modem using asp.net?

I ve developed a c# winforms application for sending sms by using this article of Sending sms using GSM It works pretty well... Now i want to send sms using GSM communication (ie) a mobile phone connected to PC and i have detect it and send sms using it in asp.net.....
Is it possible Connecting and sending message through GSM modem using asp.net?
Of course you can! The only point is that, as ASP.NET is a server side programming, the GSM modem will have to be connected to the server running the app. Even, your already developed code can be reused. Put that code as an assembly with public interface to get the functionalities. Include it in the ASP.NET app and you can send SMS.
There should be no difference if your app is a regular console/winforms app or whether it's an ASP.NET app.
You would just want to be a bit more security-conscious if anyone on the internet is able to connect to your website and send messages...
Yes. You could create a Windows service that contains the logic for accessing the GSM modem and sending SMS messages. This service can then be access from your ASP.NET web application.
There are lots of articles out there on running a WCF service as a Windows service, here's one on MSDN, Hosting and Consuming WCF Services.
But on second thought, setting up a service may be overkill here. You could use your library from within your app just as fine.
You can do it as mentioned by Kangkan in his answer. You will need to connect your modem to the server which is less feasible and very much less recommended to do so. The best option you can have is to subscribe to a third-party SMS gateway and send SMS through their HTTP apis. There are many such providers available that provide this kindaa service. Just google them and you'll find the one that best suits your needs.

Categories

Resources