13 Jun 2013

Tutorial SMS Gateway : Auto Reply SMS dengan gammu [modul 5]

Sekarang tahap finalnya, setelah bisa mengirimkan sms. Sekarang kita akan membuat auto reply sms nya... thumbnail 1 summary
Sekarang tahap finalnya, setelah bisa mengirimkan sms. Sekarang kita akan membuat auto reply sms nya. Contoh Format REG#Nama#Tanggal#Jenis Kelamin#Alamat

Membuat kode auto reply sms

Masuk ke folder c:\xampp\htdocs\smsku dan buat sebuah file autoreply.php , ketikkan kode sebagai berikut:

<?php

mysql_connect("localhost","root","");

mysql_select_db("smskudb");

$query = "SELECT * FROM inbox WHERE Processed = 'false'";
$hasil = mysql_query($query);
while($data= mysql_fetch_array($hasil)){
    $id = $data['ID'];
    $noPengirim = $data['SenderNumber'];
    $msg = strtoupper($data['TextDecoded']);
    $pecah = explode("#",$msg);
    $d_tgl=$pecah[1];
    $d_nama=$pecah[2];
    $d_jk=$pecah[3];
    $d_alamat=$pecah[4];
    if($pecah[0]=="REG")
    {
        if($pecah[1] !="" and $pecah[2] !="" and $pecah[3] !="")
        {
            $today = date("Ymd");
            $tgl=date("d M Y");
            $newDate = date("Y-m-d", strtotime($d_tgl));

            $isinyo="Nomor ".$noPengirim." Nama ".$d_nama." JenisKel ".$d_jk." Alamat ".$d_alamat;
            $query=mysql_query("INSERT INTO outbox (DestinationNumber,
            TextDecoded) VALUES ('".$noPengirim."', '".$isinyo."')");     

        }else{
            $query=mysql_query("INSERT INTO outbox (DestinationNumber,
            TextDecoded, CreatorID) VALUES ('".$noPengirim."', 'Gagal Registrasi. Format : REG#Tanggal#Nama#PRIA/WANITA#Alamat')");
        }
    }else{
            $query=mysql_query("INSERT INTO outbox (DestinationNumber,
            TextDecoded) VALUES ('".$noPengirim."', 'Gagal Registrasi. Format : REG#Tanggal#Nama#PRIA/WANITA#Alamat')");
    }
    $query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
        mysql_query($query3);
}
?>
Keterangan :
Query Inbox , melakukan pencarian data inbox yang masuk dalam modem USB dan tabel inbox
$query = "SELECT * FROM inbox WHERE Processed = 'false'";
$hasil = mysql_query($query);
Looping data inbox
while($data= mysql_fetch_array($hasil)){

Membuat variabel untuk record data inbox
$id = $data['ID'];
$noPengirim = $data['SenderNumber'];
$msg = strtoupper($data['TextDecoded']);

Membagi format berdasarkan karaktek #
$pecah = explode("#",$msg);
$d_tgl=$pecah[1];
$d_nama=$pecah[2];
$d_jk=$pecah[3];
$d_alamat=$pecah[4];
Jadi $d_nama adalah isi dari format sms NAMA yang dikirimkan

Cek format SMS pertama sekali adalah REG dan Cek semua format SMS
 if($pecah[0]=="REG")
    {
        if($pecah[1] !="" and $pecah[2] !="" and $pecah[3] !="")
        {

Konversi tanggal php ke mysql
$today = date("Ymd");
$tgl=date("d M Y");
$newDate = date("Y-m-d", strtotime($d_tgl));

Setelah terkirim, maka status inbox tersebut sudah terkirim "true"
$query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
        mysql_query($query3);


Ops, ini belum selesai. SMS Gateway tidak akan respon jika tidak ada eksekusi terlebih dahulu. Lalu bagaimana caranya ?
Buat sebuah bat script, buka notepad dan ketikkan :
C:\xampp\php\php -f C:\xampp\htdocs\smsku\autoreply.php
Simpan dengan nama daemon.bat (terserah mau apa namanya)
Jadi,jika kita klik daemon.bat, maka semua sms pada tabel inbox yang statusnya false akan ter-kirim dengan sendirinya. Tapi apakah harus jalankan daemon.bat setiap kali?
Nah, ini yang jadi pertanyaan. Banyak orang memakai trigger mysql ataupun dengan memakai konfigurasi runonreceive pada gammu. Namun ada kendalanya
Dengan Trigger :
Format SMS tidak bisa dilakukan sesuka hati
Dengan runonreceive :
Terkadang saya mencoba malah tidak jalan

Solusi saya ya bikin aplikasi untuk menjalankan daemon.bat tersebut dengan Visual Basic hahaha..
Caranya mudah kok,tapi saya tidak menjelaskan dengan detail.
Buat sebuah project Visual Basic dan Masukkan Timer dengan Interval 1000 lalu masukkan script pada Timer :

Private Sub Timer1_Timer()
Shell daemon.bat, vbHide
End Sub

Lalu compile dan buat sebuah start up dengan menitipkan shortcut pada folder :
C:\Users\NAMAUSER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup