SMS API Suggestions [closed] - api

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I am looking for several SMS api.
Basically to receive sms messages from mobile phones.
Any suggestions?

There are two basic "SMS API's": SMPP and HTTP.
The SMPP interface is a world-wide standard used internally by cellular telephone companies as well as between SMS send/receive clients and those telcos and SMS Aggregators. I recommend reading the SMPP v5.0 specfication. The general international support for SMPP claims "SMPP v3.4 compliance", but operationally, SMPP v5.0 is little changed from 3.4 except that the documentation is much better. The SMPP v3.4 specification document was a bit sparse, and the SMS Forum greatly enhanced the specification document with version 5.0.
SMPP is the specification that documents a means of sending and receiving SMS between two nodes: the ESME or client side, which would be you, and the MC or "telco" side, which would be the telephone company or SMS aggregator with which you contract to be hooked into the international SMS infrastructure.
SMPP is needed if you are implementing for high volume, i.e.: multiple SMS per second. The SMPP protocol is a binary PDU request/response pair protocol that runs over TCP. The fundamental request/response pair protocol is relatively simple, but the SMPP specification has many extensions, and in the real world things get pretty complicated due to the sheer number of extensions and inconsistency in how various features of SMPP are implemented by various software and telcos. Using SMPP requires that you have a daemon / service running continuously to provide the real time SMPP peer communications facility, and cannot be implemented purely within web app code. Integrating SMPP into a web application requires developing a daemon / service to handle the ESME part of the SMPP ESME / MC pair, and then providing some kind of RPC mechanism between that daemon and your web app.
An example of an SMPP Library is Logica. Logica was a pioneer in development of SMPP SMSC's, and has released this library as open source. One of the very few that run on Windows. Most open source SMPP code runs on *nix.
Alternatively, one can use third party SMPP Gateway software. By far the most widely adopted open source SMPP server is Kannel. I know several SMS aggregators that use it. As you are asking about PHP and I presume Linux, integrating with Kannel may be your best bet. I do warn you that it is non-trivial to configure. There are several non-open source ones available too such as the Ozeki Message Server and Nordic Messaging Technologies' Enterprise Message Server (EMG). Both of these offerings provide a more "turn-key" solution than Kannel and may be more appropriate for your uses.
For lower volume applications, it is much simpler to implement an HTTP interface to an SMS Aggregator. There are many SMS Aggregators out there offering HTTP interfaces. There is no universal standard, but nearly all offer a relatively simple GET/POST HTTP interface that is quite simple to integrate into a web app or any software environment where HTTP GET/POST is well supported. The SMS Aggregators also generally offer some file or XML based interface for higher volume sending. As the above reader mentioned, Clickatell is an example of an SMS Aggregator, they are considered "pioneers in the industry." Another example, one I've used is Routo Messaging.
Each SMS Aggregator has their own HTTP API, though most all of them support the same services. Also, most of them offer a few free test credits. I have written code to test with several of them, and it is a simple few hour process, generally less than an hour once you have written one.

If you looking for a sms service provider? You could try Clickatell
If you looking at creating a sms api, look at the Twitter API

You can use SMSSync, a free and open source SMS gateway for Android.
It will receive SMS on your Android Phone, then do a HTTP POST to a URL you specify within the app.
However, note services like these will have a throughput limitation (around 1 sms per 6 sec) and you have to manage the "hosting" of the "SMS gateway". If you could afford, you might want to consider virtual SMS providers such as Nexmo and Hoiio API.

We are using smsapi.pl but so far there is only Polish support (it's gonna probably change quite soon). Maybe you should check this one - you'll find there https specification. They have also mail to sms interface.

Related

Should I use UCWA or UCMA or another API for a Skype for Business Server Application?

There seems to be a lot of different SDKs / APIs around Skype for Business. I'm having a tough time deciphering which one would be appropriate for a server side Bot like application that could communicate domain specific information to the users within the organization. For example we'd like to be able to deliver task(s) via messages and perform presence based task assignment. This seems to be fairly low hanging fruit but where's the REST endpoints and documentation to make this happen. Assuming for example I wanted to create a little console application that could facilitate this what API would you recommend?
Here are the main differences between UCMA and UCWA:
UCMA is a .NET SDK that provides rich control over a Skype for Business server deployment. It enables applications to automatically route calls and messages, provide automatic responses (IVR or chat bots), record conversations etc. It can be used in a number of scenarios such as a 'contact center' application that distributes incoming calls to an available agent with the right skillset. UCMA applications are managed by running them on application servers that are activated as part of the Skype for Business server deployment. As such, UCMA is not available for Skype for Business Online (Office 365).
UCWA is a RESTful Web API that acts on behalf of a single Skype for Business user. It enables applications to send and receive messages for that user, read presence for their contacts, etc. Typically it is used for interactive "line of business" applications that want to embed Skype for Business messaging/presence. It is also possible to create a 'technical account', that doesn't correspond to a real person, and use UCWA in 'headless' server applications but this approach currently has authentication and scalability limitations. UCWA applications have no deployment constraints since UCWA is a regular RESTful Web API. It is available for both Skype for Business Server (get started) and for Skype for Business Online (get started). The latter has slightly fewer capabilities right now: - for example, messages can be sent but not received - though this should change soon.
I think both UCMA and UCWA can be used. However, considering you want a server application, UCWA seems fit the case. Here is the detail of SDK, you can find code samples at there:
https://msdn.microsoft.com/en-us/library/office/mt650889(v=office.16).aspx

want to understand whatsapp work flow and architecture

I have some questions like how whatsapp server is working, though I read in internet, I want to understand much. And what is XMPP? how it is working, How can I send data through XMPP. how can I integrate XMPP with application, can anyone pls explain?
WhatsApp under the hood?
There are rumors WhatsApp uses a customized version of XMPP. Sources are closed so we can only guess.
Understanding XMPP will however give you all the tools to create your own WhatsApp clone.
What is XMPP?
According to Wikipedia (which hosts further references):
Extensible Messaging and Presence Protocol (XMPP) is a communications protocol for message-oriented middleware based on XML (Extensible Markup Language).
Which is to say that XMPP is an xml based convention for exchanging messages between parties. It's best known implementation is Ejabberd chat server.
XMPP can however be used for other things, among them the web of things.
How to send messages?
Assuming you want to create a chat application, you will need:
An Ejjaberd server up and running.
An appropriate xmpp SDK for you language/framework. Example: Smack for Java or agsXMPP for C#.
A good kick-starting tutorial about how xmpp works can he found here: part one and part two.
There is also the RFC which contains the most comprehensive documentation out there.

GCM (Google Cloud Messaging) Bulk with Linux

Does any one have idea about the best way(implantation) to send Bulk Google Cloud Messaging on a Linux server. (Personally I like non-java implementation) Any help, link or suggession appreciated.
Edit
I didn't try any method for bulk messaging. I know there is a php implementation for GCM too, But I like to know what should I consider before go for an implementation. Like, How to handle failed messages, Is there any limitation on http requests goes to GCM server, etc.
Finally, I found the best answer for my own question. We can send a message to 1000 Google could message recipients using one http request. Sending bulk messaging Shouldn't be that much complicated. Any language or tool are capable of sending appropriate http request to the GCM server is enough.
GCM allows you to attach up to 1,000 recipients to a single message,
letting you easily contact large user bases quickly when appropriate,
while minimizing the work load on your server.
As shown by this example, it seems that the server-side code can even be written in C#. This question also confirms that this approach works. Other people seems to be able to setup standalone Java applications, as shown here.
If you have to setup a Linux server to send GCM push notifications, you can freely chose to use C# or Java at your own discretion.
For what concerns C/C++, however, things are a little more complicated. This question (PHP) shows that GCM notifications can be sent using CURL, so I suspect that a "C/C++" implementation using libCurl could be possible. However you'll have to tweak it yourself, given that it does not seem to be the "standard way" to use GCM.
If you are familiar with PHP than implement it in PHP. Since GCM uses only 2 GETs with HTTPS, you can easily implement it in any language, even batch processing with curl (i am using this for testing). You can find the calls here.
Note that you need a curl.exe which is capable of doing HTTPS. The link from Avio's answer shows you how to do that in PHP, stick to that and do not use C++.

What does 'WCF' mean? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Can anyone define WCF? What is the purpose of WCF?
What are some good reading materials to learn about WCF?
WCF (Windows Communication Foundation) is the name that Microsoft uses for a Framework that can Communicate between multiple servers independently of their Operating System or Technology.
You can use this framework to send and receive messages and attachments (files, images, etc) to and from any computer in the world.
From a developer point of view, it's the new version of WSE (Web Services Enhancements) with MTOM (SOAP Message Transmission Optimization Mechanism) that was itself an updated version of the simple Web Service (.ASMX).
WCF is called a Service Framework and not a Web Service because it no longer depends on the IIS (Internet Information Server) to be hosted. Now you can host a WCF application using TCP/IP, host it as a Windows Service or even host it as an application - and you can still host it in IIS as well.
It uses the SOAP protocol and others (this is configurable in just one file), and supports HTTP and HTTPS as well, for messaging and attachments. You now have plenty of new security options with it... and it's the "top-of-the-line solution" to use to send/receive messages from anywhere to anything.
It is heavily used in the AJAX world, because it can send messages in the JSON format. Because of this, jQuery and other JavaScript frameworks work lovely with it.
For Reading material, I recommend buying a good book, because it's a good way to do self-learning and have it for reference at a later time. I personally bought Wrox Professional WCF, and I'm loving it.
WCF stands for Windows Communication Foundation.
MSDN Link
Wikipedia Link
MSDN is a little dry, but Wikipedia expresses it well:
WCF is the part of the .NET Framework dedicated to communications.
In my case, this has meant a richer alternative to plain old Web Services, with a choice between communication layers.
Edit
15 Seconds also has a great primer on WCF:
WCF is a unified programming model that combines the best of breed features from XML Web Services, .NET Remoting, MSMQ, and COM+ into an integrated platform that is completely based on a set of open industry standards.
WCF stands for "Windows Communication Foundation". The ultra-simplified version of it is that it is a collection of tools and libraries that present the developer with a unified view of communications. Everything in WCF revolves around three core concepts of Endpoints, Channels, and Messages. An endpoint is a way in or out of your code. A channel is the means by which a Message travels between those endpoints. Using this paradigm, you can use UDP, TCP, HTTP, Peer-to-Peer, MSMQ - all using the same 3 core concepts.
As for learning resources, call me old fashioned but I like to curl up with a good book when I'm learning about a new technology. Once I've mastered the basics I like using references online to enhance my base... but for intros, IMHO, nothing beats a good book.
You cannot find a better book on WCF than Juval Lowy's "Programming WCF Services". "Essential Windows Communication Foundation" is also a decent book but I still think you'd be better served by Juval's book.
"WCF" stands for Windows Communication Framework. WCF is the replacement for WSE (now obsolete), ASMX (the old ASP.NET Web Services), and to some extent, is also a replacement for .NET Remoting.
WCF covers all of the web services scenarios covered by ASMX and WSE, and then adds support for many more, including binary communication over TCP/IP, communication over message queues and named pipes, and many more.
A rich extensibility model permits both Microsoft, third party developers, and you, to extend WCF for future requirements. See the Cloud Computing article, and the Foundations: Working with the Service Bus articles in the April 2009 issue of MSDN Magazine to see how WCF has been extended to some very modern scenarios.
All new web services development should be in WCF, if at all possible.
In simple word its technology that allows your service to communicate with application or service using various protocols/modes
WCF separates the service from the protocol in much the same way that XHTML and CSS separate the content from the presentation.

Browser <-> Client Hardware API?

Are there any initiatives to implement/agree upon a standard API for connectivity between web browsers and client hardware.
Example: The iPhone has a GPS/Camera/Accellerometer in it. It'd be very cool if my web app could communicate with them (rather than me having to write a thick ObjectiveC application).
The closest thing I've seen to that is the Android phone API, which lets your programs access its hardware (relatively) painlessly. Google's pushing for it to become the new standard, but its hardly the same thing as a web-app (which, by most definitions, runs entirely in your browser?).
The upcoming version of FireFox has an API to read your lat/long off a GPS device.
To add to my own question; Yahoo provides a geolocation service called FireEagle that could act as a mediator and provide similar functionality.
In essence the phone communicates with a central Yahoo server updating its location. Your web app can then determine your approx location from that central server.