mirror of
https://github.com/cwinfo/envayasms.git
synced 2024-11-15 04:40:26 +00:00
135 lines
5.2 KiB
HTML
Executable File
135 lines
5.2 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset='utf-8'>
|
|
<meta http-equiv="cache-control" content="no-cache, must-revalidate" >
|
|
<title>EnvayaSMS: How it Works</title>
|
|
<link rel='stylesheet' type='text/css' href='/styles/site.css' />
|
|
</head>
|
|
|
|
<body>
|
|
<a href="http://github.com/youngj/EnvayaSMS"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
|
|
|
|
<div id="container">
|
|
|
|
<a style='float:left' href="/"><img src='/media/icon.png' height='72' width='72' style='margin-right:10px' /></a>
|
|
<h1 style='padding-top:13px'><a href="/">EnvayaSMS</a>
|
|
|
|
<span class="small">
|
|
SMS gateway for Android
|
|
</span>
|
|
|
|
</h1>
|
|
|
|
<div class='menu' style='clear:both;padding-top:5px'>
|
|
<a href='/'>Home</a>
|
|
·
|
|
<a href='/install/'>Install</a>
|
|
·
|
|
<a class='active' href='/how/'>How it Works</a>
|
|
·
|
|
<a href='/serverapi/'>API Reference</a>
|
|
·
|
|
<a href='/faq/'>FAQ</a>
|
|
·
|
|
<a href='/history/'>History</a>
|
|
·
|
|
<a href='/community/'>Community</a>
|
|
</div>
|
|
|
|
<h2>How it Works</h2>
|
|
|
|
<p>
|
|
In the simplest configuration, EnvayaSMS only needs to be installed on one phone.
|
|
Suppose that you have installed EnvayaSMS on an Android phone in Dar es Salaam,
|
|
Tanzania, with phone number <code>+255987654321</code> (local number <code>0987654321</code>),
|
|
with GSM service from Vodacom.
|
|
</p>
|
|
|
|
<p>
|
|
Suppose also that your web server is <code>example.com</code>, and its servers are located in a datacenter in London.
|
|
</p>
|
|
|
|
<p>
|
|
In Dar es Salaam, you would put the Android phone in an office with internet access and a Wi-Fi router,
|
|
and connect the phone to the Wi-Fi network. (Wi-Fi is not strictly necessary, since EnvayaSMS will also
|
|
work over the phone's mobile data connection, but Wi-Fi is likely to be more reliable and cheaper.)
|
|
</p>
|
|
|
|
<p>
|
|
Then your network would look like this:
|
|
<br />
|
|
<img src='/media/topology.png' width='690' height='284' />
|
|
</p>
|
|
|
|
<p>
|
|
Typically your organization will need only one phone running EnvayaSMS in a
|
|
particular country. However, it is possible to use multiple phones to load-balance requests
|
|
for higher throughput, to offer different user services, or to serve different mobile networks.
|
|
</p>
|
|
|
|
<h3>Receiving incoming SMS and sending replies</h3>
|
|
|
|
<p>Here is an example of how EnvayaSMS would forward an incoming SMS to your server, and send a SMS back as a reply:</p>
|
|
|
|
<ol>
|
|
<li>User in Tanzania, using Nokia phone with phone number <code>0555551234</code>, sends SMS message to <code>0987654321</code></li>
|
|
<li>Your Android phone at <code>0987654321</code> receives SMS</li>
|
|
<li>EnvayaSMS sends SMS to <code>example.com</code> via HTTP</li>
|
|
<li>example.com processes the message and returns SMS reply in HTTP response</li>
|
|
<li>EnvayaSMS forwards SMS reply to <code>0555551234</code></li>
|
|
</ol>
|
|
|
|
<p>
|
|
Since users generally are charged only for outgoing messages in Tanzania, the user would be charged
|
|
for sending one local SMS message, and your phone would also be charged for sending one local SMS message.
|
|
</p>
|
|
|
|
<h3>Sending outgoing SMS notifications</h3>
|
|
|
|
<p>EnvayaSMS uses a different process to send SMS notifications that were not in response to an incoming message.</p>
|
|
|
|
<p>Assume now that <code>example.com</code> has multiple phones using EnvayaSMS in different countries,
|
|
and it is configured to send all messages to phone numbers with a <code>255</code> prefix (Tanzania's country code)
|
|
via the cell phone with number <code>+255987654321</code>.
|
|
|
|
<ol>
|
|
<li><code>example.com</code> wants to send an SMS message to <code>+255555551234</code></li>
|
|
<li><code>example.com</code> identifies that the recipient number has a <code>255</code>
|
|
prefix, and chooses sender phone number <code>+255987654321</code></li>
|
|
<li>The next time EnvayaSMS polls <code>example.com</code> for queued outgoing messages
|
|
for its phone number <code>+255987654321</code>, the server responds with
|
|
the message to send
|
|
</li>
|
|
<li>EnvayaSMS forwards the message to <code>0555551234</code></li>
|
|
<li>EnvayaSMS notifies <code>example.com</code> via HTTP that message was sent</li>
|
|
<li><code>example.com</code> removes the SMS message from its queue of outgoing messages.</li>
|
|
</ol>
|
|
|
|
<p>
|
|
In these examples, even though SMS messages are being communicated between Dar es Salaam and London,
|
|
all SMS messages are sent domestically and are not charged as international SMS messages.
|
|
</p>
|
|
|
|
<div class="footer">
|
|
get the source code on GitHub : <a href="http://github.com/youngj/EnvayaSMS">youngj/EnvayaSMS</a>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
|
|
var _gaq = _gaq || [];
|
|
_gaq.push(['_setAccount', 'UA-25868450-2']);
|
|
_gaq.push(['_trackPageview']);
|
|
|
|
(function() {
|
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
|
})();
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html> |