Catatan Akhir Liburan, part 2 : Bermain-main dengan SMS

SMS alias Short Message Service, sebuah teknologi yang luar biasa, sederhana , singkat, dan universal(sebagian besar pengguna ponsel tau cara menggunakannya, bahkan anak kecil pun ngerti), saking populernya, bahkan sampe ada lagunya.. Bang.. SMS siapa ini bang.. well.. sangat menarik, meski terkadang aku begitu kesal karena tarif SMS di negri ini begitu mahalnya(dibanding akses data gprs) serta karena gara-gara terbatas hingga 160 karakter pada seenaknya bikin singkatan yang ga jelas. Tetapi, apapun itu, SMS memiliki beberapa kelebihan, diantaranya :
– sederhana, hanya berupa plain text (meski generasa WAP Push SMS lebih dari sekedar plain text)
– dapat bekerja dengan baik pada jaringan yang unreliable (SMS bakal nyampe kapanpun tujuan siap menerima)
– universal, alias hampir semua pengguna ponsel bisa make, baik mengirim maupun menerima

Kelebihan tersebut, ternyata membuat banyak orang, terutama penyedia layanan konten alias CP(Content Provider) memanfaatkan tekonologi SMS untuk memberikan layanan informasi(atau.. bisa dibilang sampah), yang intinya sebenarnya adalah buat cari duit sebanyak-banyaknya dengan membodohi masyarakat yang sudah bodoh (dasar bangsa kita ini emang ga karuan, bangsa sendiri juga dikerjain). Ok, back to the topic, ini bukan mengenai para CP yang nakal , lagu tentang SMS maupun kebodohan bangsa kita, namun mengenai salah satu project liburanku.. yaitu sebuah SMS Gateway
Meski libur panjang, bukan berarti tiap harinya seperti hari-hari liburku sebelumnya, intinya aku mendapatkan sebuah pekerjaan(ngantor).. meski kalo dilihat dari segi aktifitas dan reward-nya, lebih cocok dibilang experiment (beberapa rekan kerja seruangan tipe pekerjaannya juga semacam experiment). 6 Minggu pertama, aku mendapat tugas untuk berexperiment dengan teknologi SMS, yaitu membuat sebuah SMS Gateway, seperti apa itu? Gampangannya SMS Gateway itu sebuah aplikasi yang bertugas mengrusi SMS keluar masuk dengan suatu aturan tertentu, sehingga kita bisa mengirim pesan berupa “REG …” dan mendapat balasan SMS tertentu ataupun tidak tentu (alias banjir SMS ga jelas)

Berhubung pengembangan aplikasi mobile di tempatku termasuk dalam roadmap yang memiliki prioritas rendah(karena tergantung dengan project yang lainnya, yang juga belum kelar), maka arah implementasinya belum jelas. Karena itu aku harus memutar otak, aku harus bisa merancang sebuah sistem SMS Gateway yang sefleksibel mungkin, yang bisa diimplementasikan untuk berbagai masalah, termasuk seperti yang digunakan CP untuk meraup uang. Akhirnya aku membayangkan sebuah sistem yang tidak hanya bisa menjawab SMS kita secara otomatis, atau mengirimi SMS kepada kita secara acak dan membabi buta. Lebih dari itu, aku membayangkan sebuah aplikasi yang bisa mengirimkan pesan ketika ada e-mail baru masuk dengan suatu pattern tertentu (misal judulnya mengandung kata2 !!PENTING!!), atau mengirimkan pesan kalau ada salah satu server yang down alias bermasalah.

Sebelum berurusan dengan masalah logic, aku harus menemukan cara untuk berkomunikasi dengan ponsel dulu. Sebagai penganut paham ‘don’t reinvent the wheel’ dan pecinta open source (malas building from scratch), maka aku mencari-cari library atau aplikasi SMS Gateway open source yang tersedia di Internet. Targetnya adalah minimal bisa jalan di linux, dan kalo bisa cross plaform, dan.. sebaiknya ga make bahasa yang harus dikompile (macam C/C++). Akhirnya aku menemukan beberapa library berbasis java, dan setelah melihat-lihat source dan sedikit mencobanya, akhirnya pilihan jatuh pada smslib dari http://www.smslib.org , dengan alasan : support untuk linux , dan dibuat memakai bahasa java

Terus terang aku tidak pernah menyentuh langsung bahasa java sebelumnya, kalo baca code java sih.. udah lumayan sering, tapi kalo untuk terjun langsung coding.. baru kali ini. Tapi apapun itu, berurusan dengan bahasa pemrograman itu seperti halnya nyetir mobil, sekali bisa nyetir suatu mobil, untuk mobil yang lain itu tinggal urusan penyesuaian, makin canggih emang awalnya bingung, tapi makin lama bakalan makin enak. Begitu juga bahasa pemrograman maupun framework, kalo udah canggih, awalnya rada bingung, tapi begitu udah terbiasa.. justru semakin memudahkan dan bikin ketagihan

Dimulailah sudah experiment, karena device resmi belum datang, untuk sementara peralatan dipinjam dari teman seruangan, setelah mendonlot kebutuhan/dependency dan membaca petunjuk instalasi yang juga rada-rada susah , akhirnya experiment tahap pertama berhasil sudah. Dan, berdasar keberhasilan tersebut, diputuskanlah sudah library tersebut sebagai basis aplikasi SMS Gateway yang telah kurencanakan. Nah, berikut rancangan sistem SMS Gateway yang aku bikin :

arsitektur

arsitektur

Sistem berkomunikasi dengan GSM modem alias ponsel melalaui komponen gateway (teorinya bisa menangani beberapa ponsel sekaligus), gateway berfungsi mengirim atau menerima SMS dari dan ke ponsel lain. Kemudian setiap SMS yang masuk atau yang akan keluar, ditangani oleh Interface, defaultnya berupa Interface Database yang bekerja menyimpan pesan yang masuk ke database Inbound, dan mengirim pesan yang disimpan di database Outbound.

Untuk memenuhi kebutuhanku, aku menambahkan Interface Parser dan Scheduler, serta sedikit modifikasi pada Interface Database. Interface Parser bertugas memeriksa setiap pesan yang masuk, Interface Parser dilengkapi oleh beberapa aturan yang telah didefinisikan oleh administrator, jika pesan sesuai dengan kriteria salah satu aturan, maka pesan di proses untuk selanjutnya diperlakukan sebagai sebuah command atau suatu request ke suatu sumber tertentu. Untuk saat ini, sumber data yang didukung baru berupa database, Http, serta mailbox(Imap, pop3), hasil yang diperoleh kemudian dikirim ke pengirim pesan dimana sebelumnya diolah sesuai dengan aturan yang telah didefinisikan. Interface parser dapat dikatakan memiliki pola kerja request-respon, question-answer, atau command-action, sebagai contoh layanan info jadwal sholat, atau jadwal pemutaran film.

Interface scheduler memiliki cara kerja yang berbeda, interface ini tidak memiliki urusan dengan pesan-pesan yang masuk. Interface ini bertugas mengamati sumber-sumber tertentu (database, http, atau mailbox) dan kemudian melakukan aksi berupa pengecekan pola atau kondisi, dan jika pola atau kondisi memenuhi kriteria yang telah didefinisikan sebelumnya, maka interface akan mengirimkan suatu pesan tertentu kepada pelanggannya(subscriber). Sebagai bayangan, nantinya sistem ini dapat diaplikasikan untuk alert, seperti e-mail baru, adanya server yang rusak, atau perubahan status.

Selain sistem SMS Gateway, aku melengkapi sistem ini dengan sistem administrasi berbasis web. Sistem berbasis web ini nantinya dapat digunakan administrator untuk mengatur pesan yang keluar dan masuk, mengelola aturan-aturan parser, serta mengelola scheduler yang terdaftar. Sistem ini juga dirancang agar dapat digunakan oleh pengguna akhir langsung(khusus untuk fitur scheduler). nantinya pengguna dapat melakukan registrasi sebagai subscriber/pelanggan suatu service/scheduler tertentu, seperti misal mail alert. Sistem ini juga telah dilengkapi dengan sistem kredit, sehingga banyaknya SMS yang dikirim ke seorang subscriber bisa diatur, selain itu penyedia layanan juga bisa menerapkan sistem semacam pre-paid.

Berhubung peralatan belum bisa tersedia hingga saat ini, maka experiment terhenti, dan hingga saat ini percobaan yang dilakukan masih bersifat parsial, belum bisa secara keseluruhan. Sebenernya pinginnya source code-nya mau aku publish di sourceforge sebagai project open source, tapi berhubung belum teruji dengan benar, trus codingnya juga masih agak memalukan, niatan ini kubatalkan. Untuk sementara bagi yang berminat belajar , ngoprek, atau mengembangkan lebih lanjut, bisa kontak aku secara personal.

;s.h.l.


About this entry