SMS Gateway With autoreply, implement for Password Reminder base SMS write on PHP

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.

Leave a Reply

Your email address will not be published. Required fields are marked *