add page explaining how to test with emulator; faq for reverse tunnels; screenshot of pending messages
@ -2,6 +2,7 @@ id: faq
|
|||||||
title: Frequently Asked Questions
|
title: Frequently Asked Questions
|
||||||
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.)
|
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.)
|
||||||
q_rate: How fast can EnvayaSMS send SMS messages?
|
q_rate: How fast can EnvayaSMS send SMS messages?
|
||||||
|
q_tunnel: EnvayaSMS can't connect to my dev server! What's wrong?
|
||||||
q_phones: What phones are compatible with EnvayaSMS?
|
q_phones: What phones are compatible with EnvayaSMS?
|
||||||
q_servers: Does EnvayaSMS use envaya.org's servers?
|
q_servers: Does EnvayaSMS use envaya.org's servers?
|
||||||
q_envaya_org: What is the relationship between EnvayaSMS and envaya.org?
|
q_envaya_org: What is the relationship between EnvayaSMS and envaya.org?
|
||||||
@ -17,6 +18,9 @@ q_smssync: What is the difference between EnvayaSMS and SMSSync?
|
|||||||
<li>
|
<li>
|
||||||
<a href='#q_rate'>{{ this.q_rate }}</a>
|
<a href='#q_rate'>{{ this.q_rate }}</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='#q_tunnel'>{{ this.q_tunnel }}</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href='#q_phones'>{{ this.q_phones }}</a>
|
<a href='#q_phones'>{{ this.q_phones }}</a>
|
||||||
</li>
|
</li>
|
||||||
@ -128,6 +132,45 @@ To increase the rate at which you can send SMS messages, you can install EnvayaS
|
|||||||
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>.
|
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>
|
</p>
|
||||||
|
|
||||||
|
<h4 id='q_tunnel'>{{ this.q_tunnel }}</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'>{{ this.q_phones }}</h4>
|
<h4 id='q_phones'>{{ this.q_phones }}</h4>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -2,21 +2,19 @@ id: history
|
|||||||
title: History
|
title: History
|
||||||
---
|
---
|
||||||
|
|
||||||
Version 2.0-rc2 (2011/09/29)
|
Version 2.0 (2011/10/01)
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Automatic failover between Wi-Fi and mobile data connection if server is unreachable
|
Automatic failover between Wi-Fi and mobile data connection if server is unreachable
|
||||||
(e.g. when Wi-Fi router is on, but it has no internet access)
|
(e.g. when Wi-Fi router is on, but it has no internet access)
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
User can see all pending messages, and retry/delete individual messages
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Send timestamp of incoming messages to server
|
Send timestamp of incoming messages to server
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
|
||||||
|
|
||||||
Version 2.0-rc1 (2011/09/28)
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
<li>
|
||||||
Allow outgoing SMS messages to be sent in priority order
|
Allow outgoing SMS messages to be sent in priority order
|
||||||
</li>
|
</li>
|
||||||
|
@ -22,7 +22,7 @@ work over the phone's mobile data connection, but Wi-Fi is likely to be faster,
|
|||||||
<p>
|
<p>
|
||||||
Then your network would look like this:
|
Then your network would look like this:
|
||||||
<br />
|
<br />
|
||||||
<img src='/media/topology.png' width='690' height='284' />
|
<img src='/media/topology.png' width='650' height='262' />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -6,7 +6,8 @@ layout: default.twig
|
|||||||
<img src='/media/screenshot-main.png' width='212' height='350' />
|
<img src='/media/screenshot-main.png' width='212' height='350' />
|
||||||
<br />
|
<br />
|
||||||
<img src='/media/screenshot-settings.png' width='212' height='350' />
|
<img src='/media/screenshot-settings.png' width='212' height='350' />
|
||||||
|
<br />
|
||||||
|
<img src='/media/screenshot-pending.png' width='212' height='350' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
EnvayaSMS is a SMS and MMS gateway running entirely as an Android app.
|
EnvayaSMS is a SMS and MMS gateway running entirely as an Android app.
|
||||||
@ -53,7 +54,11 @@ It works wherever the phone can receive SMS messages and access the Internet
|
|||||||
In order to deploy EnvayaSMS, you will need a messaging plan for your phone, and the phone itself.
|
In order to deploy EnvayaSMS, you will need a messaging plan for your phone, and the phone itself.
|
||||||
EnvayaSMS is compatible with many old or inexpensive Android phones, e.g. the LG GT540, currently $120 on Amazon.com.
|
EnvayaSMS is compatible with many old or inexpensive Android phones, e.g. the LG GT540, currently $120 on Amazon.com.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Before deploying EnvayaSMS, you can test EnvayaSMS without an Android phone
|
||||||
|
by installing EnvayaSMS on an emulated phone on your computer. <a href='/test/'>Learn more...</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<a href='/install/' class='button'>
|
<a href='/install/' class='button' style='margin-left:110px;'>
|
||||||
Install EnvayaSMS Now
|
Install EnvayaSMS Now
|
||||||
</a>
|
</a>
|
@ -1,21 +1,26 @@
|
|||||||
id: install
|
id: install
|
||||||
title: Installing EnvayaSMS
|
title: Installing EnvayaSMS
|
||||||
---
|
---
|
||||||
Before installing EnvayaSMS, ensure that you have the following prerequisites:
|
In order to install and deploy EnvayaSMS, you will need the following prerequisites:
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>One or more Android phones (1.6 Donut or higher) that are
|
<li>One or more Android phones (1.6 or higher),
|
||||||
registered on a mobile network. </li>
|
registered on a mobile network
|
||||||
|
</li>
|
||||||
<li>A way for the phones to connect to the internet, either via Wi-Fi
|
<li>A way for the phones to connect to the internet, either via Wi-Fi
|
||||||
or the mobile data service. <br />
|
or the mobile data service<br />
|
||||||
(Even if using Wi-Fi, mobile data
|
(Even if using Wi-Fi, mobile data
|
||||||
service is necessary to receive MMS messages.) </li>
|
service is necessary to receive MMS messages.) </li>
|
||||||
<li>A web server accessible from the public internet</li>
|
<li>A web server accessible from the public internet</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
Using an Android phone, open <a href='https://market.android.com/details?id=org.envaya.sms'>EnvayaSMS on Android Market</a> by clicking the link from your phone's browser, or scanning the barcode with a QR code app. Then, follow the steps shown below to install EnvayaSMS on your phone.<br />
|
<p>
|
||||||
|
Note: If you don't have these prerequisites yet, you can <a href='/test/'>test EnvayaSMS on your computer</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<div style='float:left;padding-right:10px;padding-top:30px'>
|
To install EnvayaSMS on an Android phone, open EnvayaSMS on Android Market by clicking the link below from your phone's browser, or scanning the barcode with a QR code app.<br />
|
||||||
|
|
||||||
|
<div style='float:left;padding-right:10px;padding-top:20px'>
|
||||||
<div style='font-size:16px;font-weight:bold; text-align:center'>
|
<div style='font-size:16px;font-weight:bold; text-align:center'>
|
||||||
<a href="https://market.android.com/details?id=org.envaya.sms">Open Android Market</a>
|
<a href="https://market.android.com/details?id=org.envaya.sms">Open Android Market</a>
|
||||||
</div>
|
</div>
|
||||||
@ -25,7 +30,7 @@ Using an Android phone, open <a href='https://market.android.com/details?id=org.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style='float:left;padding-top:10px'>
|
<div style='float:left;padding-top:10px'>
|
||||||
<img src='/media/screenshot-market.png' style='border:1px solid black' width='484' height='240' />
|
<img src='/media/screenshot-market.png' style='border:1px solid black' width='440' height='218' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style='clear:both;padding-top:10px'>
|
<div style='clear:both;padding-top:10px'>
|
||||||
@ -80,6 +85,9 @@ After your server is configured, configure EnvayaSMS on your phone to connect to
|
|||||||
<li><em>Recommended:</em> under Wi-Fi sleep policy, select "always stay connected".
|
<li><em>Recommended:</em> under Wi-Fi sleep policy, select "always stay connected".
|
||||||
(Otherwise, EnvayaSMS will be unable to forward messages after the phone goes to sleep.)
|
(Otherwise, EnvayaSMS will be unable to forward messages after the phone goes to sleep.)
|
||||||
</li>
|
</li>
|
||||||
|
<li><em>Optional:</em> enable Network Failover so that the phone will automatically switch
|
||||||
|
to mobile data if the Wi-Fi network stops working.
|
||||||
|
</li>
|
||||||
<li>Check "Enable EnvayaSMS"</li>
|
<li>Check "Enable EnvayaSMS"</li>
|
||||||
<li>Click the Back button to return to the main screen</li>
|
<li>Click the Back button to return to the main screen</li>
|
||||||
</ol>
|
</ol>
|
||||||
@ -93,8 +101,11 @@ then click "Test Connection".
|
|||||||
<p>
|
<p>
|
||||||
<strong>Important:</strong> After EnvayaSMS is enabled, it will forward all SMS messages regardless of whether the
|
<strong>Important:</strong> After EnvayaSMS is enabled, it will forward all SMS messages regardless of whether the
|
||||||
EnvayaSMS app is open. If you want to use SMS normally again, return to EnvayaSMS' settings screen
|
EnvayaSMS app is open. If you want to use SMS normally again, return to EnvayaSMS' settings screen
|
||||||
and uncheck "Enable EnvayaSMS".
|
and uncheck "Enable EnvayaSMS".</p>
|
||||||
</p>
|
|
||||||
|
<p>If you're testing EnvayaSMS with an Android phone that you're also using for normal communication,
|
||||||
|
you can enable "Test mode" on the settings screen so that EnvayaSMS only handles SMS messages
|
||||||
|
from particular phone numbers.</p>
|
||||||
|
|
||||||
<h3 id='expansion'>Installing Expansion Packs</h3>
|
<h3 id='expansion'>Installing Expansion Packs</h3>
|
||||||
|
|
||||||
|
@ -32,12 +32,13 @@ HTTP Request Format
|
|||||||
<pre>
|
<pre>
|
||||||
POST /sg/app HTTP/1.1
|
POST /sg/app HTTP/1.1
|
||||||
X-Request-Signature: sAemG31uRllk/K9xck2WRNaF/WI=
|
X-Request-Signature: sAemG31uRllk/K9xck2WRNaF/WI=
|
||||||
Content-Length: 96
|
Content-Length: 120
|
||||||
Content-Type: application/x-www-form-urlencoded
|
Content-Type: application/x-www-form-urlencoded
|
||||||
Host: 192.168.70.1:3000
|
Host: 192.168.70.1:3000
|
||||||
Connection: Keep-Alive
|
Connection: Keep-Alive
|
||||||
|
|
||||||
from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212&action=incoming
|
from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212
|
||||||
|
&action=incoming×tamp=1317506831000
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>An incoming MMS message with an <code>image/jpeg</code> part and a <code>text/plain</code> part with message 'Test':</p>
|
<p>An incoming MMS message with an <code>image/jpeg</code> part and a <code>text/plain</code> part with message 'Test':</p>
|
||||||
@ -46,53 +47,61 @@ from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212
|
|||||||
POST /sg/app HTTP/1.1
|
POST /sg/app HTTP/1.1
|
||||||
X-Request-Signature: OgpiQet9guVhEp+0klrONR8qGNs=
|
X-Request-Signature: OgpiQet9guVhEp+0klrONR8qGNs=
|
||||||
Content-Length: 13087
|
Content-Length: 13087
|
||||||
Content-Type: multipart/form-data; boundary=i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
Content-Type: multipart/form-data; boundary=i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Host: 192.168.70.1:3000
|
Host: 192.168.70.1:3000
|
||||||
Connection: Keep-Alive
|
Connection: Keep-Alive
|
||||||
|
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="from"
|
Content-Disposition: form-data; name="from"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
+16505551234
|
+16505551234
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
|
Content-Disposition: form-data; name="timestamp"
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
1317506831000
|
||||||
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="message"
|
Content-Disposition: form-data; name="message"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
Test
|
Test
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="message_type"
|
Content-Disposition: form-data; name="message_type"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
mms
|
mms
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="mms_parts"
|
Content-Disposition: form-data; name="mms_parts"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
[{"type":"application/smil","filename":"01smil","cid":"<0000>","name":"part0"},{"type":"text/plain","filename":"Text01.txt","cid":"<569>","name":"part1"},{"type":"image/jpeg","filename":"Image0001.jpg","cid":"<570>","name":"part2"}]
|
[{"type":"application/smil","filename":"01smil","cid":"<0000>","name":"part0"},
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
{"type":"text/plain","filename":"Text01.txt","cid":"<569>","name":"part1"},
|
||||||
|
{"type":"image/jpeg","filename":"Image0001.jpg","cid":"<570>","name":"part2"}]
|
||||||
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="version"
|
Content-Disposition: form-data; name="version"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
3
|
3
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="phone_number"
|
Content-Disposition: form-data; name="phone_number"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
16505551212
|
16505551212
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="action"
|
Content-Disposition: form-data; name="action"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
incoming
|
incoming
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="part0"; filename="01smil"
|
Content-Disposition: form-data; name="part0"; filename="01smil"
|
||||||
Content-Type: application/smil; charset=UTF-8
|
Content-Type: application/smil; charset=UTF-8
|
||||||
Content-Transfer-Encoding: binary
|
Content-Transfer-Encoding: binary
|
||||||
@ -113,19 +122,19 @@ Content-Transfer-Encoding: binary
|
|||||||
</body>
|
</body>
|
||||||
</smil>
|
</smil>
|
||||||
|
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="part1"; filename="Text01.txt"
|
Content-Disposition: form-data; name="part1"; filename="Text01.txt"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: binary
|
Content-Transfer-Encoding: binary
|
||||||
|
|
||||||
Test
|
Test
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="part2"; filename="Image0001.jpg"
|
Content-Disposition: form-data; name="part2"; filename="Image0001.jpg"
|
||||||
Content-Type: image/jpeg
|
Content-Type: image/jpeg
|
||||||
Content-Transfer-Encoding: binary
|
Content-Transfer-Encoding: binary
|
||||||
|
|
||||||
<em>BINARY IMAGE DATA</em>
|
<em>BINARY IMAGE DATA</em>
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO--
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG--
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>Checking for outgoing SMS messages:</p>
|
<p>Checking for outgoing SMS messages:</p>
|
||||||
|
46
.phrozn/entries/test/index.twig
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
id: test
|
||||||
|
title: Testing EnvayaSMS
|
||||||
|
---
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src='/media/avd.png' width='242' height='227' style='float:right;padding-left:10px;' />
|
||||||
|
If you don't yet have an Android phone, you can test EnvayaSMS in an emulated phone on your computer.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
With this method, you can test EnvayaSMS for free
|
||||||
|
and figure out if EnvayaSMS will work for your project
|
||||||
|
without needing to get an actual phone or subscribe to mobile service.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The following steps explain how to set up EnvayaSMS on an Android Virtual Device:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>Install the <a href='http://developer.android.com/sdk/'>Android SDK</a> on your computer (where you are running a "dev" copy of your website)</li>
|
||||||
|
<li>Create a new Android Virtual Device with a target of Android 1.6 or higher. Specify a size for the SD card (necessary to download EnvayaSMS via the browser)</li>
|
||||||
|
<li>Start the virtual device</li>
|
||||||
|
<li>Open the Browser app and go to <a href='/install/'>sms.envaya.org/install</a></li>
|
||||||
|
<li>Click on the EnvayaSMS-release.apk link to download EnvayaSMS.<br />
|
||||||
|
<small>Note: Android Market does not work in the emulator.</small></li>
|
||||||
|
<li>Install EnvayaSMS</li>
|
||||||
|
<li>Configure EnvayaSMS with the settings of your development server. <br />
|
||||||
|
<small>Note: Do not enter <code>localhost</code> as the Server URL (since this would refer to the AVD itself). Instead, use your computer's IP address on the local network, as shown by the <code>ipconfig</code>
|
||||||
|
or <code>ifconfig</code> utilities.</small>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img src='/media/telnet.png' width='216' height='85' style='float:right' />
|
||||||
|
To simulate incoming SMS on the emulator:
|
||||||
|
<ul>
|
||||||
|
<li>using telnet from your host computer, connect to <code>localhost:5554</code><br />
|
||||||
|
<small>Note: on Windows, you can install <a href='http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html'>puttytel</a>.</small>
|
||||||
|
</li>
|
||||||
|
<li>type <code>sms send [phonenumber] [text message]</code> to send messages to the emulator.<br/>
|
||||||
|
<small>Note: the emulator cannot receive MMS messages.</small>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Of course, you can also test EnvayaSMS by connecting a real Android phone to your development web server.
|
||||||
|
For more information, see the <a href='/faq/#q_tunnel'>FAQ</a>.
|
||||||
|
</p>
|
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a {% if entry.id == 'install' %}class='active'{% endif %} href='/install/'>Install</a>
|
<a {% if entry.id == 'install' %}class='active'{% endif %} href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a {% if entry.id == 'test' %}class='active'{% endif %} href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a {% if entry.id == 'how' %}class='active'{% endif %} href='/how/'>How it Works</a>
|
<a {% if entry.id == 'how' %}class='active'{% endif %} href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a {% if entry.id == 'serverapi' %}class='active'{% endif %} href='/serverapi/'>API Reference</a>
|
<a {% if entry.id == 'serverapi' %}class='active'{% endif %} href='/serverapi/'>API Reference</a>
|
||||||
|
BIN
.phrozn/media/avd.png
Executable file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 30 KiB |
BIN
.phrozn/media/screenshot-pending.png
Executable file
After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 26 KiB |
BIN
.phrozn/media/telnet.png
Executable file
After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 24 KiB |
@ -55,7 +55,7 @@ dd
|
|||||||
|
|
||||||
#container {
|
#container {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 700px;
|
width: 650px;
|
||||||
}
|
}
|
||||||
h1 { margin-top:0; font-size: 42px; color: #6b9412; margin-bottom: 3px; }
|
h1 { margin-top:0; font-size: 42px; color: #6b9412; margin-bottom: 3px; }
|
||||||
h1 .small { font-size: 20px; color:#666; }
|
h1 .small { font-size: 20px; color:#666; }
|
||||||
@ -74,7 +74,7 @@ hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
|
|||||||
.button
|
.button
|
||||||
{
|
{
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
display:block;margin:0 auto;width:200px;background:#6b9412;color:white;padding:8px;font-weight:bold;text-align:center;
|
display:block;width:200px;background:#6b9412;color:white;padding:8px;font-weight:bold;text-align:center;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.button:hover
|
a.button:hover
|
||||||
@ -87,7 +87,7 @@ img
|
|||||||
border:0px;
|
border:0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.faq_links li
|
li
|
||||||
{
|
{
|
||||||
padding-bottom:5px;
|
padding-bottom:5px;
|
||||||
}
|
}
|
||||||
@ -101,3 +101,4 @@ img
|
|||||||
{
|
{
|
||||||
text-decoration:underline;
|
text-decoration:underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a href='/install/'>Install</a>
|
<a href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a href='/how/'>How it Works</a>
|
<a href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a href='/serverapi/'>API Reference</a>
|
<a href='/serverapi/'>API Reference</a>
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a href='/install/'>Install</a>
|
<a href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a href='/how/'>How it Works</a>
|
<a href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a href='/serverapi/'>API Reference</a>
|
<a href='/serverapi/'>API Reference</a>
|
||||||
@ -47,6 +49,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href='#q_rate'>How fast can EnvayaSMS send SMS messages?</a>
|
<a href='#q_rate'>How fast can EnvayaSMS send SMS messages?</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href='#q_tunnel'>EnvayaSMS can't connect to my dev server! What's wrong?</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href='#q_phones'>What phones are compatible with EnvayaSMS?</a>
|
<a href='#q_phones'>What phones are compatible with EnvayaSMS?</a>
|
||||||
</li>
|
</li>
|
||||||
@ -158,6 +163,45 @@ To increase the rate at which you can send SMS messages, you can install EnvayaS
|
|||||||
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>.
|
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>
|
</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>
|
<h4 id='q_phones'>What phones are compatible with EnvayaSMS?</h4>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a href='/install/'>Install</a>
|
<a href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a href='/how/'>How it Works</a>
|
<a href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a href='/serverapi/'>API Reference</a>
|
<a href='/serverapi/'>API Reference</a>
|
||||||
@ -40,21 +42,19 @@
|
|||||||
<h2>History</h2>
|
<h2>History</h2>
|
||||||
|
|
||||||
|
|
||||||
Version 2.0-rc2 (2011/09/29)
|
Version 2.0 (2011/10/01)
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Automatic failover between Wi-Fi and mobile data connection if server is unreachable
|
Automatic failover between Wi-Fi and mobile data connection if server is unreachable
|
||||||
(e.g. when Wi-Fi router is on, but it has no internet access)
|
(e.g. when Wi-Fi router is on, but it has no internet access)
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
User can see all pending messages, and retry/delete individual messages
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Send timestamp of incoming messages to server
|
Send timestamp of incoming messages to server
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
|
||||||
|
|
||||||
Version 2.0-rc1 (2011/09/28)
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
<li>
|
||||||
Allow outgoing SMS messages to be sent in priority order
|
Allow outgoing SMS messages to be sent in priority order
|
||||||
</li>
|
</li>
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a href='/install/'>Install</a>
|
<a href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a class='active' href='/how/'>How it Works</a>
|
<a class='active' href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a href='/serverapi/'>API Reference</a>
|
<a href='/serverapi/'>API Reference</a>
|
||||||
@ -59,7 +61,7 @@ work over the phone's mobile data connection, but Wi-Fi is likely to be faster,
|
|||||||
<p>
|
<p>
|
||||||
Then your network would look like this:
|
Then your network would look like this:
|
||||||
<br />
|
<br />
|
||||||
<img src='/media/topology.png' width='690' height='284' />
|
<img src='/media/topology.png' width='650' height='262' />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
11
index.html
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a href='/install/'>Install</a>
|
<a href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a href='/how/'>How it Works</a>
|
<a href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a href='/serverapi/'>API Reference</a>
|
<a href='/serverapi/'>API Reference</a>
|
||||||
@ -44,7 +46,8 @@
|
|||||||
<img src='/media/screenshot-main.png' width='212' height='350' />
|
<img src='/media/screenshot-main.png' width='212' height='350' />
|
||||||
<br />
|
<br />
|
||||||
<img src='/media/screenshot-settings.png' width='212' height='350' />
|
<img src='/media/screenshot-settings.png' width='212' height='350' />
|
||||||
|
<br />
|
||||||
|
<img src='/media/screenshot-pending.png' width='212' height='350' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
EnvayaSMS is a SMS and MMS gateway running entirely as an Android app.
|
EnvayaSMS is a SMS and MMS gateway running entirely as an Android app.
|
||||||
@ -91,8 +94,12 @@ It works wherever the phone can receive SMS messages and access the Internet
|
|||||||
In order to deploy EnvayaSMS, you will need a messaging plan for your phone, and the phone itself.
|
In order to deploy EnvayaSMS, you will need a messaging plan for your phone, and the phone itself.
|
||||||
EnvayaSMS is compatible with many old or inexpensive Android phones, e.g. the LG GT540, currently $120 on Amazon.com.
|
EnvayaSMS is compatible with many old or inexpensive Android phones, e.g. the LG GT540, currently $120 on Amazon.com.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Before deploying EnvayaSMS, you can test EnvayaSMS without an Android phone
|
||||||
|
by installing EnvayaSMS on an emulated phone on your computer. <a href='/test/'>Learn more...</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<a href='/install/' class='button'>
|
<a href='/install/' class='button' style='margin-left:110px;'>
|
||||||
Install EnvayaSMS Now
|
Install EnvayaSMS Now
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a class='active' href='/install/'>Install</a>
|
<a class='active' href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a href='/how/'>How it Works</a>
|
<a href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a href='/serverapi/'>API Reference</a>
|
<a href='/serverapi/'>API Reference</a>
|
||||||
@ -39,21 +41,26 @@
|
|||||||
|
|
||||||
<h2>Installing EnvayaSMS</h2>
|
<h2>Installing EnvayaSMS</h2>
|
||||||
|
|
||||||
Before installing EnvayaSMS, ensure that you have the following prerequisites:
|
In order to install and deploy EnvayaSMS, you will need the following prerequisites:
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>One or more Android phones (1.6 Donut or higher) that are
|
<li>One or more Android phones (1.6 or higher),
|
||||||
registered on a mobile network. </li>
|
registered on a mobile network
|
||||||
|
</li>
|
||||||
<li>A way for the phones to connect to the internet, either via Wi-Fi
|
<li>A way for the phones to connect to the internet, either via Wi-Fi
|
||||||
or the mobile data service. <br />
|
or the mobile data service<br />
|
||||||
(Even if using Wi-Fi, mobile data
|
(Even if using Wi-Fi, mobile data
|
||||||
service is necessary to receive MMS messages.) </li>
|
service is necessary to receive MMS messages.) </li>
|
||||||
<li>A web server accessible from the public internet</li>
|
<li>A web server accessible from the public internet</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
Using an Android phone, open <a href='https://market.android.com/details?id=org.envaya.sms'>EnvayaSMS on Android Market</a> by clicking the link from your phone's browser, or scanning the barcode with a QR code app. Then, follow the steps shown below to install EnvayaSMS on your phone.<br />
|
<p>
|
||||||
|
Note: If you don't have these prerequisites yet, you can <a href='/test/'>test EnvayaSMS on your computer</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<div style='float:left;padding-right:10px;padding-top:30px'>
|
To install EnvayaSMS on an Android phone, open EnvayaSMS on Android Market by clicking the link below from your phone's browser, or scanning the barcode with a QR code app.<br />
|
||||||
|
|
||||||
|
<div style='float:left;padding-right:10px;padding-top:20px'>
|
||||||
<div style='font-size:16px;font-weight:bold; text-align:center'>
|
<div style='font-size:16px;font-weight:bold; text-align:center'>
|
||||||
<a href="https://market.android.com/details?id=org.envaya.sms">Open Android Market</a>
|
<a href="https://market.android.com/details?id=org.envaya.sms">Open Android Market</a>
|
||||||
</div>
|
</div>
|
||||||
@ -63,7 +70,7 @@ Using an Android phone, open <a href='https://market.android.com/details?id=org.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style='float:left;padding-top:10px'>
|
<div style='float:left;padding-top:10px'>
|
||||||
<img src='/media/screenshot-market.png' style='border:1px solid black' width='484' height='240' />
|
<img src='/media/screenshot-market.png' style='border:1px solid black' width='440' height='218' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style='clear:both;padding-top:10px'>
|
<div style='clear:both;padding-top:10px'>
|
||||||
@ -118,6 +125,9 @@ After your server is configured, configure EnvayaSMS on your phone to connect to
|
|||||||
<li><em>Recommended:</em> under Wi-Fi sleep policy, select "always stay connected".
|
<li><em>Recommended:</em> under Wi-Fi sleep policy, select "always stay connected".
|
||||||
(Otherwise, EnvayaSMS will be unable to forward messages after the phone goes to sleep.)
|
(Otherwise, EnvayaSMS will be unable to forward messages after the phone goes to sleep.)
|
||||||
</li>
|
</li>
|
||||||
|
<li><em>Optional:</em> enable Network Failover so that the phone will automatically switch
|
||||||
|
to mobile data if the Wi-Fi network stops working.
|
||||||
|
</li>
|
||||||
<li>Check "Enable EnvayaSMS"</li>
|
<li>Check "Enable EnvayaSMS"</li>
|
||||||
<li>Click the Back button to return to the main screen</li>
|
<li>Click the Back button to return to the main screen</li>
|
||||||
</ol>
|
</ol>
|
||||||
@ -131,8 +141,11 @@ then click "Test Connection".
|
|||||||
<p>
|
<p>
|
||||||
<strong>Important:</strong> After EnvayaSMS is enabled, it will forward all SMS messages regardless of whether the
|
<strong>Important:</strong> After EnvayaSMS is enabled, it will forward all SMS messages regardless of whether the
|
||||||
EnvayaSMS app is open. If you want to use SMS normally again, return to EnvayaSMS' settings screen
|
EnvayaSMS app is open. If you want to use SMS normally again, return to EnvayaSMS' settings screen
|
||||||
and uncheck "Enable EnvayaSMS".
|
and uncheck "Enable EnvayaSMS".</p>
|
||||||
</p>
|
|
||||||
|
<p>If you're testing EnvayaSMS with an Android phone that you're also using for normal communication,
|
||||||
|
you can enable "Test mode" on the settings screen so that EnvayaSMS only handles SMS messages
|
||||||
|
from particular phone numbers.</p>
|
||||||
|
|
||||||
<h3 id='expansion'>Installing Expansion Packs</h3>
|
<h3 id='expansion'>Installing Expansion Packs</h3>
|
||||||
|
|
||||||
|
BIN
media/avd.png
Executable file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 30 KiB |
BIN
media/screenshot-pending.png
Executable file
After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 26 KiB |
BIN
media/telnet.png
Executable file
After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 24 KiB |
@ -26,6 +26,8 @@
|
|||||||
·
|
·
|
||||||
<a href='/install/'>Install</a>
|
<a href='/install/'>Install</a>
|
||||||
·
|
·
|
||||||
|
<a href='/test/'>Test</a>
|
||||||
|
·
|
||||||
<a href='/how/'>How it Works</a>
|
<a href='/how/'>How it Works</a>
|
||||||
·
|
·
|
||||||
<a class='active' href='/serverapi/'>API Reference</a>
|
<a class='active' href='/serverapi/'>API Reference</a>
|
||||||
@ -70,12 +72,13 @@ HTTP Request Format
|
|||||||
<pre>
|
<pre>
|
||||||
POST /sg/app HTTP/1.1
|
POST /sg/app HTTP/1.1
|
||||||
X-Request-Signature: sAemG31uRllk/K9xck2WRNaF/WI=
|
X-Request-Signature: sAemG31uRllk/K9xck2WRNaF/WI=
|
||||||
Content-Length: 96
|
Content-Length: 120
|
||||||
Content-Type: application/x-www-form-urlencoded
|
Content-Type: application/x-www-form-urlencoded
|
||||||
Host: 192.168.70.1:3000
|
Host: 192.168.70.1:3000
|
||||||
Connection: Keep-Alive
|
Connection: Keep-Alive
|
||||||
|
|
||||||
from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212&action=incoming
|
from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212
|
||||||
|
&action=incoming×tamp=1317506831000
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>An incoming MMS message with an <code>image/jpeg</code> part and a <code>text/plain</code> part with message 'Test':</p>
|
<p>An incoming MMS message with an <code>image/jpeg</code> part and a <code>text/plain</code> part with message 'Test':</p>
|
||||||
@ -84,53 +87,61 @@ from=6505551234&message_type=sms&message=test&version=2&phone_number=16505551212
|
|||||||
POST /sg/app HTTP/1.1
|
POST /sg/app HTTP/1.1
|
||||||
X-Request-Signature: OgpiQet9guVhEp+0klrONR8qGNs=
|
X-Request-Signature: OgpiQet9guVhEp+0klrONR8qGNs=
|
||||||
Content-Length: 13087
|
Content-Length: 13087
|
||||||
Content-Type: multipart/form-data; boundary=i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
Content-Type: multipart/form-data; boundary=i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Host: 192.168.70.1:3000
|
Host: 192.168.70.1:3000
|
||||||
Connection: Keep-Alive
|
Connection: Keep-Alive
|
||||||
|
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="from"
|
Content-Disposition: form-data; name="from"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
+16505551234
|
+16505551234
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
|
Content-Disposition: form-data; name="timestamp"
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
1317506831000
|
||||||
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="message"
|
Content-Disposition: form-data; name="message"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
Test
|
Test
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="message_type"
|
Content-Disposition: form-data; name="message_type"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
mms
|
mms
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="mms_parts"
|
Content-Disposition: form-data; name="mms_parts"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
[{"type":"application/smil","filename":"01smil","cid":"<0000>","name":"part0"},{"type":"text/plain","filename":"Text01.txt","cid":"<569>","name":"part1"},{"type":"image/jpeg","filename":"Image0001.jpg","cid":"<570>","name":"part2"}]
|
[{"type":"application/smil","filename":"01smil","cid":"<0000>","name":"part0"},
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
{"type":"text/plain","filename":"Text01.txt","cid":"<569>","name":"part1"},
|
||||||
|
{"type":"image/jpeg","filename":"Image0001.jpg","cid":"<570>","name":"part2"}]
|
||||||
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="version"
|
Content-Disposition: form-data; name="version"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
3
|
3
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="phone_number"
|
Content-Disposition: form-data; name="phone_number"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
16505551212
|
16505551212
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="action"
|
Content-Disposition: form-data; name="action"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
incoming
|
incoming
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="part0"; filename="01smil"
|
Content-Disposition: form-data; name="part0"; filename="01smil"
|
||||||
Content-Type: application/smil; charset=UTF-8
|
Content-Type: application/smil; charset=UTF-8
|
||||||
Content-Transfer-Encoding: binary
|
Content-Transfer-Encoding: binary
|
||||||
@ -151,19 +162,19 @@ Content-Transfer-Encoding: binary
|
|||||||
</body>
|
</body>
|
||||||
</smil>
|
</smil>
|
||||||
|
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="part1"; filename="Text01.txt"
|
Content-Disposition: form-data; name="part1"; filename="Text01.txt"
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: binary
|
Content-Transfer-Encoding: binary
|
||||||
|
|
||||||
Test
|
Test
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG
|
||||||
Content-Disposition: form-data; name="part2"; filename="Image0001.jpg"
|
Content-Disposition: form-data; name="part2"; filename="Image0001.jpg"
|
||||||
Content-Type: image/jpeg
|
Content-Type: image/jpeg
|
||||||
Content-Transfer-Encoding: binary
|
Content-Transfer-Encoding: binary
|
||||||
|
|
||||||
<em>BINARY IMAGE DATA</em>
|
<em>BINARY IMAGE DATA</em>
|
||||||
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RGB6_wkjO--
|
--i66xAht5IMn1Tfk7tL9DgY8ZHZxq0d0RG--
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p>Checking for outgoing SMS messages:</p>
|
<p>Checking for outgoing SMS messages:</p>
|
||||||
|
@ -55,7 +55,7 @@ dd
|
|||||||
|
|
||||||
#container {
|
#container {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
width: 700px;
|
width: 650px;
|
||||||
}
|
}
|
||||||
h1 { margin-top:0; font-size: 42px; color: #6b9412; margin-bottom: 3px; }
|
h1 { margin-top:0; font-size: 42px; color: #6b9412; margin-bottom: 3px; }
|
||||||
h1 .small { font-size: 20px; color:#666; }
|
h1 .small { font-size: 20px; color:#666; }
|
||||||
@ -74,7 +74,7 @@ hr { border: 0; width: 80%; border-bottom: 1px solid #aaa}
|
|||||||
.button
|
.button
|
||||||
{
|
{
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
display:block;margin:0 auto;width:200px;background:#6b9412;color:white;padding:8px;font-weight:bold;text-align:center;
|
display:block;width:200px;background:#6b9412;color:white;padding:8px;font-weight:bold;text-align:center;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.button:hover
|
a.button:hover
|
||||||
@ -87,7 +87,7 @@ img
|
|||||||
border:0px;
|
border:0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.faq_links li
|
li
|
||||||
{
|
{
|
||||||
padding-bottom:5px;
|
padding-bottom:5px;
|
||||||
}
|
}
|
||||||
|
110
test/index.html
Executable file
@ -0,0 +1,110 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset='utf-8'>
|
||||||
|
<meta http-equiv="cache-control" content="no-cache, must-revalidate" >
|
||||||
|
<title>EnvayaSMS: Testing EnvayaSMS</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='/test/'>Test</a>
|
||||||
|
·
|
||||||
|
<a 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>Testing EnvayaSMS</h2>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src='/media/avd.png' width='242' height='227' style='float:right;padding-left:10px;' />
|
||||||
|
If you don't yet have an Android phone, you can test EnvayaSMS in an emulated phone on your computer.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
With this method, you can test EnvayaSMS for free
|
||||||
|
and figure out if EnvayaSMS will work for your project
|
||||||
|
without needing to get an actual phone or subscribe to mobile service.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The following steps explain how to set up EnvayaSMS on an Android Virtual Device:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>Install the <a href='http://developer.android.com/sdk/'>Android SDK</a> on your computer (where you are running a "dev" copy of your website)</li>
|
||||||
|
<li>Create a new Android Virtual Device with a target of Android 1.6 or higher. Specify a size for the SD card (necessary to download EnvayaSMS via the browser)</li>
|
||||||
|
<li>Start the virtual device</li>
|
||||||
|
<li>Open the Browser app and go to <a href='/install/'>sms.envaya.org/install</a></li>
|
||||||
|
<li>Click on the EnvayaSMS-release.apk link to download EnvayaSMS.<br />
|
||||||
|
<small>Note: Android Market does not work in the emulator.</small></li>
|
||||||
|
<li>Install EnvayaSMS</li>
|
||||||
|
<li>Configure EnvayaSMS with the settings of your development server. <br />
|
||||||
|
<small>Note: Do not enter <code>localhost</code> as the Server URL (since this would refer to the AVD itself). Instead, use your computer's IP address on the local network, as shown by the <code>ipconfig</code>
|
||||||
|
or <code>ifconfig</code> utilities.</small>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img src='/media/telnet.png' width='216' height='85' style='float:right' />
|
||||||
|
To simulate incoming SMS on the emulator:
|
||||||
|
<ul>
|
||||||
|
<li>using telnet from your host computer, connect to <code>localhost:5554</code><br />
|
||||||
|
<small>Note: on Windows, you can install <a href='http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html'>puttytel</a>.</small>
|
||||||
|
</li>
|
||||||
|
<li>type <code>sms send [phonenumber] [text message]</code> to send messages to the emulator.<br/>
|
||||||
|
<small>Note: the emulator cannot receive MMS messages.</small>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Of course, you can also test EnvayaSMS by connecting a real Android phone to your development web server.
|
||||||
|
For more information, see the <a href='/faq/#q_tunnel'>FAQ</a>.
|
||||||
|
</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>
|