Kamis, 16 Januari 2014

Memanfaatkan runonreceive pada Gammu untuk SMS autoreply

Sebelumnya, tutorial ini menggunakan gammu 1.27.90 versi Windows karena banyak tutorial – tutorial yang yang dibuat pada saat menggunakan gammu versi lama sehingga tidak bisa dijalankan pada saat menggunakan gammu versi yang lebih baru. Gammu memang sangat mudah digunakan dan mendukung banyak sekali fitur yang bisa dimanfaatkan, support untuk berbagai macam handphone juga sangat bagus, belum lagi lisensinya yang GPL membuat saya lebih jatuh cinta dengan gammu :)
Ada banyak pilihan ketika kita ingin membuat aplikasi SMS Gateway yang bisa autoreply. Mas Stieven Kalengkian menawarkan pendekatan dengan memanfaatkan scheduler task pada windows, sedangkan masRosihan Ari menawarkan pendekatan dengan memanfaatkan file php yang berjalan pada browser. Semuanya bisa berjalan dengan kelebihan dan kekurangannya masing – masing. Jika kita memanfaatkan scheduler taskpada windows, maka pengecekan hanya bisa dilakukan untuk waktu yang telah diset. Apabila kita menambahkan file batch pada scheduler tiap menit rasanya itu sangat kurang efektif karena tidak real time dan itu juga menambah beban pada sisi server. Di sisi lain apabila kita memanfaatkan browser yang akan menjalankan file php dengan refresh per beberapa detik itu juga sangat memberatkan dari sisi browser, belum lagi banyak memori yang dihabiskan pada browser. Hal – hal seperti menjadi isu tersendiri bukan??
Saya mencoba untuk menawarkan pendekatan yang lebih baik lagi, yaitu dengan memanfaatkan fiturrunonreceive pada file smsdrc yang ada pada gammu. Bagaimana cara kerjanya?? Oke, saya asumsikan filegammurc sudah dikonfigurasi. Selanjutnya kita buka file smsdrc, maka kita akan menemukan baris berikut :
1
2
# Script to be executed when new message has been received
#runonreceive = /some/script
Kita aktifkan opsi runonreceive tersebut kita isikan dengan sebuah batch file
1
2
# Script to be executed when new message has been received
runonreceive = D:/exec.bat #misalnya diisi seperti ini
Selanjutnya kita tinggal membuat file batch yang akan mengeksekusi file php yang akan membuat autoreply. Kita bisa menggunakan php CLI dalam file exec.bat tersebut.
1
2
# Isi file exec.bat
C:\wamp\php\php -f C:\wamp\www\proses.php
Oke, batch file sudah selesai dibuat dan konfigurasi smsdrc sudah selesai. Harusnya autoreply sudah bisa berjalan, sekarang kita hanya perlu membuat file proses.php yang akan mengirimkan balasan otomatis ketika ada sms masuk.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
# File proses.php digunakan untuk mengirimkan reply ketika ada sms masuk
# Ini merupakan file POC, bisa disesuaikan sesuai kebutuhan
$sql = "SELECT ID, SenderNumber, TextDecoded FROM inbox WHERE processed = 'false'";
$qry = mysql_query($sql) or die(mysql_error());
 
while ($arr = mysql_fetch_array($qry)) {
       mysql_query("INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES ('".$arr['SenderNumber']."', 'Halo, ini balasan sms anda.')") or die(mysql_error());
 
       mysql_query("UPDATE inbox SET processed='true' WHERE ID='".$arr['ID']."'");
}
?>
Setelah semuanya siap, kita tinggal jalankan saja servis Gammu secara default lewat perintah berikut :
1
gammu-smsd -c smsdrc
Lalu kita coba mengirim SMS, apa yang terjadi selanjutnya??? Jika ternyata SMS anda dibalas berarti anda sukses menerapkan runonreceive pada Gammu. Bila tidak?? silakan ulangi lagi tutorial diatas.
Semoga bermanfaat

Tidak ada komentar:

Posting Komentar