Langsung ke konten utama

Membalas Otomatis Sms Pada Sms Gateway Dengan Gammu Dan PHP


Pada artikel auto replay SMS gateway kali ini, saya akan mencoba memaparkan cara membuat script SMS Gateway yang dapat digunakana untuk melakukan auto forwarding SMS dengan script PHP.


Apa sih auto forwarding SMS itu?? Misalkan Anda memiliki sejumlah nomor hp teman atau member yang jumlahnya banyak sekali, bisa ratusan atau ribuan yang tersimpan di database SMS center. Nah… jika Anda ingin mengirim pesan SMS ke semua nomor tersebut, Anda tinggal kirim SMS ke SMS center yang Anda buat sendiri dengan format pesan misalnya: FWD#PESAN maka otomatis pesan akan diteruskan oleh SMS center ke semua nomor hp yang ada di database.


Kalau sudah paham apa itu SMS Auto Forwarding, bagaimana cara membuatnya? Untuk membuat SMS auto forwarding ini, yang Anda butuhkan adalah PC server yang di dalamnya sudah terinstal Gammu sebagai gateway untuk SMS nya, web server (saya sarankan menggunakan AppServ). Di dalam AppServ ini sudah terdapat Apache sebagai webserver, PHP server dan juga mysql. Oya sampai lupa, untuk keperluan sms gateway ini Anda juga harus punya modem untuk pengiriman sms nya.

Adapun langkah pertama yang Anda harus lakukan untuk membuat sms auto forwarding ini adalah instalasi Gammu nya. Setelah instalasi Gammu, Anda akan mendapatkan beberapa buah tabel di database mysql seperti pada gambar berikut ini (gunakan phpmyadmin
SMS gateway auto forwarding
Di antara beberapa tabel di atas, terdapat sebuah tabel bernama ‘pbk’. Tabel ini merupakan singkatan dari ‘phonebook’ yang nantinya digunakan untuk menyimpan data nomor hp yang nantinya bisa dikirimi pesan SMS auto forwarding ini. Silakan isi beberapa data nomor hp beserta nama pemiliknya.

SMS gateway auto forwarding
Selanjutnya kita buat script PHP untuk memproses SMS auto forwarding ini. Script PHP ini nanti harus senantiasa berjalan di browser. Anda bisa menggunakan teknik auto refresh pada browser atau menggunakan teknik AJAX.

Ide pembuatan script PHP untuk memproses SMS auto forwarding ini kita harus memecah keyword FWD#PESAN terlebih dahulu. Bila diawali dengan keyword FWD maka barulah proses forwarding ini dilakukan. Selanjutnya bila keywordnya benar-benar diawali dengan FWD, maka PESAN akan dikirim ke semua nomor hp yang ada di tabel ‘pbk’. Tanda # digunakan untuk memisahkan keyword dengan pesan yang akan dikirim. Untuk memecah string dari SMS, kita bisa menggunakan function explode() di PHP.

Berikut ini adalah script PHP untuk SMS autoforwarding ini.

run.php



 
// koneksi ke database gammu
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
 
// membaca sms yang masuk dan 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 isi sms
   $sms = $data['TextDecoded'];
 
   // memecah isi sms berdasarkan karakter #
   $pecah = explode("#", $sms);
 
   // cek keywordnya apakah sama dengan 'FWD'?
   if (strtoupper($pecah[0]) == "FWD")
   {
       // jika keywordnya FWD maka lakukan proses forwarding
 
       // membaca data phonebook dari tabel 'pbk'
       $query2 = "SELECT * FROM pbk";
       $hasil2 = mysql_query($query2);
       while ($data2 = mysql_fetch_array($hasil2))
       {
         // membaca nomor hp
         $nohp = $data2['Number'];
         // membaca isi pesan yang akan diforward
         $pesan = $pecah[1];
         // proses pengiriman pesan ke setiap no hp
         $query3 = "INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES ('$nohp', '$pesan')";
         mysql_query($query3);
       }
   }
 
   // menandai sms telah diproses 
   $query2 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
   mysql_query($query2);
}
 
?>
Keterangan:

Mungkin Anda bertanya-tanya, mengapa di pengecekan keywordnya saya menggunakan strtoupper()? ya… hal ini dikarenakan cara penulisan sms bisa berbeda-beda pada besar kecilnya huruf. Oleh karena itu saya buat menjadi besar semua (kapital). Namun kapitalisasi huruf ini hanya saya berikan pada keywordnya saja, sedangkan untuk pesan yang akan diforward tidak perlu. Kapitalisasi huruf pada keyword ini penting karena di PHP penulisan huruf kecil dan besar pada suatu string itu berbeda (case sensitive). Sebagai contoh penulisan ‘FWD’ dengan ‘Fwd’ atau ‘fwd’ atau ‘fwD’ semuanya berbeda.

Nah… selanjutnya script di atas harus dijalankan terus menerus di web server. Jika secara manual, Anda musti merefresh script di atas pada browser terus menerus supaya bisa memproses SMS yang masuk. Namun hal ini tentu tidak mungkin bukan? So… kita harus membuat sistem otomatisasi supaya script di atas bisa melakukan refresh sendiri. Anda bisa menggunakan teknik auto refresh atau menggunakan AJAX.

Untuk kali ini kita mencoba menggunakan AJAX untuk menjalankan script run.php di atas secara otomatis. Oleh karena itu perlu kita buat script index.html yang di dalamnya kita sisipkan script AJAX untuk menjalankan script run.php

index.html

<html> <head> <title>SMS Auto Forwarding</title> <script type="text/javascript"> function ajax() { if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp =new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","run.php"); xmlhttp.send(); setTimeout("ajax()", 5000); } </script> </head> <body onload="ajax()"> <h1>SMS Auto Forwarding running...</h1> </body> </html>

Script AJAX di atas secara otomatis akan melakukan refresh script run.php setiap selang 5 detik (5000 milisekon). Lantas… dari kedua script di atas manakah yang nantinya akan dijalankan di browser? Anda cukup menjalankan index.html nya saja.

Mudah bukan membuatnya? script di atas dijalankan dengan sukses di Gammu 1.25.0, menggunakan modem Wavecom dan dengan browser Firefox.

©blog-wandi

Komentar

Postingan populer dari blog ini

Kode-Kode Tersembunyi Pada Opera Mini

Ternyata opera mini yang kita kenal ini memiliki kode-kode rahasia. Mungkin tidak banyak yang mengetahui ini (mungkin lho). Untuk menggunakannya kita tinggal memasukan kode rahasia opera mini ke dalam url lalu klik Go to. Tanpa basa-basi langsung saja intip kode-kodenya. 1. about :config Disini kita bisa mengatur : * Large placeholder for images * Fit text to screen * Loading timeout * Site patches * Keep styling in RSS feeds * Show feedindex * Fold linklist * Phonenumber detection * Minimum phone number leght * Use bitmap fonts for complex script Setelah mengubah pengaturannya jangan lupa untuk menyimpannya (Save) 2. server:version Untuk melihat info: * Server status * Cookies and state * Serverside preferences * Client info * Request headers 3. opera:about Menampilkan informasi tentang opera mini, seperti pihak ketiga. 4. opera:blank Menampilkan layar kosong. 5. opera:cache Melihat semua cache pada opera mini. 6. server:reset Menghapus cache...

Bocah-Bocah Yang Mendadak Terkenal di TV Karena Jago IT Ternyata "Berbohong"?

1. Pembuat salingsapa.com ( Muhammad Yahya Harlan ) Source Salingsapa.com Ralat karena pernyataan Yan Harlan (ayah Muhammad Yahya Harlan) “Memang itu dari CMS tertentu, tapi kita beli lisensinya. Dan dalam aturannya, kalau kita beli lisensinya kita diberi kebebasan untuk mencantumkan atau tidak,” pada Minggu malam 13 Februari 2011 Dalam aturan lisensi di JCow, saat ditelusuri detikINET , memang disebutkan bahwa kata-kata ‘ powered by JCow ‘ boleh dihilangkan bagi mereka yang membeli lisensi piranti lunak ini. Yan juga menambahkan, dengan dibelinya lisensi tersebut maka pembeli bebas mengkreasikan source tersebut. sumber : http://www.detikinet.com/read/2011/02/14/114531/1570726/398/hak-cipta-salingsapa-jadi-bahan-kontroversi/?i991102105 Maka tulisan saya di bawah ini jgn digubris, terimakasih Pertama saya salut dengan bocah ini, namun setelah saya lakukan view source terhadap web jejaring social miliknya itu, ternyata menggunakan engine jcow.net Pantas terasa aneh, ...

Membuat Game Java Snake HQ Dengan Netbeans

Bagi anda yang suka java atau iseng-iseng ingin membuat game ini ada game sederhana yang patut anda coba. Oke, kita mulai. Pertama-tama, kita tentukan sampai mana target rancangan ini diselesaikan. Kebetulan karena ini iseng-iseng, saya cuma berniat sampai animasi sederhana dan deteksi tepi area agar kalau ular tersebut sampai di tepi, bisa tembus di sisi lain. Ini belum sampai deteksi dabrakan dengan dinding, makanan (apel), maupun tabrakan antara kepala dan badan ular tersebut. Karena itu, class utama yang kita butuhkan hanya 2, yaitu untuk panel utama game dan ular yang akan berjalan. Class tambahan lain, akan dibahas kemudian. Kita mulai dari class ular. Sementara ini, attribut yang kita butuhkan hanya koordinat ular, arah ular menghadap, dan panjang maksimal (bisa fleksibel nantinya). Sedangkan behaviour yang bisa dilakukan ular antara lain adalah mengubah arah menghadap, mengupdate koordinat seluruh anggota badan setiap berjalan, termasuk untuk tembus ke sisi lai...