Templates by BIGtheme NET

SMS Gateway : Aplikasi Polling SMS Sederhana

Setelah beberapa minggu lalu saya belajar membuat aplikasi autoresponder sederhana dengan sms gateway, sekarang saya ingin membuat aplikasi yang sedikit lebih rumit, yaitu polling sms. Aplikasi ini masih menggunakan NowSMS sebagai SMS Gateway-nya.

Kali ini skenarionya adalah sebagai berikut : RT 2 Kelurahan XXX mengadakan acara lomba karaoke untuk memperingati acara 17-an. Pesertanya adalah remaja-remaja dari RT tersebut. Setelah melalui babak eliminasi, akhirnya ditetapkan ada 3 finalis, yaitu : Andi, Jamal, dan Ririn.

Karena tidak mau dituduh subjektif, para juri sepakat untuk melibatkan penonton dalam pemilihan juara 1,2, dan 3 melalui polling sms. Penonton diminta untuk memilih penyanyi favoritnya dengan cara, ketik PILIH (spasi) NAMA PENYANYI dan dikirim ke nomor hp 0856780xxxx, di mana hp tersebut disambungkan ke komputer yang telah diprogram untuk mengolah data sms yang masuk.

Nah, seperti apakah program yang ada dalam komputer tersebut ?

Database dan Script Php Untuk Mengolah Data SMS

Kita membutuhkan sebuah database untuk mengolah data sms yang masuk, misalnya database tersebut bernama “polling”, dengan sebuah table bernama “inbox”. Berikut ini script untuk membuat table tersebut :

CREATE TABLE IF NOT EXISTS `inbox` (
`id` int(5) NOT NULL auto_increment,
`sender` varchar(15) NOT NULL,
`pilihan` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=42 ;

Setelah database terbuat, kita membutuhkan sebuah script Php untuk memasukkan pilihan pengirim sms ke dalam database.


<?php
// konfigurasi database
// sesuaikan dengan konfigurasi Anda
function koneksi()
{
$user = "root";
$pass = "";
$db = "polling";
$host = "localhost";
$konek = mysql_connect($host, $user, $pass);
mysql_select_db($db, $konek);
}
// Ambil data dari url, yaitu url yang Anda masukkan
// pada kolom Command to execute di NowSMS
$sender = $_GET['sender'];
$pilihan = $_GET['pilihan'];
// Masukkan data ke database
koneksi();
$sql = "INSERT INTO inbox (id, sender, pilihan) VALUES ('', '$sender', '$pilihan')" ;
mysql_query($sql);
// Memberi respon (autorespon) terhadap sms yang masuk
header("Location:http://127.0.0.1:8800/?PhoneNumber=$sender&Text=Terima+kasih+telah+memilih.");
?>

Simpan script di atas dengan nama polling.php

Memberi Perintah ke SMS Gateway

Langkah berikutnya adalah memberi perintah kepada gateway (NowSMS) untuk menjalankan script polling.php yang baru saja kita buat :

  1. Jalankan NowSMS, dan buka tab 2-Way.
  2. Beri tanda centang pada Process Received SMS Message
  3. Biarkan Character Set pada posisi default, yaitu utf-8
  4. Ketikkan “PILIH” (tanpa tanda petik) pada kolom SMS Command Prefix, yang artinya hanya sms dengan kata pertama “PILIH” saja yang akan diproses
  5. Ketikkan nomor handphone penerima sms, yaitu nomor handphone yang tersambung ke komputer, pada kolom Receive Phone Number(s)
  6. Ketikkan “http://localhost/sms/polling.php?sender=@@SENDER@@&pilihan=@@SMS@@” (tanpa tanda petik) pada kolom Command to Execute
  7. Klik Add

polling-command

Melihat Hasil Polling

Setelah para finalis menampilkan kemampuan terbaik mereka, dan para penonton telah memberikan pilihannya melalui SMS, maka kini saatnya para juri memutuskan juara dari lomba karaoke tersebut.

Untuk melihat hasil polling, kita membutuhkan sebuah script lagi untuk menampilkan hasil pengolahan data SMS yang masuk. Script tersebut kira-kira sebagai berikut :

<html>
<head>
<meta http-equiv="refresh" content="5">
</head>
<body>
<?php
// konfigurasi database
// sesuaikan dengan konfigurasi Anda
function koneksi()
{
$user = "root";
$pass = "";
$db = "polling";
$host = "localhost";
$konek = mysql_connect($host, $user, $pass);
mysql_select_db($db, $konek);
}
// Ambil data dari database
// Cari total SMS yang masuk
koneksi();
$sql = "SELECT * FROM inbox";
$query = mysql_query($sql);
$totalsms = mysql_num_rows($query);
// Cari jumlah SMS per finalis
$finalis = array('Andi', 'Jamal', 'Ririn');
for($i=0;$i<=2;$i++){
$sql = "SELECT * FROM inbox WHERE pilihan='$finalis[$i]'";
$query = mysql_query($sql);
$suara[$i] = mysql_num_rows($query);
}
// menampilkan hasil polling dalam bentuk table
?>
<table border="1">
<tr>
<td align="center" width="70px">Finalis</td>
<td align="center" width="120px">Perolehan SMS</td>
<td align="center" width="100px">Prosentase</td>
</tr>
<?
for($i=0;$i<=2;$i++){
$prosentase[$i] = number_format((($suara[$i]/$totalsms)*100),2);
echo("<tr>");
echo("<td align="center">$finalis[$i]</td>");
echo("<td align="center">$suara[$i]</td>");
echo("<td align="center">$prosentase[$i]%</td>");
echo("</tr>");
}
?>
</table>
</body>
</html>

Simpan script tersebut dengan nama “hasilpolling.php”.

Jika dijalankan, script tersebut akan menampilkan hasil pengolahan data sebagai berikut :

hasilpolling

Nah, berdasarkan hasil polling inilah, akhirnya juri memutuskan, bahwa :

  • juara satu adalah Andi dengan perolehan suara 17 sms atau 54.84%
  • juara dua adalah Ririn dengan perolehan suara 8 sms atau 25.81%
  • juara tiga Jamal dengan perolehan suara 6 sms atau 19.35%

Aplikasi di atas adalah contoh aplikasi polling SMS yang sangat sederhana. Untuk membuat aplikasi polling yang lebih baik, tentulah banyak sekali kekurangan yang perlu diperbaiki dan disempurnakan.

56 comments

  1. OOT.
    Kang klo mau interaksi bareng blogger karawang coba kunjungi :
    http://go-blogkar.blogspot,com
    atau http://karawang.info

  2. Terima kasih infonya Om Guskar.
    Langsung ke TKP.

  3. Mas admin…saya udah nyoba panduan dari mas,tapi kok nggak bisa jalan ya? db nggak berisi, dan hasil polling juga tidak ber-border, apakah karena saya pake Appserv bukan Xamp, atau kalau bisa saya mohon script nya di upload dalam bentuk file php supaya tidak banyak yang bermasalah. makasih mas …saya tunggu solusi nya………….

  4. @Syawel :
    Coba koreksi lagi username dan password untuk koneksi ke MySql, kalau di Xampp secara default username untuk MySql adalah ‘root’ dan password-nya kosong, konfigurasi di server mas Syawel bisa berbeda.

    Masalah boder, harusnya ada border, saya sudah coba dengan browser IE, Opera, maupun Firefox, semua ada bordernya.

  5. Om ada dikit setting yg gak jalan di query sql saya :
    koneksi();
    $sql = “INSERT INTO inbox (id, sender, pilihan) VALUES (”, ‘$sender’, ‘$pilihan’)” ;
    mysql_query($sql);

    Saya ubah ke :

    koneksi();
    $sql = “INSERT INTO inbox VALUES (‘0’, ‘$sender’, ‘$pilihan’)” ;
    mysql_query($sql);

    Ijin copy di blog saya.

  6. @mamat :
    VALUE untuk id bukan double quotes (tanda petik dua) tapi single quote dua kali.

  7. mantap nih ulasannya bos..
    salam kenal ya

  8. Mas admin,

    untuk file hasilpooling, pooling dan data base itu disave di directory mana ?

  9. saya coba buka hasil pollingnya tapi kok di dalam tabel gak kluar hasilnya ya…

  10. @eko :
    Coba cek melalui phpmyadmin, di database sudah ada isinya belum ? Jika belum, silahkan baca comment2 di atas.

  11. saya coba cek di phpmyadmin, utk database udah ada isinya. ini saya sertakan screen capture tabelnya http://www.uploadhouse.com/viewfile.php?id=4630714

  12. mas saya mau tanya postgresql itu apakah memiliki fungsi yang sama dengan phpadmin??

  13. @ami :
    Postgresql adalah database server, fungsinya sama dg mysql

  14. Mas Admin, kasus saya sama dengan mas Eko. yaitu di data base sudah masuk,
    tapi ketika di tampilkan yang tampil hanya tulisan echo dan tabelnya saja.
    please tolong di bantu.
    terima kasih

  15. mana neeh mas admin’nya ??? mohon pencerahannya dunk… 😀

  16. @eko,luqman:
    Saya sudah cek kembali script yang saya upload, dan saya coba berhasil dengan baik (data ditampilkan dalam tabel).

    Saya belum bisa menebak masalah mas eko, dan mas luqman. Kalau saja saya punya akses fisik ke pc anda . . .

    Sebenarnya menampilkan data dlm database ke tabel adalah masalah sederhana, so saya mohon mas eko bersedia belajar sedikit masalah php.

    Banyak kok referensinya di internet.

  17. klu untuk nomor premium gmana y caranya???

  18. @joni :
    Kalau ingin mendapatkan nomor premium, harus kerjasama dg operator seluler. CMIIW

  19. bro, pengen nanya
    db saya kenapa g ada daftarnya?jadi pada tabel inbox g masuk data sender dan isi sms.
    pdhl konfigurasi servernya udah sesuai dengan konfigurasi saya.itu kenapa ya?
    mohon pencerahannya.

  20. @iksan : cek di SMSC properties. Pastikan Receive SMS Messages sudah diberi tanda centang. Kemudian cek kembali setting Anda di 2-Way (lihat bagian Memberi Perintah Kepada Gateway untuk menjalankan Script). Semoga berhasil

  21. untuk kata pilih huruf besar atau kecil itu berpengaruh gak? prefixnya

  22. nanya lg bro,
    D pengaturan smsc properties udh d centang receive message,tp te2p j g bs nrima sms.knp y?
    Di tab service baris sms received juga g ada perhtgn sms msk.tu knp y?
    Pengaturan apa yg kurg?
    Mohon pencerahannya.

  23. @syahrul : Kalau untuk prefixnya tidak pengaruh.

    @iksan : coba dilihat di tab 2-Way. Klik tombol View. Semua sms yang masuk seharusnya ada di sana.

  24. kalo pake modem telkom flash bisa kan atau modem huawei e220

  25. saya mau aplikasi nowsms litenya yang full versi dapat dimana ya ? harganya brp ?

  26. wah… mas admin, usefull banget ini…
    thx ya…

  27. mas admin,

    saya udah ikuti sesuai petunjuk disana, tapi di tab view di 2 way tidak tampil received sms? settingan sudah bener semua, bisa tolong buat capture untuk settingan mas admin sendiri, atau email ke saya.

    thanks

  28. saya kok tampil begina mana yang salah, mohon koreksinya mas :

    Warning: Division by zero in C:xampphtdocsnowsmshasilpolling.php on line 53

  29. MOHON PENCERAHANYA MAS 🙂 (tabel dah muncul tapi ada warning ) artinya apa?

    Warning: Division by zero in C:xampphtdocsnowsmshasilpolling.php on line 53

    Warning: Division by zero in C:xampphtdocsnowsmshasilpolling.php on line 53

    Warning: Division by zero in C:xampphtdocsnowsmshasilpolling.php on line 53

    Finalis Perolehan SMS Prosentase
    Andi 0 0.00%
    Jamal 0 0.00%
    Ririn 0 0.00%

  30. @Heru : Total sms tidak boleh nol. Operasi pembagian tidak dapat dilakukan dengan
    nilai pembagi nol, karena akan selalu menghasilkan error.

  31. Kode yang bagian mana neh yang harus dirubah mas ?

  32. Dear mas admin,

    thank, materi sms gateway bagus artikelnya…

    Mas, sudah aku coba sms pollingngnya, ternyata yang masuk database hanya jumlah id yang bertambah (jumlah sms yang masuk) tetapi nomer pengirim sama pilihan gak masuk database,
    mohon pencerahanya…

    udah aku coba utak atik php gak bsa jalan.. apakah dari 2-way di now sms yang gak mau excute command ya mungkin akau pake yang trial..

    mkasih

  33. apakah HPnya bisa pakai siemens c55 atau motorola l7?

  34. mas admin, untuk inboxnya udah berhasil semua nampilin nomor sender n isi smsnya tapi koq autorespondnya gak jalan ? gimanasih sebetulnya tag untuk auto respondnya ? atau emang versi trial gak bisa auto respond ? soalnya sy masih pake yg trial..

  35. tanks boss, dah berhasil. tapi ada ada pertanyaan, gimana caranya menulis di pada kolom Command to Execute. untuk kasus berikut :

    INFONOMORREKPIN

    nuhun …

  36. klo itu kan format misal reg(spasi)Nama

    nah untuk misalkan penghitungan jumlah suara yg dikirimkan misal reg(spasi)101 itu gmn y mas ?

    dan untuk misalkan format misal reg(spasi)nama(spasi)jumlah itu seperti apa php dan sms 2way nya ya?

  37. untuk mengganti no sender dengan karakter gimana ya? supaya pas terkiirm ke no handphone ada tulisnnya Startnet.
    jadi nomer handphone nya di hide,gitu…
    bisa nggak om…
    ditunggu tutorialnya ….
    selanjutnya…..
    terimakasih…..

  38. bos aq dah coba ketika aq jalankan kog autosendernya gag mw jalan

    ada pesan :

    ERROR : INVALID TELEPHONE NUMBER

    thannnkssss

  39. sama saya jga permasalahan di : ERROR : INVALID TELEPHONE NUMBER….
    pliss,, solusinya …

    tq

  40. sy butuh softwarre sms polling untuk lomba karoke di daerah sy apakah ada di jual

  41. polllingnya khan pake database lokal… gimana cara klo databasenya langsung ke hosting kita…. ??? mohon di jawab…. Email: rizki.hadifa@gmail.com

  42. @rizki : Sudah dijawab melalu YM chat malam ini.

  43. mas.. mau tanya lagi… kalo bikin pesan errornya gimana mas… misal seseorang yg sms salah format… jadi gini “PILIH BUDI” trus… orng itu salah ketik jadi gini “PILIH UDI” huruf ‘B’nya kurang.. jadi gimana ntar membalas lewat sms kalo format smsnya salah… mohon di balas mas…. Trima kasih….

  44. Mantabz,,,
    alhamdulillah,,, works 100% for me,,,
    thanx boss,,,

  45. @kadon: thanks juga atas reviewnya.

  46. kasus sama seperti rizky klo untuk mengirim format yang salah gimana ya mas?
    misal sms balasan : maaf, format yang anda ketika salah..itu di scriptny ky gimana?
    mohon pencerahan mas admin

  47. saya sudah coba script polling smsnya dan ternyata berhasil koneksi. Tapi saya ada masalah nih. Kalau saya kirim SMS dengan format PILIH Jamal, didatabase masuk untuk filed Pilihan adalah PILIH Jamal, sehingga di hasilpolling. php tidak bisa jalan . Jadi saya harus menghapus kata PILIH secara manual di phpmyadminnya baru bisa muncul di hasilpolling.php. Mohon petunjuknya sebelumnya saya katan terima kasih banyak, eh satu lagi kalau tidak auto respon salahnya dimana ya? apa salah HPnya kali’ ya?? ah saya bingung mohon petunjuknya aja lah … sukses selalu.

  48. Saya udah mengikuti langkah-langkah di atas..untuk yang sttingan auto respon..akan tetapi pas di tes…saya kirim SMS dengan format yg telah ditentukan…SMS nya tidak respon…kendalanya dmana YaCH…???????mohon pencerahannya…

  49. Pak, 2 hal yang ingin saya sampaikan:

    1. Program NowSms sekarang udah nggak gratis lagi. Saya boleh minta program yang ful-version nya pak? tolong dikirim ke email saya. Terima kasih.

    2. Pada Artikel “mengirim sms ke banyak nomor”, saya ingin membuat sebuah tombol “check all / select all”. Bagaimana caranya, agar semua nomor bisa select-all / terpilih semua dengan satu klik tombol??

    terima kasih atas bantuannya, pak. Artikel anda sangat bermanfaat 🙂

  50. mas kalo mau buat kandidat polling’a lebih dari 3 gimana ?

  51. om admin… om tolong pencerahannya dan koreksi kok jadinya begini
    Warning: Division by zero in C:xampphtdocsnowsmshasilpolling.php on line 54

  52. kok gak bisa ya? malah masuk ke pc suite,

  53. om, kalau buat hasil polling yang disimpan trus dibuka pada akhir pemilihan gimana caranya? nanti pas dibuka menunjukkan prosentase nilai polling sedikit-sedikit sampai selesai layaknya pemilihan umum. mohon pencerahannya didikandriawan@gmail.com

  54. pak,
    koq saya coba utak atik tetep ngga bisa yaaa..?
    saya kirim sms (pilih andi) tapi polling’y ngga mw bertambah,,
    mohon pencerahannya pak..:D

  55. Udah saya coba dan berhasil walau awal2 eror dan membuat saya frustasi haha…bang admin tanya kalu
    1. Format penulisan di kolom Command to Execute pada NowSMS untuk menuliskan data masuk ke kolom pada tabel di database misal kolom pilihan dan pilihan2 gmn ya??
    2. Tanya source code pada file polling.php (“INSERT INTO inbox (id, sender, pilihan) VALUES (”, ‘$sender’, ‘$pilihan’)” 😉 untuk mengakses ke banyak tabel di 1 database sekaligus gmn?? makasi…

Tulis komentarmu

%d bloggers like this: