Web-SMS application with Gammu (Part.2)
Pada share terdahulu mengenai Gammu, kita bicara tentang bagaimana gammu menjadi sarana interaksi antara modem GSM dengan PC. Bila anda telah mencobanya dan berhasil, ini telah menjadi modal anda untuk membangun sebuah aplikasi web berbasis SMS. Contohnya saja, forum Web dengan SMS, Polling berbasis SMS, dll. Namun aplikasi pada share sebelumnya belum bisa menyelesaikan bagaimana membuat sebuah sistem yang interaktif dengan SMS. Artinya disini memungkinkan adanya sebuah automatic replay dari server, setelah adanya kiriman SMS dari user.
Saya telah membaca beberapa tutorial dan web tetangga ttg autoreply gammu, pada hal ini gammu memiliki 3 cara untuk menghandle proses autoreply.
- Dengan menggunakan skrip library gammu itu sendiri. (yang ini belum ditemukan caranya - mohon koreksi)
- Dengan menggunakan cron (linux) atau schedule task (windows)
- Dengan menggunakan trigger database.
Pada cara pertama (ke-1) sebenarnya saya masih mencari-cari, skrip eksekusi atau skrip autoreply dari library gammu sendiri. Jadi saya belum menemukan cara pertama (mohon koreksi , ada atau tidak?)
Pada cara ke 2 Sebenarnya ini lebih sedikit efisien di linux. Cara ini yaitu membuat sebuah job management yang menjalankan perintah untuk mengeksekusi file PHP yang mengecek adanya SMS baru yang masuk. Setelah proses pengecekan dengan cron dan hasilnya true (ada), cron menjalankan skrip kedua yang memberi perintah untuk melakukan insert data ke dalam tabel Outbox (ingat: sejatinya untuk mengirim SMS dengan Gammu, kita hanya melakukan insert data ke dalam tabel outbox.). Begitu seterusnya setiap detik, menit, jam. System OS yang mengecek keberadaan SMS baru di tabel inbox. Namun ini agak sulit dengan OS windows, karena sepengetahuan saya, windows memiliki task management yang hanya melakukan job dengan jangka waktu perjam-jaman. Bukankan ini tidaklah mungkin untuk sebuah web interaktif?, karena sistem pengecekan dibutuhkan dalam jangka DETIK-DETIKAN! . Adakah cara untuk membuat task management di windows dengan jangka detik-detikan? - mohon pencerahan!
Nah.. cara yang ketiga adalah cara yang pernah saya gunakan. Dan saya katakan disini cara yang ketiga merupakan cara yang paling ok yang telah saya alami. Yaitu kita membuat sebuah skrip Trigger di database. Apakah itu trigger? untuk yang satu ini silahkan baca di sini. Pada share selanjutnya mudah2an saya akan kupas masalah trigger ini. Namun dengan cara ini kita bicara tentang teknologi database. MySQL baru memiliki fungsi trigger pada versi 5.0.2 atau di atasnya. Jika bisa anda menggunakan postgresql, anda tinggal menggunakan postgresql, karena postgresql telah memiliki fungsi trigger sejak versi-versi oldnya. (CMIIW)
Kasus :
Ada sebuah sistem Request SMS untuk meminta nilai mata kuliah mahasiswa. Diasumsikan kita memiliki tabel “nilai_mahasiswa” yang berisi data nilai mahasiswa beserta ID mahasiswa yang di relasikan dengan tabel “mahasiswa”. Kedua tabel ini berada dalam satu database “SMSD” (-database gammu).
Flow :
1. buatlah sebuah standar format sending SMS by client (-untuk mahasiswa), misal : “info#idmahasiswa#matakuliah”. Format ini di gunakan mahasiswa untuk meminta info nilai mahasiswa dengan id tertentu dan mata kuliah tertentu. Pada kasus ini, anda boleh membuat tabel “mata_kuliah” yang di relasikan kodenya ke tabel “nilai_mahasiswa”. Sehingga misalnya kita memiliki format seperti ini :
“info#99511017#kalkulus1″
2. Buat trigger pada konsol mysql/postgresql dengan skrip spt ini:
DELIMITER //
CREATE TRIGGER infonilai AFTER INSERT ON inbox
FOR EACH ROW BEGIN
insert into outbox values ('','','','',NEW.SenderNumber,'Default_No_Compression','',
'-1',(SELECT nilai_value FROM nilai_mahasiswa
WHERE nilai_type=SUBSTRING(NEW.TextDecoded,6,4) AND
student_id=SUBSTRING(NEW.TextDecoded,11)), '','false','-1','','','','');
END;
//DELIMITER ;
skrip Trigger diatas yang bertugas menjalankan proses insert kedalam tabel outbox, setelah di ketahui ada sebuah data masuk ke dalam tabel inbox. Tentunya format SMS akan dicek terlebih dahulu agar ketika ada kesalahan format maka pesan yang terkirim merupakan pesan “salah format”. Namun jika anda tidak memberikan skrip pengecekan di kalang Begin .. End; secara default apabila terjadi kesalahan format SMS maka server tidak akan input data ke dalam tabel outbox. Itu artinya tidak ada pengiriman SMS.
Buatlah format SMS se efektif mungkin, nantinya di trigger anda akan memecah-mecah format SMS itu dengan fungsi substring di mysql.
3. Silahkan anda cermati dan tambahkan ide pada skrip trigger diatas. Semoga konsep yang pernah saya jalani ini bisa berguna buat anda. Apabila anda membutuhkan program jadi mengenai SMS application yang berkenaan dengan sistem management kampus silahkan hubungi saya. Melalui YM “mas.steven@yahoo.com” atau email ke miftahsteven@gmail.com
Terima kasih
Semoga membantu, mohon koreksi apabila ada kesalahan.
Bertanya lebih jauh?? Ke forum gammu nya freaksides aja disini > http://www.freaksides.com/forum
Tags: Application, autoreply, Gammu, PHP, SMSPosted in Share
Freaksides: Sisi-sisi yang terbuang. Hal-hal yang sudah tidak terpakai tidak selamanya sampah. Mungkin masih bermanfaat. Banyak hal yang anda dapat di sini, dan memang tidak begitu penting. Tapi semua yang terbuang disini bisa jadi bermanfaat buat anda. Di sisi-sisi yang terbuang inilah saya ingin berbagi.


miftahsteven May 26th, 2008 at 9:08 am
gammu akan membuat semua data yang ada di dalam ponsel/ modem GSM “tertarik” ke dalam database mysql. Jadi semua data dalam modem akan terhapus apabila sudah terkoneksi dengan gammu. Dan kita tinggal mengolahnya (mengedit,menghapus) di database mysql.
semoga membantu