Sabtu, 02 Mei 2009

Membuat SMS Polling Sederhana

Saat ini, ada banyak sekali acara-acara di TV yang memanfaatkan sistem polling melalui SMS. Selain karena kepopuleran ponsel yang tidak perlu diragukan lagi, program ini juga mudah dan dapat dilakukan tanpa perlu mengkuatirkan jarak.

Biasanya, dalam suatu lomba atau audisi menyanyi, penonton diminta memilih bintang idolanya dengan cara mengirimkan SMS. Contoh format SMS-nya kira-kira begini: IDOL [spasi] PCPLUS kirim ke 9788. Ketika diterima, SMS ini akan diseleksi dulu formatnya untuk mengetahui apakah ada yang salah atau tidak. Jika formatnya benar, barulah ia ditampung ke dalam polling dengan memanfaatkan teknologi SMS Gateway.

Nah, kita akan sedikit mempelajari bagaimana cara membuat polling SMS semacam ini. Bedanya, pesan singkat tersebut tidak dikirimkan ke nomor premium (seperti 9788, 5454, atau lainnya), tetapi ke nomor GSM biasa.

Mengenal SMS Gateway
SMS Gateway merupakan pintu gerbang atau jalur bagi penyebaran informasi dengan menggunakan SMS. Dengannya, Anda dapat menyebarkan pesan ke banyak nomor sekaligus secara otomatis dan cepat. Dengan menggunakan program tambahan yang dapat dibuat sendiri, si pengirim pesan dapat lebih fleksibel dalam mengirim/menerima SMS sesuai dengan aturan yang ditetapkan, seperti sistem untuk polling misalnya.

Pakai Gammu
Gammu merupakan software SMS gateway yang bersifat open source dan cukup ternama. Penggunaannya juga mudah karena kompatibel dengan OS Windows. Pun perangkat modem/ponsel GSM yang didukungnya cukup banyak, mulai dari Nokia, Siemens, Sony Ericsson, dan lain-lain. Database standar yang digunakan Gammu adalah MySQL. Untuk lebih mengenal software ini, tengok saja situs resminya di http://www.gammu.org/.

Langkah-langkah
Kebutuhan hardware
• PC dengan sistem operasi Windows XP.
• Device, dapat berupa ponsel atau modem GSM (PCplus menggunakan Nokia 3200).
• Inframerah sebagai koneksi (dapat diganti dengan Bluetooth, kabel DKU-5, atau lainnya).

Catatan:
Untuk mengetahui tipe-tipe ponsel yang didukung oleh Gammu, silakan kunjungi http://cihar.com/gammu/phonedb/.

Unduh
1. Unduh Gammu di situs http://dl.cihar.com/gammu/releases/windows/]. Kebetulan, PCplus menggunakan Gammu versi 1.21.90 untuk Windows. Agar lebih cepat, silakan download file yang bertipe archive (format.zip) yakni Gammu-1.21.90-Windows.zip.

2. Unduh AppServ di http://www.appservnetwork.com/ yang berisi paket Apache webserver, PHP, dan MySQL.

Instalasi

3. Pertama-tama instal AppServ terlebih dahulu dengan cara:
• Pilih direktori root.
• Masukkan password untuk MySQL (jangan sampai lupa).

4. Lakukan ekstraksi terlebih dahulu pada file Gammu-1.21.90-Windows.zip ke suatu direktori.
Pada direktori [Gammu-1.21.90-Windows-share-doc-gammu-examples-config] terdapat 3 file yang harus diperhatikan:
• gammurc (untuk mengatur koneksi device)
• smsdrc (mengatur koneksi database)
• mysql.sql (database Gammu)

Konfigurasi Database
5. Buka browser, masuk ke phpMyadmin, lalu ketikkan [http://localhost/phpmyadmin]. Akan muncul pop-up Windows berisi kolom otentifikasi MySQL. Di sana silakan isikan:
• username : root
• password : (isi sesuai dengan password MySQL yang Anda masukkan saat instalasi AppServ)

6. Buat database bernama "smsd" dengan mengisikan langsung pada field dan klik .

7. Pilih database 'smsd' (dapat dipilih pada dropdown di sebelah kiri).

8. Buka file mysql.sql (lihat nomor 4) dengan Wordpad. Kopi semuanya.

9. Pilih tab , kemudian paste isi file "mysql.sql" yang telah dikopi ke kolom SQL query. Kemudian klik . Nah, kini database standar Gammu telah dibuat dan telah terisi tabel/data bawaan Gammu.

10. Dengan cara yang sama dengan nomor 6, buat database baru bernama "polling".

11. Kemudian buat tabel pada database 'polling' dengan nama "data_polling", dan kopi baris SQL berikut:
CREATE TABLE `data_polling` (
`pilihan` varchar(25) NOT NULL,
`vote` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- Data pilihan voting
INSERT INTO `data_polling` VALUES ('glenn', 0);
INSERT INTO `data_polling` VALUES ('afghan', 0);
INSERT INTO `data_polling` VALUES ('rossa', 0);
INSERT INTO `data_polling` VALUES ('krisdayanti', 0);

12. Pilih tab dan paste baris SQL di atas. Setelah itu, klik .

13. Buat sebuah trigger pada database 'smsd' (trigger merupakan script SQL untuk memicu fungsi tertentu dalam dabase). Caranya:
• Buka "MySQL Command Line Client", Pilih : Start > All Programs > AppServ > 'MySQL Command Line Client'
• Isikan password MySQL
• Copy baris trigger berikut, kemudian paste di mysql command prompt sampai muncul tulisan 'Query OK, 0 rows affected'


**********************trigger*************************
delimiter $
create trigger
smsd.sms
AFTER
INSERT
on
smsd.inbox
for each row BEGIN
DECLARE smsx,smsz,smsmasuk varchar(200);
DECLARE format,pilihansms,no_pengirim varchar(200);
DECLARE error,x,jmlvote int;

set smsz=new.TextDecoded;
select ltrim(smsz) into smsx;
select rtrim(smsx) into smsmasuk;
set no_pengirim=new.SenderNumber;
select substring_index(smsmasuk,' ',1) into format;
select substring(smsmasuk,6) into pilihansms;
select count(pilihan) from polling.data_polling
where pilihan=pilihansms into x;
select vote from polling.data_polling
where pilihan=pilihansms into jmlvote;
set jmlvote=jmlvote+1;
set error=0;

if format='idol' and x>0 then
update polling.data_polling set vote=jmlvote where pilihan=pilihansms;
else
set error=1;
end if;

if error=1 then
insert into smsd.outbox values ('', '', '', NULL, no_pengirim, 'Default_No_Compression', NULL, -1, 'Maaf,format yang anda masukkan salah. Silahkan kirim ulang','', 'false',-1, '', '', '', '');
end if;

if error=0 then
insert into smsd.outbox values ('', '', '', NULL, no_pengirim, 'Default_No_Compression', NULL, -1, 'Terimakasih,pilihan anda telah kami tampung','', 'false',-1, '', '', '', '');
end if;

END;
$
**********************trigger*************************

14. Buka file smsdrc dengan Wordpad pada direktori Gammu (lihat nomor 4), dan edit bagian :
# ----------------- SETTINGS FOR --smsd MYSQL or --smsd PGSQL -------------------
user = root [ EDIT, isi dengan root ]
password = root [ EDIT, isi dengan password MySQL ]
pc = localhost
# pc can also contain port or socket path after colon (eg. localhost:/path/to/socket)
database = smsd [ EDIT, isi dengan nama database MySQL yaitu smsd ]
# when you send sms from some SMSC, you can have Delivery/Failed Delivery
# Reports from other SMSC number. You can set here number of this "buggy"
# SMSC used by you and Gammu will not check it's number during assigning
# reports to sent sms
#skipsmscnumber = +48602123456
# -------------------------------------------------------------------------------

Konfigurasi Device
15. Buka file gammurc dengan Wordpad pada direktori Gammu (lihat nomor 4). Kebetulan, PCplus menggunakan HP Nokia 3200 dan inframerah sebagai koneksinya. Edit bagian:
[gammu]
port = irda: [ EDIT, isi sesuai dengan port device yang digunakan ]
;model = 6110
connection = irdaphonet [ EDIT, isi sesuai dengan connection device yang digunakan ]
;synchronizetime = yes
;logfile = gammulog
;logformat = textall
;use_locking = yes
;gammuloc = locfile
;startinfo = yes
;gammucoding = utf8
;usephonedb = yes

Catatan:
Untuk mengetahui 'connection' dari macam-macam tipe HP, kunjungi http://cihar.com/gammu/phonedb/.

16. Sekarang, kopikan file gammurc dan smsdrc ke direktori di mana file gammu.exe berada, yaitu pada : [Gammu-1.21.90-Windows-bin-].

17. Lakukan tes koneksi device dengan gammu:
• Agar lebih mudah, kopikan file cmd.exe di [C:-WINDOWS-system32] ke direktori [Gammu-1.21.90-Windows-bin-].
• Jalankan/klik-ganda file cmd.exe yang telah dikopi ke direktori gammu.
• Ketik: gammu --identify (jika berhasil, akan muncul spesifikasi HP seperti nomor IMEI, manufaktur, model, dan sebagainya).

Uji Coba
18. Aktifkan service gammu, masih pada command prompt, lalu ketik: gammu --smsd MYSQL smsdrc. Setelah service berjalan, semua SMS inbox di ponsel kita akan tersedot ke database MySQL. Kita juga sudah dapat mengirim dan menerima SMS
melalui gammu.

19. Nah, sekarang coba kirimkan SMS ke nomor GSM yang dipakai dengan format : IDOL[spasi][NAMA IDOLA]. Contoh : IDOL ROSSA kirim ke 0856483...
• Jika format salah atau pilihan voting tidak ada, kita akan menerima pesan otomatis:
"Maaf,format yang anda masukkan salah. Silakan kirim ulang"
• Jika format benar atau pilihan voting ada, SMS akan ditampung ke database dan kita akan menerima pesan otomatis:
"Terimakasih,pilihan anda telah kami tampung"

20. Data hasil polling dapat dilihat langsung di database 'polling' pada tabel 'data_polling' :
• Buka kembali phpMyadmin, pilih database 'polling', lalu klik tabel 'data_polling'.
• Pilih tab 'Browse', record dari tabel akan terlihat berikut pilihan dan jumlah vote-nya.

21. Agar tampak lebih bagus, buat file lihatvote.php untuk melihat presentasi voting dan letakkan pada direktori root webserver [-AppServ-www-]. Berikut isi file 'lihatvote.php':
**********************lihatvote.php*************************


Test Polling










$mysql_host = "localhost";
$mysql_database = "polling";
$mysql_user = "root";
$mysql_password = "root";
$dblink=mysql_connect($mysql_host,$mysql_user,$mysql_password);
mysql_select_db($mysql_database,$dblink)
$qsum="select sum(vote) from data_polling";
$execsum=mysql_query($qsum);
$dsum=mysql_fetch_row($execsum);
$totvote=$dsum[0];
$qvote="select * from data_polling";
$execvote=mysql_query($qvote);
while($dvote=mysql_fetch_row($execvote)){
$vote=$dvote[1];
$precent=round(($vote/$totvote)*100,2);
echo"";
echo"";
}
?>
DATA POLLING SEMENTARA
$dvote[0]
$precent %



**********************lihatvote.php*************************

22. Jalankan script php [http://localhost/lihatvote.php]. Halaman akan di-update secara otomatis setiap 30 detik. Data polling sementara akan tampil via web.

sumber: PCplus

0 komentar:

Posting Komentar