Membuat SMS Gateway dgn Modem GSM Itegno, Kannel, & Playsms
Written by ari
Friday, 17 February 2006
Membuat SMS Gateway sendiri memiliki tantangan yang cukup berat. Di internet sebenarnya telah tersedia banyak dokumentasinya, namun yang masih kurang adalah tutorial yang benar2 cocok untuk newbie. Setelah bergadang hampir 2 minggu akhirnya penulis berhasil menyetelnya. Berbeda dengan program SMS bawaan dari telepon genggam, dengan Kannel dan Playsms, kita bisa menjadikannya multi-user dan bisa diakses dari mana saja.
Pertama2 penulis ingin berterima kasih kepada semua rekan yang telah banyak membantu, terutamanya: 1. Developer modem Itegno yang telah memberikan daftar AT command modemnya. 2. Mas Anton Rahardja dan team yang telah menyediakan playsms dan bersedia ditanya2 jam 2 dini hari :) 3. Pak Adi Prasaja yang telah memberikan kunci2 settingan modem gsm. 4. Semua rekan2 yang telah berbaik hati berdiskusi, Mas Dave Muhammad, Mas Rist. Andy Nugroho, Arief Suherlan, dll. 5. Oom Google dan Pakde Milist :)
Baiklah mari kita mulai. Hal2 yang diperlukan adalah: 1. Modem GSM. Dalam hal ini penulis menggunakan Itegno 3000 yang menggunakan koneksi USB (http://www.dsc.co.id/?page=category&catid=5&pid=120). Sebenarnya kita dapat pula menggunakan telepon genggam GPRS kita, tapi mungkin di lain artikel yah. 2. Kannel (http://www.kannel.org) sebagai sms engine. 3. Playsms (http://playsms.sourceforge.net) sebagai web-based Mobile Portal System. 4. Linux OS dgn MySQL, kali ini penulis menggunakan Fedora Core 4, dengan kernel terbaru 2.6.15-1.1830. 5. Kopi kental, roti bakar, dan mie instant sesuai selera sebagai teman bergadang :)
Langkah2 yang harus dilakukan adalah: 1. Mensetting Modem GSM. 2. Menginstall dan mensetup kannel. 3. Menginstall dan mensetup playsms. 4. Mentesting
A. Mensetting Modem GSM Masukkan kartu GSM ke dalam modem GSM, dan jangan lupa pasang tutupnya. Sebab kalau tidak terpasang, modem tidak akan berfungsi dengan baik. Hidupkan Linux, dan colokkan modem ke port USB. Buka terminal, dan lakukan tail -f /var/log/messages. Di dalam /var/log/messages itu akan terlihat ini bila Linux berhasil mengenali modem GSM kita:
Feb 18 19:36:01 fc4 kernel: usb 2-2: new full speed USB device using uhci_hcd and address 3 Feb 18 19:36:01 fc4 kernel: usbcore: registered new driver usbserial Feb 18 19:36:01 fc4 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic Feb 18 19:36:01 fc4 kernel: usbcore: registered new driver usbserial_generic Feb 18 19:36:01 fc4 kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core Feb 18 19:36:02 fc4 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303 Feb 18 19:36:02 fc4 kernel: pl2303 2-2:1.0: pl2303 converter detected Feb 18 19:36:02 fc4 kernel: usb 2-2: pl2303 converter now attached to ttyUSB0 Feb 18 19:36:02 fc4 kernel: usbcore: registered new driver pl2303 Feb 18 19:36:02 fc4 kernel: drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
Secara fisik kita bisa melihat apakah Modem telah dikenali dengan baik dari lampunya yang berkedip2.
B1. Menginstall kannel. Kita bisa menginstall dari source, ataupun dari binary. Tidak masalah. Menggunakan FC4, kita dapat menginstallnya dengan cara:
yum install kannel kannel-devel
Ia berada di dalam repository extras.
B2. Mensetup kannel. Selanjutnya yang cukup sulit adalah mensetting kannel. Sangat disarankan kita mendownload dan mempelajari kannel userguide dari kannel.org. Playsms telah menyediakan settingan awal untuk kita, kita tinggal melengkapinya sesuai perlengkapan yang kita gunakan.
# SMS SERVICE 'Default' # there should be default always group = sms-service keyword = default max-messages = 0 exec = /usr/local/bin/kannel_incoming %t %q %a #get-url = "http://localhost/~playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%a"
Penjelasan: Bagian SMSC Fake kita comment out sebab dia berfungsi untuk testing saja. Kita tidak akan bisa mengirimkan sms yang sesungguhnya menggunakan SMSC Fake ini. Sebaliknya, kita definisikan group smsc modem gsm. sms-center juga kita sesuaikan dengan kartu gsm kita.
Kita definisikan juga group modems. Yang penting disini adalah init-stringnya yaitu "AT+CNMI=1,2,0,1,0;+CMEE=1", CMEE=1 itu berarti kita menginstruksikan modem agar menyebutkan jenis error yang terjadi pada Mobile Equipment kita. Kalau tidak dibuat verbose, maka ketika terjadi error misalnya pulsa kita habis sehingga tidak bisa kirim sms, modem gsm kita cuma bilang error tapi tidak disebutkan kenapa, sehingga kannel tidak mengetahui error apa yang terjadi:
2006-02-18 10:20:46 [8984] [7] ERROR: AT2[/dev/ttyUSB0]: Error occurs: ERROR (error number not known to us. ask google and add it.)
Setelah dibuat verbose menjadi keliatan sebab errornya:
2006-02-18 10:25:20 [8984] [7] CMS ERROR: +CMS ERROR: 38 (Network out of order)
Kemudian yang juga penting adalah bagian max-messages = 0 di group sms-service. Option max-message = 0 ini berguna agar modem kita tidak mengirimkan reply ketika menerima sms. Sebab akan terjadi kesalahan yang sangat fatal yaitu looping send-receive, dimana jika kita mengirimkan sms ke diri sendiri, maka modem akan mengirimkan reply ke diri sendiri, dan selanjutnya reply ini akan di reply, begitu seterusnya, sampai pulsa kita habis.
Bagaimana kannel bekerja? Kannel sebenarnya lebih dari sekedar sms engine, dia juga dapat berfungsi sebagai wap engine. Ada 3 komponen utama kannel, yaitu: bearerbox, smsbox, dan wapbox. Bearerbox ini adalah inti dari kannel. Dia berfungsi sebagai koordinator dari 2 komponen lainnya yaitu smsbox dan wapbox. Kira2 demikian deh :)
C. Menginstall dan mensetup playsms
Untuk lengkapnya, baca file INSTALL dari playsms yah! Berikut cuplikannya: 1. It is important to meet all minimum requiments above (Its a must!) 2. Setup a system user named 'playsms' to manage PlaySMS # adduser playsms # passwd playsms Note: on some Linux distributions adduser and passwd combined 3. On most Linux distributions actions (2) will create system user and group named playsms with home directory /home/playsms, there you will install all PlaySMS files 4. Create public_html on user's home directory, if its not already exists # mkdir /home/playsms/public_html 5. Extract PlaySMS package somewhere (Place in /usr/local/src if you want to) # tar -zxvf playsms-x.x.x.tar.gz -C /usr/local/src # cd /usr/local/src/playsms-x.x.x 6. Copy 'web' directory to public_html directory and set owner back to user playsms again (for security reason) # cp -rR web/* /home/playsms/public_html # chown -R playsms /home/playsms/public_html # chmod 701 /home/playsms 7. Setup database (import database) # mysqladmin -u root -p create playsms # mysql -u root -p playsms < /usr/local/src/playsms-x.x.x/db/playsms.sql Note: you dont need to use MySQL root access nor this method to setup PlaySMS database, but this is beyond our scope, you should read MySQL manual's for custom installation method 8. Edit config.php on playsms web directory (/home/playsms/public_html/config.php) Please read and fill all required fields carefully 9. Enter bin directory and copy playsmsd and playsmsd_start to /usr/local/bin # cd /usr/local/src/playsms-x.x.x # cd bin # cp playsmsd playsmsd_start /usr/local/bin/ 10. Enter /etc/init.d or /etc/rc.d/init.d and look for file rc.local, im sure you'll found it. Edit that file and put "/usr/local/bin/playsmsd_start" (without quotes) on the bottom of the file (before exit if theres exit). This way playsmsd_start will be run everytime the system startup. You need 'root' access for this purpose. 11 Browse http://localhost/~playsms and login using default administrator user username: admin password: admin 12. At this point you should be able to logon PlaySMS webbased interface. Lets move on to gateway module part, the hard one :)
If you decide to use kannel gateway module, then you must install kannel on the same server where PlaySMS installed. There are discussion on hoto install Kannel on separate machine with PlaySMS. Due to complexity of installation process for kannel, we decide to leave this module for experts. Well experts, there's something you should see on this package contrib/kannel/kannel.conf, sms service 'Default' part.
Dont forget to: 1. Create kannel cache directory and make it writable to the web servers user # mkdir /usr/local/cache # mkdir /usr/local/cache/smsd # chmod -R 777 /usr/local/cache Note: - make it writable to the world (chmod -R 777) just to simplify installation - it is better if you know what is the web server's user (eg: 'nobody') and instead chmod -R 777 you use: # chown -R nobody /usr/local/cache 2. Create log directory # mkdir /var/log/kannel 3. Enter bin directory in this package, and copy kannel_incoming to /usr/local/bin
If you decide to use kannel gateway module, but you dont want to use 'exec' method in sms service, just replace you kannel.conf near to sms service 'Default' part, with sms service 'Default' part in this package contrib/kannel/kannel-geturl.conf After copying sample configuration, dont forget to change 'CHANGE_THIS_TO_YOUR_PLAYSMS_URL' in your kannel.conf near to sms service 'Default' part, to your working PlaySMS URL
Catatan: Di FC4, secara default direktori home user ngga bisa diakses dari web. Untuk membuatnya aktif, kita edit file /etc/httpd/conf/httpd.conf. Cari baris berikut dan beri tanda comment di depan UserDir disable: # UserDir: The name of the directory that is appended onto a user's home # UserDir is disabled by default since it can confirm the presence # UserDir disable
Ok, sekarang kita restart apache, dan kemudian kita coba buka web playsmsnya. Kalau ada di localhost, kita ketik ini di browser:
http://localhost/~playsms
Loginlah dengan username: admin, password: admin
D. Mentesting Setelah semua siap, marilah kita testing. - Jalankan bearerbox bearerbox /etc/kannel.conf
Kalau kita lihat di Outboxnya playsms, akan kelihatan apakah sms kita sampai (delivered) atau tidak:
Penutup Demikianlah tutorial membuat gateway sms menggunakan Modemn GSM Itegno, Kannel, dan Playsms. Tutorial ini tentu saja masih jauh dari sempurna, namun begitu diharapkan dapat bermanfaat sebagai panduan langkah awal bagi kita yang ingin memiliki sms gateway sendiri.
Merdeka! v.1.0 by ari_stress a.k.a tiger74 a.k.a Fajar Priyanto
Bukit Sentul, 19 February 2006. Email: fajarpri at arinet dot org
Penulis adalah Microsoft Certified Professional, yang jatuh cinta kepada Linux. Bekerja di sebuah group otomotif di Jakarta
to mas ari, ada site job yg mungkin mas ari tertarik, karena ini berhubungan dengan membuat sms gateway, untuk informasinya saya tunggu mas ari di nomor saya 0813 806 37443 atau di 93885398 (urgent needed)
Posted by Phroteus, whose homepage is here on 07/01/2007 at 05:03
mas mau tanya nihhh gimana seting kannel dilunux buat hp 2..jadi gini mas saya maunya 1 hp tuk reply ama 1 nya tuk nerima sms gimana cara setingannya mas tq
Posted by zaki, on 07/19/2007 at 23:48
mas apa harus pake fedora core 4 untuk setting SMS gate way
Posted by Pranoto Suwiknyo, on 07/27/2007 at 19:25
O/S linux versi apa yang terbaik utk setup SMS gateway ini..??
Para Suhu yang terhormat, Saya sedang mencoba menggunakan playSMS dengan Kannel sebagai SMS gateway. Saat ini saya sudah berhasil mengirimkan baik PV maupun Broadcast. Yang menjadi masalah adalah: 1. Setiap mengirim SMS selalu muncul pesan status 'failed' padahal SMS terkirim ke nomor HP tujuan; 2. Selain itu, playSMS juga tidak bisa mengubah status delivery SMS; 3. Saya mencoba melihat fungsi 'kannel_hook_getsmsstatus' di 'playsms/plugin/gateway/kannel/fn.php' dan ternyata fungsi tersebut masih kosong. Saya belum tahu cara membuat fungsi ini. Dapatkah para Suhu membantu saya? Oh ya, sistem yang saya gunakan: - PC: Intel Pentium 4, 1 GB RAM - OS: Linux Fedora 7 - Kannel: 1.4.1 - playSMS: 0.9.3 - modem: iTegno 3000. Atas perhatian dan pertolongan dari para Suhu, saya sangat berterima kasih.
Posted by bengbeng, on 08/11/2008 at 04:40
mas kalo di ubuntu ( mint ) gmana. nih kanpake FC..makasih
Posted by mansur efendi, whose homepage is here on 02/08/2009 at 08:15