I have searched google and have not found the answer I was looking for only bits and pieces. I would like to create an application where a user could text a SMS shortcode number with a certain string of text "example: IN" which would then run a command on a server if it matches a specific keyword. Basically it would update a database and then send a message back to the user. My questions are how do I obtain a SMS Short code number? How do I link that with a server? What programming language is the most efficient and effective for accomplishing the task? I have a little bit of programming experience in "HTML, JavaScript, PHP and C" and am willing to learn more languages if required. If someone could answer these questions for me I would be grateful.
Twilio offers this along with their other telephony services. I haven't actually used their SMS service, but I've heard good things about the company in general.
For less than 1/100 of the price of a dedicated shortcode, you can start with a "shared shortcode" provider like TextMarks.
TextMarks owns the "41411" shortcode, and you can lease keywords on it for use with your own applications.
You configure a callback URL, and any incoming SMS messages starting with your keyword get routed to your own web server as HTTP requests. If you respond with anything, your message even goes back to the user as another SMS response.
More info:
TextMarks SMS auto-responder API overview
[Disclosure: I built a large portion of the TextMarks API! Ask me anything.]
You will need a SMS server which is not very common. So you should look for providers like SMSMode or Essendex. But you'll have to pay to receive and send SMS.
Related
Introduction
I have a xy-problem
x: High level goal
I have dream: I want to store additional data to mails which are in IMAP. I the long run I want to be able to access this data via thunderbird and k9 (android app (mail use agent)).
Use cases:
I want to store a note in html format for this mail.
Upload a PDF file for this mail.
I want to store a re-submission date on the mail. Like google inbox snooze feature: Move the mail to a "do later" folder until the date is reached. (Evaluating this date and moving the mail to inbox again is not part of this question)
But I have no clue how to store additional data
y: My current thoughts about solving it
I need a way to identify a message in IMAP. I think the message id (without folder name) should work. I know that message IDs can have duplicates, but I see no other way. Please leave a comment, if you have a better idea.
Now I need a way to store this mapping somewhere:
`user#imapserver:message-id` --> `additional-data`
Question
How to store this mapping, so that thunderbird and k9 could access it?
Of course I know that thunderbird and k9 can't access this data today. How to patch them is a different question.
Background
I like free software and I like free communication. Up to now I use WhatsApp, Threema and other tools. But in the long run I want a free (like in software) solution. Email is wide spread, and I think it makes more sense to improve email than to create something new.
You could store annotations in a parallel mailbox as MIME messages using APPEND. You'd have to figure out a way to map annotations from one message to another.
So you can find the related message easily, you'll want it easy to search for. You could do something like using the message-id of the source message as the subject of the annotation message, or a transformation of the message id as the message id of the destination message.
Here are my thoughts on it... here is the current proposed and accepted standard for IMAP4 which is the current version...
https://www.rfc-editor.org/rfc/rfc3501
Here is a wiki link to show the previous versions and the progress that has been made over time ...
https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol#IMAP4
I think the question is a good one, but maybe if your idea is good enough, contact the people that are in charge of the protocol and think about ways to potentially make IMAP5 with the kinds of functionality that you want to expand it to be able to utilize...
I would say that the best way would be to try making the IMAP protocol better. Read over all of the functionality that it currently supports and make suggestions to the group in charge of it. The additions that you are wanting to add sound great, but unless I misunderstood the question, I think that protocol updates might be the cleanest approach.
Sounds cool though.
Good luck... I hope you like my thoughts.
Have you considered Mailgun? It has an extensive API ( https://documentation.mailgun.com/api_reference.html#api-reference). Incoming messages can be stored, processed by your application and then sent via email. I believe you can add your own header field information (perhaps generating something like a GUID and using it for unique message tracking). Up to 10,000 emails/month are free (one of your preferences). If your application workflow and the API align, this might help get the job done.
As the title of my questions suggests, I am looking for a way to embed hidden text inside of a SMS message. I am unsure if this is possible and have spent a fair amount of time scouring the documentation from Android at http://developer.android.com/reference/android/telephony/SmsMessage.html.
This following link provides information about the structure of an SMS message http://www.smartposition.nl/resources/sms_pdu.html as it may be of use to the reader.
I am seeking the confirmation or rejection that this is possible, and if it is, will the method provided be platform/application independent?
Thanks all for you help and expertise.
That's not really possible. You have no control over how any given SMS app chooses to display received messages. It may be possible to encode something within the text using non-printing characters, but it would have to be your app that receives and decodes the message. The same goes for any kind of encoding or encryption you might implement. No standard SMS client is going to know to specially handle your messages.
I have always wanted to be able to have my users send feedback to my email address. Not a problem when using 'createChooser()' with ACTION_SEND type within an Intent. This may lead to a few very rare errors where there is not an application on the user's device to handle that Intent.
My question is: Is it possible to send an anonymous "from" to my developer email account so the User's email will not be required? I know basic HTML, and am wondering if this is possible with a 'form' in a 'WebView' (preferably less complicated) I Do not have a web server or access to one, and am only an individual developer, so that may throw that out of question.
Any insight is greatly appreciated, thank you for reading.
I don't think there is a reasonably easy way to do this with Intents. The best way I can see is have a couple of EditTexts for the message and maybe a title, and then a send Button at the bottom, then sending programmatically with a java class.
See this link for some info on how to do the actual sending part: http://www.developerfusion.com/code/1975/sending-email-using-smtp-and-java/
It's fairly straightforward.
I'm currently thinking of setting up a picture message import project. Something like this:
Client Mobile Device [picture message] -> our Server Device
Server Device [picture && number -> Server Computer
However I don't know if there's a possible way to do this. I could set up a google voice account and use something like this in order to retrieve messages, however this doesn't allow picture messages...
So I was thinking of perhaps making an android or iPhone application to redirect picture messages. Though I don't know if this is possible. If it is, how would I go about gathering the messages? The networking is simple enough, however I'm not familiar with the android system, nor the message system of the iPhone.
On the other hand, I could make a simple email server to receive messages from the cell phone provider's email system.
Is any of the above viable? The image as well as the origin number are both needed.
This sounds like a typical client/server application actually, except the commands sent to the server contain binary data.
There are many ways to do this, and many protocols you can use. Email (gmail) is just one example.
What I would do is use HTTP to post binary messages to your web server. This is cool because it manages authentication, data transfer, etc, are all available.
Here's a short example: Secure HTTP Post in Android
Just add authentication on top of that and you're in business!
You would have to do some web server development too.
I hope this helps.
Emmanuel
Ok I think this is possible. I'm not sure how it works but I'll do my best.
First you have to be notified when an SMS is received by listening to SMS_RECEIVED events. BroadcastReceiver + SMS_RECEIVED
Second, you have to read the SMS attachment as explained here: Get attachment from unread MMS messages
Does this help?
So I've gotten some great information from people on here pertaining to how to allow my application to receive text messages before the native messaging app catches them.
However, I'm looking for a little more specifics on how I can mold this to fit the needs of my application
What I'm ultimately looking to do, is to only have text messages pertaining to my application be the ones that are caught by my application before the native messaging app, while all other text messages just head to the normal spot
Is there any way to add extra data to a text message, or some sort of port, where text messages can be filtered into my app as opposed to the native messaging app, without losing out on my 160 character max? I'm really not looking for my application to replace the native messaging app for all text messages, and would only like to have it deal with text messages that are pertaining to my application, as it seems right now to be much easier to have them come into the application from an end-user standpoint, as there's no good way (at least on hTC phones) to copy or import individual text messages from the native messaging application to be brought into the application.
Any help would be very very appreciated... and if there's any wording in there that is hard to understand (as I'm sure it might be somewhat difficult to follow), please let me know and I will try to clarify! Thanks!
The answer is probably no, assuming you have a filter set up before your native messaging app to do some regex (regular expression) filtering on the message content, you will have to use up some of your character limit - or make sure your application is extended to handle multi-sms messages (i.e. one message using 2,3 or more sms's).
The best, easiest to read description of the inner details of an sms I know of is this, SMS and the PDU format, short of going through the official ITU-T protocol documents. There are other fields in the SMS there, but I doubt you could reliably hijack one of them for your purposes. But then again, if you did a whole bunch of trial & error, you might find a way.