Masih terkait dengan SMS gateway, dalam artikel kali ini saya akan
mencoba memaparkan cara membuat sendiri aplikasi kirim SMS gratis via
web. Permintaan untuk membuat artikel dengan topik ini sudah banyak
masuk ke email saya maupun komentar dalam blog ini. Namun, mohon maaf
baru kali ini saya bisa mewujudkannya.
Untuk membuat fasilitas kirim SMS gratis via web, kita membutuhkan
sebuah aplikasi gateway untuk mengirim SMS. Aplikasi sms gateway ini
nanti kita install atau letakkan di pc yang ada di rumah kita beserta
modem/hp yang tercolok pada PC tersebut sebagai alat untuk mengirim SMS.
PC ini harus senantiasa terhubung ke internet untuk berkomunikasi
dengan PC server yang ada di hosting. Sedangkan di dalam hosting, kita
buat semacam script form untuk interface user yang ingin mengirim SMS.
Untuk aplikasi sms gateway yang diinstall di PC rumah, Anda bisa
menggunakan Gammu sebagai enginenya.
Pertanyaan yang muncul kemudian adalah bagaimana cara
mengkomunikasikan PC server yang ada di hosting dengan PC di rumah, atau
dengan kata lain bagaimana mengirim data sms yang disubmit via hosting
kemudian bisa sampai di PC rumah lalu mengirimkan sms tersebut via
modem/hp?
OK… konsep dasar atau ide dasar dalam pembuatannya adalah kita
menggunakan semacam web service yang dibuat di server hosting untuk
komunikasi antara PC rumah dan PC hosting. Web service ini nanti
senantiasa akan diakses oleh PC rumah. Melalui web service inilah SMS
akan dikirim dari PC hosting ke PC rumah. Lantas, apa bentuk output dari
web service ini? Web service disajikan dalam bentuk XML yang isinya
adalah bunyi SMS dan nomor tujuan SMS yang akan dikirim. Data XML yang
berisi bunyi sms dan nomor tujuan inilah yang nanti akan dibaca oleh PC
rumah, lalu mengirimkannya lewat SMS gateway (Gammu).
Nah.. sekarang kita menuju implementasi cara pembuatannya.
Langkah pertama, Anda harus sudah menginstall Gammu sebagai tool SMS
gateway nya. Pastikan Anda bisa mengirim SMS menggunakan Gammu dan
HP/modem yang tercolok di PC Anda.
Langkah kedua, buatlah script form untuk mengirim SMS. Script form ini nanti diletakkan di server hosting
sms.html
1.
<
form
method
=
"post"
action
=
"kirim.php"
>
2.
No. Tujuan <
input
type
=
"text"
name
=
"destination"
>
3.
Isi SMS<
br
><
textarea
name
=
"sms"
>textarea
>
4.
form
>
Bila diperhatikan, form kirim SMS di atas nantinya akan disubmit di
script kirim.php. Di dalam script kirim.php inilah nomor tujuan dan isi
SMS akan disimpan dalam tabel temporary pada database server hosting.
Misalkan kita beri nama tabel temporary tersebut adalah ‘outbox’. Kita
bisa buat tabel ‘outbox’ ini dengan struktur sbb:
1.
CREATE
TABLE
`outbox` (
2.
`id`
int
(11) AUTO_INCREMENT,
3.
`destinationNumber`
varchar
(20),
4.
`sms` text,
5.
PRIMARY
KEY
(`id`)
6.
)
Field ‘id’ digunakan sebagai nomor unik penanda setiap SMS yang akan
dikirim, field ‘destinationNumber’ untuk menyimpan nomor tujuan SMS, dan
‘sms’ untuk menyimpan isi SMS.
OK, kita buat script kirim.php nya
kirim.php
01.
02.
// koneksi ke mysql server hosting
03.
mysql_connect(
'dbhost'
,
'dbuser'
,
'dbpass'
);
04.
mysql_select_db(
'dbname'
);
05.
06.
// baca nomor tujuan dan isi sms dari form
07.
$destNumber
=
$_POST
[
'destination'
];
08.
$sms
=
$_POST
[
'sms'
];
09.
10.
// query insert data sms ke tabel 'outbox'
11.
$query
=
"INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES ('$destNumber', '$sms', 'Gammu')"
;
12.
mysql_query(
$query
);
13.
14.
echo
"SMS sudah dikirim..."
;
15.
?>
Setelah data sms yang dikirim tersimpan dalam tabel ‘outbox’, langkah
selanjutnya kita buat script web service untuk menyajikan data sms yang
tersimpan dalam tabel ‘outbox’ tersebut ke dalam bentuk dokumen XML.
Misalkan kita beri nama script untuk mengenerate XML ini ‘data.php’
data.php
01.
02.
// koneksi ke mysql server hosting
03.
mysql_connect(
'dbhost'
,
'dbuser'
,
'dbpass'
);
04.
mysql_select_db(
'dbname'
);
05.
06.
// membuat header dokumen XML
07.
header(
'Content-Type: text/xml'
);
08.
echo
""
;
09.
10.
// membuat root tag untuk data XML
11.
echo
""
;
12.
13.
// query untuk membaca seluruh SMS yang ada di tabel outbox
14.
$query
=
"SELECT * FROM outbox ORDER BY id"
;
15.
$hasil
= mysql_query(
$query
);
16.
while
(
$data
= mysql_fetch_array(
$hasil
))
17.
{
18.
// representasi data sms
19.
echo
""
;
20.
echo
""
.
$data
[
'id'
].
""
;
21.
echo
""
.
$data
[
'destinationNumber'
].
""
;
22.
echo
""
.
$data
[
'sms'
].
""
;
23.
echo
""
;
24.
}
25.
echo
""
;
26.
?>
OK… ketiga file di atas (sms.html, kirim.php, dan data.php) nanti
diletakkan di dalam server hosting. Sampai langkah ini, kita sudah
selesai bekerja di level server hosting. Langkah berikutnya adalah
membuat script di sisi PC rumah.
Di dalam PC rumah, nantinya kita akan membuat script untuk membaca
data sms yang tersaji dalam bentuk XML yang digenerate melalui script
‘data.php’ yang ada di server hosting. Setelah data sms ini dibaca,
kemudian kita masukkan ke dalam tabel ‘outbox’ bawaannya Gammu untuk
dikirim melalui hp/modem. Oya, kita perlu juga menghapus setiap data sms
di server hosting yang sudah dibaca. Mengapa hal ini dilakukan? ya
dong, supaya tabel ‘outbox’ nya di server hosting tidak penuh. Lantas,
bagaimana cara menghapus data secara otomatis di server hosting setelah
data sms nya terbaca? ya… kita gunakan CURL.
OK… ini dia script untuk membaca data sms dari XML nya.
bacasms.php
01.
02.
// koneksi ke mysql di server localhost
03.
mysql_connect(
'dbhost'
,
'dbuser'
,
'dbpass'
);
04.
// nama database Gammu yang ada di localhost
05.
mysql_select_db(
'dbname'
);
06.
07.
// baca data XML dari server hosting yang digenerate oleh data.php
08.
$dataxml
= simplexml_load_file(
'http://namasitus/data.php'
);
09.
foreach
(
$dataxml
->data
as
$data
)
10.
{
11.
// baca field ID
12.
$id
=
$data
->id;
13.
// baca nomor tujuan
14.
$destination
=
$data
->destination;
15.
// baca isi sms
16.
$sms
=
$data
->sms;
17.
18.
// mengirim SMS via Gammu dengan insert data ke tabel outbox Gammu
19.
$query
=
"INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES ('$destination', '$sms')"
;
20.
mysql_query(
$query
);
21.
22.
// hapus data SMS di server hosting yang sudah terbaca berdasarkan ID
23.
$curlHandle
= curl_init();
24.
curl_setopt(
$curlHandle
, CURLOPT_URL,
'http://namasitus/hapus.php'
);
25.
curl_setopt(
$curlHandle
, CURLOPT_POSTFIELDS,
'id='
.
$id
);
26.
curl_setopt(
$curlHandle
, CURLOPT_HEADER, 0);
27.
curl_setopt(
$curlHandle
, CURLOPT_RETURNTRANSFER, 1);
28.
curl_setopt(
$curlHandle
, CURLOPT_TIMEOUT,30);
29.
curl_setopt(
$curlHandle
, CURLOPT_POST, 1);
30.
curl_exec(
$curlHandle
);
31.
curl_close(
$curlHandle
);
32.
}
33.
?>
Jika web server di PC localhost belum mendukung CURL, maka lakukan setting CURL terlebih dahulu.
Eh… kalo kita liat pada script bacasms.php di atas, pada proses
penghapusan data SMS yang ada di server hosting melalui CURL terdapat
pemanggilan script hapus.php. Nah… script ini belum kita buat di server
hosting. Script hapus.php ini nanti berfungsi untuk menghapus data sms
yang ada di tabel outbox dalam database server hosting berdasarkan ID
nya setelah data sms tersebut di baca oleh script bacasms.php.
hapus.php
01.
02.
// koneksi ke mysql di server hosting
03.
mysql_connect(
'dbhost'
,
'dbuser'
,
'dbpass'
);
04.
mysql_select_db(
'dbname'
);
05.
06.
// baca ID data yang akan dihapus yang dikirim via CURL dari localhost
07.
$id
=
$_POST
[
'id'
];
08.
// hapus data SMS berdasarkan ID
09.
$query
=
"DELETE FROM outbox WHERE id = '$id'"
;
10.
mysql_query(
$query
);
11.
12.
?>
Sekali lagi script hapus.php di atas harus ditaruh di server hosting lho ya… !!!
Selanjutnya script bacasms.php ini harus senantiasa kita jalankan
melalui web browser localhost di PC rumah kita supaya bisa selalu
membaca data sms yang ada di hosting lalu mengirimnya via Gammu. Lalu
bagaimana supaya script bacasms.php ini bisa secara otomatis berjalan
dan selalu bisa membaca data dari server hosting? Sebenarnya Anda bisa
mengklik tombol REFRESH pada web browser supaya script ini bekerja,
namun tentu hal ini membuat report kan? Nah… salah satu solusi dari hal
ini adalah Anda bisa menjalankan autorefresh melalui AJAX yang secara
otomatis merefresh script bacasms.php ini pada setiap selang n detik.
Ini dia script nya…
index.php
01.
<
html
>
02.
<
head
>
03.
<
title
>SMS Server Running...title
>
04.
<
script
type
=
"text/javascript"
>
05.
function ajax()
06.
{
07.
if (window.XMLHttpRequest)
08.
{
09.
xmlhttp=new XMLHttpRequest();
10.
}
11.
else
12.
{
13.
xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");
14.
}
15.
16.
xmlhttp.onreadystatechange=function()
17.
{
18.
if (xmlhttp.readyState==4 &amp;&amp; xmlhttp.status==200)
19.
{
20.
}
21.
}
22.
23.
xmlhttp.open("GET","bacasms.php");
24.
xmlhttp.send();
25.
setTimeout("ajax()", 5000);
26.
}
27.
script
>
28.
29.
head
>
30.
<
body
onload
=
"ajax()"
>
31.
<
h1
>SMS Server Running...h1
>
32.
body
>
33.
html
>
Contoh script AJAX yang ada di index.php di atas diset supaya bisa
merefresh secara otomatis bacasms.php dalam interval 5 detik (5000 ms).
Dengan demikian yang perlu Anda jalankan di localhost hanyalah script
index.php di atas melalui browser.
Nah.. konsep di atas memungkinkan kita untuk bisa membangun aplikasi
SMS gateway yang terintegrasi antara PC di server hosting dengan PC di
rumah tanpa menggunakan IP public yang urusan untuk mendapatkannya
sangat ribet dan mahal biayanya, atau tanpa menggunakan VPS maupun
dedicated server untuk tipe hostingnya yang juga sangat mahal biayanya.
Anda dapat belajar teknik-teknik lain kaitannya dengan SMS gateway yang mengintegrasikan server hosting dengan pc rumah dengan contoh-contoh script SMS gateway yang saya buat untuk belajar.
Oya… meskipun namanya SMS gratis, tapi tidak sepenuhnya gratis.
Istilah Gratis hanya bagi si pengguna atau pengirim SMS melalui web
Anda, namun tidak gratis bagi si pemilik web karena harus menyisihkan
sedikit biaya untuk bayar pulsa. Tapi tak apalah, anggap saja itu biaya
marketing untuk lebih mengenalkan web Anda, apalagi saat ini pulsa sms
sangat murah
Bisa pula tambahkan string pada setiap SMS yang dikirimkan dengan nama
situs Anda untuk lebih memperkuat branding web Anda. Untuk hal ini
silakan utak-atik sendiri ya
Simpel bukan idenya??? Selamat mencoba…
EmoticonEmoticon