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=10 ;

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”;
   $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 sms gateway

 

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”;
   $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 :

hasil polling sms gateway 

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.

Kalau mau nyoba aplikasi polling sms ini silahkan download script polling di sini.

Related posts:

  1. Sms Gateway : Membuat Auto Responder Sederhana (Bag. 1)
  2. Sms Gateway : Membuat Auto Responder Sederhana (Bag. 2)
  3. Aplikasi Informasi Absensi Siswa Dengan SMS Gateway
  4. SMS Gateway, Alexa Rank, dan Wordpress 2.8.6
  5. Mengirim SMS ke Banyak Nomor Sekaligus (Bulk SMS) Dengan NowSMS

37 Comments

  1. guskar says:

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

  2. Admin says:

    Terima kasih infonya Om Guskar.
    Langsung ke TKP.

  3. Syawel says:

    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. Admin says:

    @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.

    Saya sudah upload, silahkan download di http://bintangweb.com/download/polling.zip

  5. mamat says:

    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. Admin says:

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

  7. Deni says:

    mantap nih ulasannya bos..
    salam kenal ya

  8. [...] Sms Gateway : Membuat Autoresponder Sederhana (Bag. 1) Sms Gateway : Membuat Autoresponder Sederhana (Bag. 2) Sms Gateway : Aplikasi Polling Sms Sederhana [...]

  9. harnes says:

    Mas admin,

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

  10. eko says:

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

  11. Admin says:

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

  12. eko says:

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

  13. ami says:

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

  14. Admin says:

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

  15. luqman says:

    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

  16. eko says:

    mana neeh mas admin’nya ??? mohon pencerahannya dunk… :D

  17. Admin says:

    @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.

  18. joni says:

    klu untuk nomor premium gmana y caranya???

  19. Admin says:

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

  20. iksan says:

    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.

  21. Admin says:

    @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

  22. syahrul says:

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

  23. iksan says:

    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.

  24. Admin says:

    @syahrul : Kalau untuk prefixnya tidak pengaruh.

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

  25. syahrul says:

    kalo pake modem telkom flash bisa kan atau modem huawei e220

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

  27. andrie says:

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

  28. Dantha says:

    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

  29. Heru Bagya says:

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

    Warning: Division by zero in C:\xampp\htdocs\nowsms\hasilpolling.php on line 53

  30. Heru Bagya says:

    MOHON PENCERAHANYA MAS :) (tabel dah muncul tapi ada warning ) artinya apa?

    Warning: Division by zero in C:\xampp\htdocs\nowsms\hasilpolling.php on line 53

    Warning: Division by zero in C:\xampp\htdocs\nowsms\hasilpolling.php on line 53

    Warning: Division by zero in C:\xampp\htdocs\nowsms\hasilpolling.php on line 53

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

  31. Admin says:

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

  32. Heru Bagya says:

    Kode yang bagian mana neh yang harus dirubah mas ?

  33. Ari says:

    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

  34. deydi says:

    apakah HPnya bisa pakai siemens c55 atau motorola l7?

  35. roelee says:

    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..

  36. aagun2006 says:

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

    INFONOMORREKPIN

    nuhun …

Anda boleh berkomentar di sini. 100% gratis.