This guide gives information on how you can add SMS functionality
to your website. The method I present uses HTTP communication between
the SMS Gateway and your website. To send and receive SMS messages from
a webpage you need to have scripting support enabled on your webserver.
The scripting support can be PHP or ASP. The examples presented
here are using PHP.
How to send SMS from a website?
The example I present here shows how to send an SMS message
from your website by clicking on a button. The idea we use is
to have an HTML form, that allows the website visitor to enter a
phone number and the message text. This HTML form can be
submitted by clicking on the "SEND" button. Once submitted the
form variables will be processed by a PHP script. This PHP script
will post the SMS message to the SMS Gateway (Figure 1). As you can
see on Figure 1. The SMS Gateway and your webserver (your webserver is hosting
your HTML Form and your PHP script) can be on two different computers. If you
wish you can install the Ozeki SMS Gateway software and the webserver with
the HTML Form and the PHP script to the same computer.
|
The first step in setting up this system, is to
Install the Ozeki NG SMS Gateway
to your computer and to verify, that you can send SMS messages from the
gateway manually. After your SMS gateway is functioning you can create the
HTML Form and the PHP script.
Ozeki NG SMS Gateway can be obtained by opening the download page: Download Ozeki NG SMS Gateway! |
Create the HTML Form for sms sending
To get this solution working you need to save the sendsms.html file
into the WWW directory of your webserver. The sendsms.html file will
contain the HTML Form that can be used to get the recipient telephone
number and the message text from the website visitors. Here is the
source of the sendsms.html file:
C:\www\sendsms.html
C:\www\sendsms.html
<html> <body> <h1>My SMS form</h1> <form method=post action='sendsms.php'> <table border=0> <tr> <td>Recipient</td> <td><input type='text' name='recipient'></td> </tr> <tr> <td>Message</td> <td><textarea rows=4 cols=40 name='message'></textarea></td> </tr> <tr> <td> </td> <td><input type=submit name=submit value=Send></td> </tr> </table> </form> </body> </html> |
After you save this file, you can use a browser (Internet Explorer or
Firefox) to open it (Figure 2). On the form you will seen an input box for the
recipient field and the message text. The recipient field will take
the telephone number (e.g. +4407776134588) and the message field
will take the message text.
Figure 2 - open the SMS form in your browser
Figure 2 - open the SMS form in your browser
Please note that the form action tag points to the sendsms.php file. This
means that the data entered by the website visitor will be posted to the
sendsms.php file.
Prepare your PHP SMS script
As you can see the form target in this HTML form is the sendsms.php. The
sendsms.php script will get the recipient and the message fields
from the form and will build a URL to send the SMS message. This URL will
be used to pass the SMS message to the SMS gateway. The URL is invoked
in the PHP script using the file command. To get this script working
you should configure the $ozeki_url variable to point to the SMS gateway.
If you have installed the SMS Gateway to the same computer where your webserver
is you can leave this untouched, otherwise you should change the IP address
in the URL. The source code of the script is here:
C:\www\sendsms.php
C:\www\sendsms.php
<?php ######################################################## # Login information for the SMS Gateway ######################################################## $ozeki_user = "admin"; $ozeki_password = "abc123"; $ozeki_url = "http://127.0.0.1:9501/api?"; ######################################################## # Functions used to send the SMS message ######################################################## function httpRequest($url){ $pattern = "/http...([0-9a-zA-Z-.]*).([0-9]*).(.*)/"; preg_match($pattern,$url,$args); $in = ""; $fp = fsockopen("$args[1]", $args[2], $errno, $errstr, 30); if (!$fp) { return("$errstr ($errno)"); } else { $out = "GET /$args[3] HTTP/1.1\r\n"; $out .= "Host: $args[1]:$args[2]\r\n"; $out .= "User-agent: Ozeki PHP client\r\n"; $out .= "Accept: */*\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $in.=fgets($fp, 128); } } fclose($fp); return($in); } function ozekiSend($phone, $msg, $debug=false){ global $ozeki_user,$ozeki_password,$ozeki_url; $url = 'username='.$ozeki_user; $url.= '&password='.$ozeki_password; $url.= '&action=sendmessage'; $url.= '&messagetype=SMS:TEXT'; $url.= '&recipient='.urlencode($phone); $url.= '&messagedata='.urlencode($msg); $urltouse = $ozeki_url.$url; if ($debug) { echo "Request: <br>$urltouse<br><br>"; } //Open the URL to send the message $response = httpRequest($urltouse); if ($debug) { echo "Response: <br><pre>". str_replace(array("<",">"),array("<",">"),$response). "</pre><br>"; } return($response); } ######################################################## # GET data from sendsms.html ######################################################## $phonenum = $_POST['recipient']; $message = $_POST['message']; $debug = true; ozekiSend($phonenum,$message,$debug); ?> |
Once you have both: sendsms.html and sendsms.php installed, you can submit
an SMS to the gateway. On a successful send the SMS gateway will return
the message reference number (Figure 3). This number can be used to track
the message inside the SMS Gateway.
Figure 3 - Successful SMS sending
Figure 3 - Successful SMS sending
Useful information
In order to be able to use this PHP script, you need to have the Ozeki NG SMS
Gateway software installed to your computer. After Ozeki NG SMS Gateway is
installed and
configured, change the value of the $ozeki_url variable in the above PHP script
to reflect the IP address of your computer. In other words, if you install Ozeki
NG SMS Gateway to the computer, that has an IP address of 101.102.103.104, you
should change the http://127.0.0.1:9501/api? value to http://101.102.103.104:9501/api?.
Note that the ip address 127.0.0.1 has been changed in the $ozeki_url variable
0 comments:
Post a Comment