Lanjut Ngoprek, kali ini membuat aplikasi SMS-Gateway dengan fasilitas auto reply sehingga bisa diimplementasikan sebagai system reminder berbasis SMS bersifat multipurpose problem solving tetap dengan backend aplikasi Gammu dan PHP berjalan dibelakangnya. 😀 . Rencananya akan dicoba secara bertahap mulai dari reminder account pengguna layanan proxy, email, hotspot, atau SIAKAD atau LEMLIT (repot memang kalau belum masuk ke single sign on – padahal sdh saya coba usulkan ke yg berwenang untuk hal ini ).
Kondisi replying system yg dinginkan adalah sebagai berikut;
- Hanya user dengan login valid yang dijawab sistem.
- User sebelumnya harus sudah mendaftarkan nomor Handphonenya agar bisa menggunakan layanan ini.
- Penggabungan antara Matching source No_HP dan ID_Login dibuat sebagai filternya.
- Informasi yang dikirimkan ke No_HP user adalah informasi account saat ini.
Mari kita buat sample data dengan membuat tabel baru kedalam database default gammu (jika belum jelas bentuk databasenya seperti apa bisa lihat disini )
SQL Code CREATE TABLE IF NOT EXISTS `proxy` ( `no_hp` varchar(50) NOT NULL, `login` varchar(10) NOT NULL DEFAULT '', `password` varchar(20) DEFAULT NULL, `expired_date` varchar(60) DEFAULT NULL, PRIMARY KEY (`no_hp`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
PHP CODE autoreply.php
<html>
<head>
<!-- refresh script SMS RETRIEVE AUTO REPLY setiap 10 detik -->
<meta http-equiv="refresh" content="10; url=<?php $_SERVER['PHP_SELF']; ?>">
</head>
<body>
<h1>SMS-GATEWAY Server Is Running....</h1>
<?php
//Open Connections to Mysql Server
mysql_connect("localhost", "root", "xxxx");
mysql_select_db("gammu");
// query membaca SMS yang belum diproses
$query = "SELECT * FROM inbox WHERE Processed = 'false'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// membaca ID SMS
$id = $data['ID'];
// membaca no pengirim
$noPengirim = $data['SenderNumber'];
// membaca pesan SMS dan mengubahnya menjadi kapital
$msg = $data['TextDecoded'];
// proses parsing
// memecah pesan berdasarkan karakter <spasi>
$pecah = explode(" ", $msg);
// jika kata terdepan dari SMS adalah 'login' maka cari login User
if ($pecah[0] == "login")
{
// baca login dari text SMS
$nim = $pecah[1];
// cari login berdasarkan entri login di sms masuk dan digabung dengan no Pengirim
$query2 = "SELECT * FROM proxy WHERE (login='$nim' AND no_hp='$noPengirim') ";
$hasil2 = mysql_query($query2);
// cek bila data Login tidak ditemukan
if (mysql_num_rows($hasil2) == 0) $reply = "No HP Atau Login anda Tidak Dikenali";
else
{
// bila nilai ditemukan maka
$data2 = mysql_fetch_array($hasil2);
$nilai = $data2['login'];
$nilai4 = $data2['password'];
$nilai5 = $data2['expired_date'];
$note = 'Reminder Untuk User Anda : ';
$note2 = ' Password:';
$note3 = ' Masa Aktif:';
}
}
else $reply = "Maaf perintah Anda salah";
// Buat SMS balasan ke pengirim Pesan
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES ('$noPengirim', '$note$nilai$note2$nilai4$note3$nilai5')";
$hasil3 = mysql_query($query3);
// ubah nilai 'processed' menjadi 'true' untuk setiap SMS yang telah diproses agar SMS tidak direply lagi oleh Mesin
$query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
$hasil3 = mysql_query($query3);
}
?>
</body>
</html>
Terakhir jalan kan script php autoreply.php yang sudah dibuat tadi, otomatis setiap 10 detik script akan membaca apakah ada sms masuk didalam tabel inbox kemudian membaca flag sudah diproses atau belum, jika belum diproses system akan memprosesnya kemudian mengirimkan jawaban berupa sms informasi login ke nomor pengirim.
Demikian Tulisan singkat ini dibuat . as reminder.