5
0
mirror of https://github.com/cwinfo/envayasms.git synced 2024-11-15 04:40:26 +00:00
envayasms/faq/index.html

298 lines
11 KiB
HTML
Executable File

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="cache-control" content="no-cache, must-revalidate" >
<title>EnvayaSMS: Frequently Asked Questions</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>
&middot;
<a href='/install/'>Install</a>
&middot;
<a href='/test/'>Test</a>
&middot;
<a href='/how/'>How it Works</a>
&middot;
<a href='/serverapi/'>API Reference</a>
&middot;
<a class='active' href='/faq/'>FAQ</a>
&middot;
<a href='/history/'>History</a>
&middot;
<a href='/community/'>Community</a>
</div>
<h2>Frequently Asked Questions</h2>
<ul class='faq_links'>
<li>
<a href='#q_alternative'>Instead of implementing a SMS gateway as an Android app, why not use X instead? (where X = Twilio, Tropo, Clickatell, FrontlineSMS, RapidSMS, Kannel, etc.)</a>
</li>
<li>
<a href='#q_rate'>How fast can EnvayaSMS send SMS messages?</a>
</li>
<li>
<a href='#q_tunnel'>EnvayaSMS can't connect to my dev server! What's wrong?</a>
</li>
<li>
<a href='#q_phones'>What phones are compatible with EnvayaSMS?</a>
</li>
<li>
<a href='#q_servers'>Does EnvayaSMS use envaya.org's servers?</a>
</li>
<li>
<a href='#q_envaya_org'>What is the relationship between EnvayaSMS and envaya.org?</a>
</li>
<li>
<a href='#q_kalsms'>What is the difference between EnvayaSMS and KalSMS?</a>
</li>
<li>
<a href='#q_smssync'>What is the difference between EnvayaSMS and SMSSync?</a>
</li>
</ul>
<h4 id='q_alternative'>
Instead of implementing a SMS gateway as an Android app, why not use X instead? (where X = Twilio, Tropo, Clickatell, FrontlineSMS, RapidSMS, Kannel, etc.)
</h4>
<p>
The existing alternative methods for creating SMS gateways can generally be categorized as
hosted services (e.g. Twilio, Tropo, Clickatell), connecting GSM phones/modems to a computer (e.g. FrontlineSMS, RapidSMS, Kannel),
and partnering directly with mobile operators.
</p>
<p>
The table below summarizes the major benefits and drawbacks of each of these methods for creating an SMS gateway:
</p>
<table class='comparison_table'>
<thead>
<tr>
<td>&nbsp;</td>
<th>Benefits</th>
<th>Drawbacks</th>
</tr>
</thead>
<tbody>
<tr>
<th>Hosted services</th>
<td>
<ul><li>High message throughput
<li>Easy to deploy</ul>
</td>
<td>
<ul><li>No local numbers in many countries
<li>Usually no MMS support</ul>
</td>
</tr>
<tr>
<th>Connecting modem<br /> to computer</th>
<td>
<ul><li>Can work with inexpensive phone</li></ul>
</td>
<td>
<ul><li>Expensive hardware costs
<li>Lots of moving parts to keep working
<li>Very difficult for non-technical users to deploy
<li>Low message throughput
<li>No MMS support</ul>
</td>
</tr>
<tr>
<th>Partnering with<br />mobile operators</th>
<td>
<ul>
<li>High message throughput
<li>Can provide free service to users via shortcode</ul>
</td>
<td>
<ul><li>Usually very expensive
<li>Requires operator approval
<li>Long setup time</li></ul>
</td>
</tr>
</tbody>
</table>
<p>
EnvayaSMS is ideal for situations where no hosted services with local numbers are available in
a particular country, or when it is necessary to receive MMS messages.
</p>
<p>
EnvayaSMS likely has lower throughput than hosted services or partnering with mobile operators, but should
be able to forward up to a few thousand messages per phone per day.
</p>
<h4 id='q_rate'>How fast can EnvayaSMS send SMS messages?</h4>
<p>
The rate at which EnvayaSMS can send messages depends on several factors, including your phone, your network, and the length of the SMS messages you're sending.
</p>
<p>
Using an LG 540 with T-Mobile, we were able to send 50 outgoing SMS messages (each 160 characters long)
in 4 minutes 17 seconds, for an average of 1 message every 5.1 seconds (~12 messages/minute, ~700 messages/hour).
</p>
<p>
In a different test, EnvayaSMS sent 176 outgoing SMS messages (with an average length of 7 characters)
in 9 minutes 50 seconds (using the same phone), for an average of 1 message every 3.4 seconds (~18 messages/minute, ~1100 messages/hour).
</p>
<p>
To increase the rate at which you can send SMS messages, you can install EnvayaSMS on multiple phones and
balance outgoing SMS messages between them. EnvayaSMS also allows you to set priority levels on outgoing SMS messages,
so important transactional messages can be delivered before low-priority notifications.
</p>
<p>
In order to send more than 100 messages per hour with a single phone, it is necessary to install <a href='/install/#expansion'>EnvayaSMS Expansion Packs</a>.
</p>
<h4 id='q_tunnel'>EnvayaSMS can't connect to my dev server! What's wrong?</h4>
<p>
EnvayaSMS may be unable to connect to your development web server if it is blocked by a firewall on your computer,
or if your computer has a IP address that's inaccessible from your phone's network.
</p>
<p>
If your Android phone is on the same Wi-Fi network as your development web server, configure the firewall on
your development computer to allow incoming connections to your web server, then simply enter your computer's IP address
in EnvayaSMS as the Server URL.
</p>
<p>
If you're testing with the phone's mobile data connection, or if your phone and development computer are on different
Wi-Fi networks, the IP address of your development web server is likely inaccessible to the phone.
</p>
<p>
To allow the phone to connect to your development computer, you can set up a reverse SSH tunnel between your
development computer and a server with a public IP address.
</p>
<p>
To set up a reverse SSH tunnel, you can either:
<ul>
<li>use a hosted service like <a href='http://progrium.com/localtunnel/'>localtunnel</a>, or</li>
<li>use <code>ssh -R</code> to connect to your own server accessible from the public internet. For example:
<pre>ssh -R 0.0.0.0:8765:localhost:80 [user]@[host]</pre>
<p>
This sets up port 8765 on <code>host</code> to forward to port 80 on your local development computer.
Then you can use <code>http://[host]:8765/</code> as the Server URL in EnvayaSMS, and it will be
forwarded to <code>http://localhost</code> on your development server.
</p>
<p>
Note: In order for SSH port forwarding to work, you will need to set <code>GatewayPorts yes</code> in the <code>/etc/sshd_config</code> file
on the public server.
</p>
</li>
</ul>
<h4 id='q_phones'>What phones are compatible with EnvayaSMS?</h4>
<p>
EnvayaSMS should work on any phone with Android 1.6 (Donut) or higher. As of 9/23/2011, over 579 different phone models are compatible with EnvayaSMS.
</p>
<p>
EnvayaSMS has been tested and is known to work with the following phones:
<ul>
<li>LG GT540 Optimus</li>
<li>Samsung Galaxy Mini S5570</li>
</ul>
<h4 id='q_servers'>Does EnvayaSMS use envaya.org's servers?</h4>
<p>
No. When using EnvayaSMS, your phone connects to your own web server.
The EnvayaSMS Android app does not connect to <a href='http://envaya.org'>envaya.org</a> or any third-party servers.
In particular, you do not need to register for <a href='http://envaya.org'>envaya.org</a>.
</p>
<p>
For information about configuring a web server to connect to EnvayaSMS, see the <a href='/serverapi/'>API Reference</a> page.
</p>
<h4 id='q_envaya_org'>What is the relationship between EnvayaSMS and envaya.org?</h4>
<p>
We originally developed EnvayaSMS to enable civil society organizations in East Africa to interact with
<a href='http://envaya.org'>envaya.org</a> via SMS and MMS, such as by posting news updates and photos
to their website.
</p>
<p>
We realized that EnvayaSMS would be useful for any web service that needs to send and receive SMS/MMS,
and decided to make EnvayaSMS available for anyone building their own applications.
</p>
<p>
Development of EnvayaSMS is currently led by the <a href='http://envaya.org'>envaya.org</a> team,
but anyone is welcome to contribute to improve it.
</p>
<h4 id='q_kalsms'>What is the difference between EnvayaSMS and KalSMS?</h4>
<p>
The source code for EnvayaSMS was originally based on <a href='https://github.com/niryariv/kalsms/'>KalSMS</a>, an open-source project
started by Nir Yariv in 2010. KalSMS first introduced the idea of a simple SMS gateway implemented entirely as an Android app.
</p>
<p>
EnvayaSMS builds upon the idea of KalSMS by adding many new features that are necessary when deploying an SMS gateway in the field,
such as sending more than 100 messages per hour, authenticating the phone to the server, and retrying forwarding messages after transient errors.
For a complete list of changes, see the <a href='/history/'>History</a> page.
</p>
<p>
EnvayaSMS's server API is incompatible with that of KalSMS. Anyone switching from KalSMS to EnvayaSMS must
update their server to use the new API described on the <a href='/serverapi/'>API Reference</a> page.
</p>
<p>
As of 2011, KalSMS is no longer actively developed, and new development will occur on the EnvayaSMS project.
</p>
<h4 id='q_smssync'>What is the difference between EnvayaSMS and SMSSync?</h4>
<p>
<a href='http://smssync.ushahidi.com/'>SMSSync SMS Gateway</a> is an alternative Android SMS gateway app developed by Ushahidi.
</p>
<p>
EnvayaSMS contains several features not present in the current version of SMSSync, such as receiving MMS messages,
sending more than 100 outgoing SMS messages per hour, notifying the server of the status of outgoing messages,
and showing log messages to facilitate troubleshooting.
</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>