Ceritanya dimulai 1 bulan yang lalu neh. Pak Yan, teman kerja saya, sudah mulai sering nggak masuk karena harus terapi. Ada paketan datang buat Pak Yan. Berhubung beliaunya nggak nongol-nongol sampe 2 hari, Pak Bos besar suruh lihat isi paketan. Setelah bungkusan luarnya sukses saya cabik-cabik, masalah sebenarnya baru saja dimulai.Tulisan di labelnya:MultiTech CDMA modem. Saya cuma bisa garuk-garuk kepala dengerin Pak Bos bersabda.
Pak Bos : "Itu modem yang mau kita pake buat SMS gateway. Nanti kamu yang bikin programnya." Ouch!!! Apes bener gue...Bingung mau mulai darimana ngerjainnya. Sebenernya saya mau pajang foto tuh modem, tapi kelupaan mlulu mau bawa cam ke kantor,hehehe..emang dasar pikunan!
Well, firstly we have to make sure semua-muanya yang dibutuhin sudah lengkap. Lah, emang yang dibutuhin apa aja neh?! Baca documentation dulu deh kalo gitu. Yang perlu kita lakukan ngrakit dulu kelengkapan modem, seperti antena, kebel fuse + adaptornya, dan yang nggak boleh ketinggalan colokin kabel serialnya dan cek si dianya masuk comm port mana karena ketika kita testing dari hyperterminal harus pilih port yang benar. Saya sih gak mau repot-repot nyolokin kabel ke belakang kompi, jadi ya saya tambahin USB to serial punya ATEN. Lagipula ntar modem yang dipake ada beberapa, jadi kalo langsung colokin ke serial gak mungkin cukup buat semua.
Untuk memerintah modem melakukan apa yang kita inginkan, diperlukan command yang biasa disebut AT-Command. Disebut AT-command karena setiap perintah selalu diawali AT dan diteruskan dengan spesifik command yang mau kita pake, misalnya AT+CMGS (command untuk kirim message). Setiap command yang kita kirim pasti ada response yang dikirim balik oleh modem untuk acknowledgement kita, commandnya udah diproses si modem atau belum. Yuk kita coba-coba dulu di hyperterminal biar bisa bikin parser validator yang oke, soalnya kan perlu liat response modem dari masing-masing command.
Off the record yak responsenya apa aja, soalnya kalo diceritain disini semua gak mungkin cukup bo'! Singkat cerita saya mulai coding neh. Semua AT-command yang dibutuhkan dalam list sudah dimasukin ke module, siap dipanggil per-function. Prinsip SMS gateway yang saya buat sebenernya sederhana. SMS yang masuk dari seseorang (tentunya harus terdaftar dulu di grup SMS) disimpan ke dalam database supaya kalo perlu SMS statistic report gak kelamaan request ke provider dan penggunaan SMS bisa diawasi, kan project punya company gak saya bayar sendiri tuh. Setelah SMS masuk ke DB, selanjutnya saya cek si sender mau kirim buat grup SMS yang mana. Mulai deh saya loop send satu persatu sesuai dengan data yang ada di DB, jadi seakan-akan seperti automatic broadcast gitu deh. Kalo semua sudah oke, mark message yang udah di broadcast statusnya jadi READ. Simple banget kan?!
Tapi ada sedikit masalah neh waktu broadcast message. Misalnya dalam 1 grup saya punya contact 10 biji, bisa-bisa 3 diantaranya status sendnya gak beres. How come? Kan mereka kirimnya pake cara yang sama?! Coba saya trace deh... Anehnya kalau di trace satu-satu message ketika send, semua sukses terkirim! Beuh..semakin aneh! Salah gue apa koq sampe apes banget gini :( Akhirnya saya punya ide buat trap output response +CDS untuk ngecek delivery report tiap job send pake cara tradisional tapi manstabs : pake log file aja sih sebenernya, hehehe..jangan lupa nambahin date write to log-nya. Dari situ ketahuan kalo timing munculnya response +CMGS dan command send SMS yang berikutnya terlalu singkat. Artinya saya harus menambahkan sleep selama dia proses send supaya nggak diganggu gugat sama proses yang lain. Dan whalaaaa....sukses juga broadcast SMS yang bejibun tanpa masalah. Ternyata walaupun sudah muncul response +CMGS (yang menandakan proses kirim SMS sudah selesai), provider masih butuh waktu beberapa saat buat kirim message.
Kalau sudah oke gini tinggal maintain phone book deh. Rasanya senang juga satu task udah kelar, tinggal go live aja. Hwaaa...akhirnya..
Tidak ada komentar:
Posting Komentar