agus syafiudin wrote:

Bisa sharing ilmu cara bikin sms gateway nggak ke milis ini ?


Agus Syafiudin
"Knowledge is Free"

Mas Agus, server untuk service sms gateway itu sebenarnya sudah ada
seperti gnooki, sms server tool dll, saya cuma install dan
mengkonfigurasikan saja ditambah dg aplikasi buatan sendiri bash
script yang isinya campuran sed, grep, awk, cut, perintah mysql, dll
(kayak gado-gado). Pemrogramming saya di linux cuman sebatas bash
saja, tahu sedikit perl (pernah membuat aplikasi untuk billing) dan pernah compile C source code hehe... Setelah itu tancap gas ...

Baiklah saya coba gambarkan langkah-langkah yg perlu untuk membangun
aplikasi dg SMS Gateway:

1. Install Sistem Operasi yang dibutuhkan, sangat dianjurkan pakai
   linux.

2. Device yang diperlukan untuk SMS Gateway, untuk aplikasi yg berat
   seperti pooling center kayak AFI dan pilkada ini mutlak memakai
   modem GSM, kalau trafik request dari customer tidak terlalu besar,
   bisa menggunakan handset murmer seperti siemens/nokia. Cuma kudu
   mengatur bagaimana agar transmisi power supply ke handset tsb tdk
   akan menyebabkan handset menjadi panas dan akibatnya menjadi hang
   atau bahkan rusak. Di milis ini bahkan ada member yg meng-hack
   power supply handset untuk secara periodik turn on/off power secara
   otomatis.

   Selain itu mau tidak mau harus bisa berkomunasi dg modem lewat
   minicom, diperlukan untuk setting awal dan jika ada masalah.
   Bagi yg pernah ngetik atz, atdt tentu paham dg ini.

3. Untuk service SMS Gateway ini banyak tersedia di internet, yang
   saya gunakan sendiri adalah "SMS Server Tools" , linknya
      http://smstools.meinemullemaus.de/

4. Service SMS Gateway atau disingkat 'smsd' sesuai dg nama daemonnya
   adalah service yg menghandle modem gsm. SMSD ini secara periodik
   akan cek apakah ada SMS masuk atau mengirimkan SMS via modem GSM ini.
   Selengkapnya bisa Bapak baca di link di atas.

5. SMSD ini punya eventhandler sendiri, jika tidak dikonfigurasikan
   atau singkatnya jika kita tidak buat script eventhandler sendiri
   atau aplikasi sms gateway, maka setiap SMS masuk tidak akan
   diperlakukan khusus, langsung  diterima dan disimpan di
   /var/spool/sms/incoming. Cukup dg konfigurasi minimal smsd.conf.
   Kalau ndak salah beberapa hari yl saya tulis konfigurasinya
   di milis ini juga.

6. Untuk membuat aplikasi ini secara teoritis sebenarnya mudah saja.
   Kita tinggal menangkap isi FROM (pengirim SMS yang berupa nomor
   hp) dan TEXT (isi pesan/SMS). Di source code smsd ini ada contoh-
   contoh untuk menangkap isi FROM dan TEXT. Bergerak dari sini,
   kita bisa buat aplikasi untuk menangani setiap SMS yg masuk.
   Jika FROM dari nomor khusus maka aplikasinya akan menjalankan apa?
   Jika TEXT berisi string tertentu maka aplikasinya akan bertindak apa?

   Seperti dalam aplikasi sms gateway untuk pilkada ini, jika nomornya
   teridentifikasi sebagai nomornya pemantau pemilu maka biarkan dia
   lewat setelah itu kita parse TEXT-nya, jika isinya macam begini:
      1*1*13*100*12
   maka itu berarti ada data masukan berupa hasil perhitungan suara.
   Input di atas dijabarkan sebagai no id desa, no tps, suara kandidat
   cabup 1, cabup 2 dan cabup 3. Di sini kita mainan dg tool linux
   macam grep, sed, atau cut agar data input benar-benar bersih dr
   gangguan dan setidaknya kita bisa mempredisikan agar tdk terjadi
   pengulangan data yg sama atau bisa membuat semacam ralat jika data
   sebelumnya terjadi kekeliruan. Pokoknya membuat yg makai enak
   dan yg membuat aplikasi enak juga (krn tdk dikomplain hehehe).
   Tapi tetap saja yg makai aplikasi tdk enak, kenapa ? Karena harus
   kirim entri data sebanyak jumlah desa x jumlah tps, gempor tuh
   jari hehehe ...

   kemudian jika nomornya tdk teridentifikasi atau datang dr publik,
   lantas kita parsing isi TEXT, dia request apa ? Kalau isinya
   pilkada atau PILKADA atau kombinasi huruf yg berbunyi pilkada
   maka segera lakukan pelayanan di luar itu biarkan saja lewat ...

   Oya selain itu setidaknya harus paham dg database setidaknya yg
   ringan kita pakai MYSQL. Apakah jika ada TEXT yg masuk langsung
   kita feed-kan ke MYSQL ? Tentu saja tidak, TEXT atau SMS yg masuk
   harus di-parsing dulu, dibersihkan dari karakter yg tidak perlu,
   kemudian dibaca apakah mengandung instruksi atau permintaan tertentu.
   Jika ada kekeliruan segera kirim pesan peringatan (via SMS tentunya)
   ke user dalam hal ini pemantau pemilu.

   Sebagai contoh nyata berikut ini saya kutip isi aplikasi SMS Gateway,
   untuk yg sederhana adalah bagian yg melayani request dr masyarakat
   mengenai hasil perhitungan suara total pilkada.

   - Bagian yang menangkap data FROM dan TEXT

     FROM=`formail -zx From: < $2 | sed 's/"//g'`
     TEXT=`formail -I "" < $2 | awk 'NR==2 { print $0 }'`

     Nah, kalo ada yg bertanya apa itu paramater $2 ? Saya kutip saja
     dari pernyataan pembuatnya:

     # This is an example how to use an eventhandler with smsd.
     # $1 is the type of the event wich can be SENT, RECEIVED,
     #    FAILED or REPORT.
     # $2 is the filename of the sms.
     # $3 is the message id. Only used for SENT messages with status
     #    report.

   - Bagian yang memparse data TEXT

     # Then hp number is from local people atau publik
     # Check if SM contain 'pilkada' atau sembarang yg berbunyi pilkada
     TEXTT=`echo $TEXT | sed -e 's/[\t ]//g'`
     if echo $TEXTT | grep -qi "^pilkada$"
     then
       # Masyarakat dapat menerima 5 SMS per nomor HP
       # disini dikasih jatah 5 SMS per hari
       JATAHSM=`cat /usr/local/bin/JATAHSM`
       # First cek if this number can still receive sm
       sumsent=`mysql --skip-column-names $SQL_ARGS "select count(*) \
                from sms_log where receiver='$FROM' and type='SENT';"`
       sisa=`expr $JATAHSM - $sumsent`
       if [ "$sisa" -gt 0 ]
       then
         # Fungsi untuk menghitung suara total pilkada dan beri info
         # ke nomor hp ybs bahwa sisa jatah SMS tinggal berapa
         HitSuaraTotSM "$sisa"
         # Fungsi untuk kirim SMS ke nomor HP
         SendSM "$FROM" "$SM"
       exit
     fi

   - Fungsi yg berfungsi untuk kirim SMS sebenarnya sederhana saja:

     SendSM()
     {
       #$1 = Receipient
       #$2 = SM
       FILE=`mktemp /var/spool/sms/outgoing/send_XXXXXX`
       echo -e "To: $1\n\n$2" > $FILE
      }

8. Di situs http://smstools.meinemullemaus.de/ ada ebook lengkap
   mengenai bagaimana cara membuat aplikasi sms gateway, diterangkan
   mulai dari dasar sampai advanced, seperti pengenalan tool-tool
   di linux awk, sed, grep, cut, bahkan mysql dan php juga diajarkan.
   Sayang ebook-nya tidak gratis. Tapi sangat dianjurkan untuk mereka
   yg belum memahami tool-tool yg ada di linux seperti yg saya sebutkan
   di atas. Bisa dilihat daftar isinya di link di atas.

Karena masih pertama kali buat, jadi aplikasi sms gateway untuk pilkada
ini sangat sederhana sekali, jangan dibandingkan dg produk komersial spt
eSMS (?), bagi saya yg penting berfungsi :-D, kata Mao "tdk mengapa kucing berbulu putih atau hitam asal bisa menangkap tikus !"


Selamat mencoba.

Salam,

Arief Yudhawarman




--
Unsubscribe: kirim email kosong ke [EMAIL PROTECTED]
Arsip, FAQ, dan info milis di http://linux.or.id/milis
Tidak bisa posting? Baca:
http://linux.or.id/problemmilis
http://linux.or.id/tatatertibmilis

Reply via email to