mirror of
https://github.com/cwinfo/envayasms.git
synced 2024-11-15 04:40:26 +00:00
75 lines
3.2 KiB
Twig
Executable File
75 lines
3.2 KiB
Twig
Executable File
<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 Zantel.
|
|
</p>
|
|
|
|
<p>
|
|
Suppose also that your web server is <code>example.com</code>, and its servers are located 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:
|
|
</p>
|
|
|
|
<p>
|
|
TODO
|
|
</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> |