SMS Gateway di Centos 5.5

 

 

 

 

 I. Pendahuluan

SMS Gateway merupakan sebuah perangkat lunak yang menggunakan bantuan komputer dan memanfaatkan teknologi seluler yang diintegrasikan guna mendistribusikan pesan-pesan yang di-generate lewat sistem informasi melalui media SMS yang di-handle oleh jaringan seluler. Dengan menggunakan SMS gateway, kita dapat menyebarkan pesan ke ratusan nomor secara otomatis dan cepat yang langsung terhubung dengan database nomor-nomor ponsel saja tanpa harus mengetik ratusan nomor dan pesan di ponsel anda karena semua nomor akan diambil secara otomatis dari database tersebut. Di samping itu, SMS Gateway juga dapat digunakan sebagai Call Center dan SMS Pengaduan yang dapat digunakan oleh Polisi, Instansi pemerintah, dan lain sebagainya. Terlebih lagi, SMS Gateway dapat dijadikan sebagai sumber pendapatan yaitu dengan menggunakannya sebagai SMS Premium yang sekarang banyak menjamur. Selain itu , dengan adanya SMS Gateway anda dapat mengustomisasi pesan-pesan yang ingin dikirim. Dengan menggunakan program tambahan yang dapat dibuat sendiri, pengirim pesan dapat lebih fleksibel dalam mengirim berita karena biasanya pesan yang ingin dikirim berbeda-beda untuk masing-masing penerimanya. Dan masih banyak lagi keuntungan dari SMS Gateway ini. Cara kerja SMS Gateway bisa dilihat pada gambar di bawah ini:

 

 

 

 

 

Oleh karena itu, melalui artikel ini penulis akan menjelaskan tentang dasar-dasar bagaimana membuat aplikasi SMS Gateway. Penulis menggunakan modem GSM merk ITEGNO W3800U yang menggunakan koneksi USB, kannel sebagai sms engine dan playsms sebagai Web-Based Mobile Portal System. Penulis menginstal aplikasi tersebut di OS Centos 5.5.

II. Setting Modem

Modem yang penulis gunakan adalah Modem GSM Itegno W3800U yang menggunakan koneksi USB dan menggunakan kartu Mentari. Masukkan kartu GSM ke dalam modem GSM dan jangan lupa pasang tutupnya. Setelah itu, colokkan modem ke port USB di server Linux. Kemudian ceklah di log messages, apakah linux berhasil mengenali modem GSM kita dengan cara:

# vi /var/log/messages

Di sistem penulis, file messages akan terlihat sebagai berikut ketika mengenali modem GSM:

Sep 11 02:24:40 Centos55 kernel: usb 1-1: new full speed USB device using uhci_hcd and address 2

Sep 11 02:24:40 Centos55 kernel: usb 1-1: configuration #1 chosen from 1 choice

Sep 11 02:24:40 Centos55 kernel: usbcore: registered new driver usbserial

Sep 11 02:24:40 Centos55 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic

Sep 11 02:24:40 Centos55 kernel: usbcore: registered new driver usbserial_generic

Sep 11 02:24:40 Centos55 kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core

Sep 11 02:24:40 Centos55 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303

Sep 11 02:24:40 Centos55 kernel: pl2303 1-1:1.0: pl2303 converter detected

Sep 11 02:24:40 Centos55 kernel: usb 1-1: pl2303 converter now attached to ttyUSB0

Sep 11 02:24:40 Centos55 kernel: usbcore: registered new driver pl2303

Sep 11 02:24:40 Centos55 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 berkedip-kedip. Setelah itu ceklah di sistem kita apakah paket wvdial ada di dalam sistem kita dengan cara:

# rpm -qa | grep wvdial

Jika paket tersebut tidak ada di sistem kita, instal paket tersebut dengan cara:

# yum install wvdial

Setelah paket wvdial ada di sistem kita, ketikkan perintah dibawah untuk melihat tentang spesifikasi modem kita oleh wvdial:

# wvdialconf /etc/wvdial.conf

Di sistem penulis, modem Itegno terdeteksi sebagai berikut:

 

 

Perhatikan pada bagian Found a modem. Pada bagian itu, modem terdeteksi di /dev/ttyUSB0. Nilai ini akan dimasukkan ke file konfigurasi kannel.

III. Instal kannel

Kannel merupakan paket open source untuk WAP dan SMS Gateway. Penulis menggunakan versi terakhir dari kannel yaitu versi 1.4.3. Berikut adalah cara  instalasi kannel di dalam sistem centos:

# wget http://kannel.org/download/1.4.3/gateway-1.4.3.tar.gz

# tar zxvf gateway-1.4.3.tar.gz

# cd gateway-1.4.3

# ./configure

# make

# make install

Jika ada error seperti berikut ini pada saat mengeksekusi perintah make:

/usr/include/openssl/ssl.h:931: parse error before ‘}’ token

make: *** [gw/bb_alog.o] Error 1

maka ikuti perintah berikut:

# ln -s /usr/kerberos/include/com_err.h /usr/include/

# ln -s /usr/kerberos/include/profile.h /usr/include/

# ln -s /usr/kerberos/include/krb5.h /usr/include/

Kemudian ulangi lagi perintah make lalu diteruskan dengan make install. Setelah itu kita membuat direktori untuk menampung konfigurasi kannel di folder /etc dan direktori untuk menampung log di folder /var.

# mkdir /etc/kannel

# mkdir /var/log/kannel

Kemudian kita buat konfigurasi kannel:

# vi /etc/kannel/kannel.conf

#

# CORE

#

group = core

admin-port = 13000

smsbox-port = 13001

admin-password = admin

status-password = admin

box-allow-ip = “127.0.0.1”

log-level = 0

log-file = “/var/log/kannel/kannel.log”

access-log = “/var/log/kannel/access.log”

store-file = “/var/log/kannel/kannel.store”

 

#

# SMSC MODEM GSM

#

group = smsc

smsc = at

host = localhost

smsc-id = modem

modemtype = wavecom

device = /dev/ttyUSB0

speed = 115200

sms-center = +62816124

 

group = modems

speed = 115200

id = wavecom

name = wavecom

detect-string = “WAVECOM”

detect-string = “MODEM”

init-string = “AT+CNMI=2,1,0,0,0;+CMEE=1?”

 

#

# SMSBOX SETUP

#

group = smsbox

bearerbox-host = localhost

sendsms-port = 13013

sendsms-chars = “0123456789+”

global-sender = +62816124

log-level = 0

log-file = “/var/log/kannel/smsbox.log”

access-log = “/var/log/kannel/access.log”

 

#

# SEND-SMS USERS

#

group = sendsms-user

username = playsms

password = playsms

 

#

# SMS SERVICE

#

group = sms-service

keyword = default

accept-x-kannel-headers = true

max-messages = 0

assume-plain-text = true

catch-all = true

exec = /usr/local/bin/kannel_incoming

get-url = “http://localhost/playsms/plugin/gateway/kannel/geturl.php?t=%t&q=%q&a=%a”

Yang perlu diperhatikan disini adlah pada bagian device dan speed. Untuk kedua bagian tersebut lihat kembali hasil yang diperoleh pada saat mengetikkan perintah wvdialconf. Pada sistem penulis, Modem Itegno ada pada device /dev/ttyUSB0 dan memiliki speed 115200. Dan juga perhatikan pada bagian sms-center dan global-string. Karena penulis menggunakan mentari, maka nilai dari kedua item tersebut adalah +62816124. Namun jika kita menggunakan kartu yang berbeda, maka kedua item tersbut pun nilainya akan berbeda tergantung kepada operator yang digunakan. Berikut adalah nilai yang dimasukkan ke kedua item tersebut (Selama belum ada perubahan dari operator):

Telkomsel: +6281100000

IM3 : +62855000000

XL: +62818445009

Satelindo: +62816124

Pada kannel, ada 3 komponen utama kannel yaitu bearerbox, smsbox dan wapbox. Bearerbox merupakan inti dari kannel yang berfungsi sebagai koordinator dari 2 komponen lainnya. Untuk wapbox kita bisa kesampingkan dahulu pada saat ini. Setelah itu kita buat skrip sederhana agar bearerbox dan smsbox dapat menyala secara otomatis ketika server kita mengalami restart. Berikut adalah skripnya:

# vi /root/kannel_start.sh

#!/bin/sh

/usr/local/sbin/bearerbox /etc/kannel/kannel.conf >/dev/null 2>&1 &

sleep 1

/usr/local/sbin/smsbox /etc/kannel/kannel.conf  >/dev/null 2>&1 &

exit 0

Kemudian buat file tersebut agar bisa dieksekusi:

# chmod +x kannel_start.sh

Kemudian masuk ke file rc.local dan tambahkan skrip diatas

# vi /etc/rc.local

/root/start_kannel.sh

Kemudian nyalakan kannel dengan cara menyalakan bearerbox dan smsbox. Karena kita sudah membuat skrip untuk menyalakan kedua komponen tersebut, maka cukup ketikkan:

# ./kannel_start.sh

maka kedua komponen tersebut akan menyala. Sekarang lihatlah di log kannel yaitu di /var/log/kannel/kannel.log. Jika di log tersebut ada log seperti berikut:

2010-09-11 04:37:13 [4040] [6] DEBUG: AT2[modem]: <– OK

2010-09-11 04:37:13 [4040] [6] DEBUG: AT2[modem]: –> AT+CNMI=2,1,0,0,0;+CMEE=1?^M

2010-09-11 04:37:13 [4040] [6] DEBUG: AT2[modem]: <– OK

2010-09-11 04:37:13 [4040] [6] INFO: AT2[modem]: AT SMSC successfully opened.

Maka kannel sudah siap untuk menjadi SMS Gateway. Untuk mematikan kannel, ketikkan perintah berikut:

# pkill box

IV. Tes SMS Gateway

Berikutnya kita akan mengetes sms gateway yang sudah kita buat sebelumnya. Ada beberapa cara untuk mengetes sms gateway seperti lewat web atau lewat skrip. Namun disini penulis akan menggunakan cara kedua yaitu menggunakan skrip. Tulis skrip seperti berikut:

# vi sms.pl

#!/usr/bin/perl -s

use strict;

use Encode;

use LWP::Simple;

use URI::Escape;

use File::Basename;

#Variables

our $sms;

our $nm;

my $swn = basename($0);

my ($nb,$octet,$req,@nos);

#Main Program

if ($sms && $nm) {

@nos = split(/\s+|\t+/,$nm);

$octet = encode(“utf-8”,$sms);

foreach $nb (@nos) {

$req = get(“http://127.0.0.1:13013/cgi-bin/sendsms?username=playsms&password=playsms&to=$nb&text=$octet&#8221;);

print “$nb –> $req\n”;

}

} else {

print “usage : \’$swn -sms=\”message\” -nm=\”number\”\’\n”;

}

1;

Lalu buat skrip tersebut agar dapat di eksekusi:

# chmod +x sms.pl

Kemudian tes skrip tersebut dengan mengetikkan perintah:

# ./sms.pl -sms=”TES DARI SMS GATEWAY ITEGNO W3800U” -nm=”081234567890″

Ceklah di HP yang mempunyai nomor HP 081234567890. Jika di HP tersebut ada SMS yang berbunyi TES DARI SMS GATEWAY ITEGNO W3800U, maka sms gateway kita sudah berfungsi dengan baik. Bila ingin menggunakan SMS Gateway untuk dijadikan monitoring server atau network, silahkan baca disini.

V. Install PlaySMS

PlaySMS adalah aplikasi berbasis bahasa pemrograman PHP yang dapat digunakan untuk mengirim dan menerima SMS. Bentuk pengiriman SMS yang dilakukan bisa berupa single SMS, yaitu pengiriman SMS ke 1 nomor handphone, bisa juga berupa broadcast SMS dimana SMS dikirimkan ke sebuah grup yang telah didefinisikan oleh user. Dalam 1 grup ini dapat terdiri dari 1 atau lebih nomor handphone. Sedangkan bentuk penerimaan SMS yang tersedia adalah SMS yang diterima dapat langsung diarahkan ke email atau kotak masukan, inbox, dapat pula langsung ditampilkan dalam sebuah halaman html yaitu SMS Board, dapat dijadikan sebagai masukan untuk menyelenggarakan pemungutan suara, polling atau quiz, yang dikenal sebagai SMS Poll, dan dapat pula diarahkan untuk menjalankan suatu program yang dikehendaki di server dan mendapatkan hasilnya, yang dikenal sebagai SMS Command. Di tutorial ini penulis menggunakan playsms versi 0.9.3 dan bukan versi terakhir (0.9.4) karena versi terakhir tidak menyertakan skrip untuk kannel tetapi hanya skrip untuk gnokii saja. Berikut adalah instalasi playsms di centos:

# yum install php-pear-DB

# adduser playsms

# passwd playsms

# wget http://sourceforge.net/projects/playsms/files/playsms/Version%200.9.3/playsms-0.9.3.tar.gz/download

# cd playsms-0.9.3

# mkdir /var/www/html/playsms

# cp -R web/* /var/www/html/playsms

# mysql -u root -p

# mysql -u root -p playsms < /root/playsms-0.9.3/db/playsms.sql

# cd /var/www/html/playsms/

# cp config-dist.php config.php

Rubahlah file config.php pada bagian password untuk root di mysql. Berikut adalah file config.php penulis:

# vi config.php

$db_param[‘type’] = ‘mysql’;            // database engine

$db_param[‘host’] = ‘localhost’;        // database host/server

$db_param[‘port’] = ”;                 // database port

$db_param[‘user’] = ‘root’;             // database username

$db_param[‘pass’] = ‘123456’;           // database password

$db_param[‘name’] = ‘playsms’;          // database name

$db_param[‘pref’] = ‘playsms’;          // table’s prefix without trailing underscore

Kemudian lakukan pengopian:

# cd /root/playsms-0.9.3/bin/

# cp kannel_incoming /usr/local/bin/

# cp playsmsd playsmsd.php playsmsd_start /usr/local/bin/

# cp playsms /etc/default/

# service httpd restart

Buka browser dan ketikkan:

# http://alamat_ip/playsms

dan jika tidak ada error, akan tampak sebagai berikut:

 

 

Masukkan username=admin dan password=admin, maka akan muncul layar seperti berikut:

 

 

 

VI. Konfigurasi Playsms

Setelah aplikasi playsms muncul di browser, maka kita akan konfigurasi playsms tersebut agar berjalan dengan baik. Klik bagian Preferences pada My Account, maka akan tampak layar seperti berikut:

 

Masukkan data-data yang diperlukan khususnya yang ada tanda asterik (*). Kemudian klik bagian Gateway dan pilih Manage Kannel. Akan ada layar seperti berikut:

 

Masukkan data pada kolom-kolom tersebut seperti yang ada pada file kannel.conf. Jika sudah, klik pada tulisan click here to activate maka gateway kannel akan aktif. Setelah itu klik pada bagian Administration dan pilih Main Configuration. Maka akan tampak layar seperti berikut :

 

Masukkan gateway number seperti apa yang ada dalam file kannel.conf yang dalam hal ini adalah +62816124. Dengan begitu seluruh konfigurasi di play sms sudah kita konfigurasi dan kita akan mengetes playsms.

VII. Tes PlaySMS

Sesudah kita mengkonfigurasi playsms, maka kita akan mengetes playsms. Klik bagian My Account dan pilih Phonebook. Tampak layar seperti berikut:

 

Klik Create Group, maka akan tampak layar seperti berikut:

Masukkan data pada kolom Group Name dan Group Code lalu tekan tombol Create, akan muncul layar seperti berikut:

 

 

Tekan tombol Add Number to Group sehingga muncul layar seperti berikut:

Lalu masukkan nomor HP setelah anda mengklik tombol. Setelah itu pilih Send Text SMS pada bagian My Account kemudian muncul layar sebagai berikut:

 

Klik tanda >> untuk nomor-nomor yang akan di berikan pesan. Kemudian tulis pesannya dan tekan tombol Send. Maka pesan sms tersebut akan terkirim ke nomor-nomor tersebut. PlaySMS juga dapat mengirimkan AutoReplay, Quiz, Polling dan lain sebagainya. Untuk selengkapnya baca di sini.

VIII. Error PlaySMS

Ketika mengirimkan sms kepada seseorang menggunakan sms, terlihat ada error seperti berikut:

Fail to sent sms to ‘088xxxxxxxxxxx’

tetapi sms itu masuk ke nomor 088xxxxxxxxxxx. Sampai sekarang pun penulis tidak tahu penyebabnya apa. Mungkin karena sintaks php di playsms-nya yang kurang benar. Tetapi penulis berpedoman pada log di /var/log/kannel/kannel.log. Jika terlihat ada log seperti berikut setelah kita mengirim sms melalui playsms:

2010-09-11 02:48:42 [2788] [9] DEBUG: boxc_receiver: sms received

2010-09-11 02:48:42 [2788] [9] DEBUG: send_msg: sending msg to box: <127.0.0.1>

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: TP-Validity-Period: 24.0 hours

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: –> AT+CMGS=37^M

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: <–

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: <– >

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: send command status: 1

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: –> 0031000D91268812016519F00012A719D4F21CC40C9FD3A0301A34AEA7412D109C1DCE4F9B53

2010-09-11 02:48:43 [2788] [6] DEBUG: AT2[modem]: –> ^Z

2010-09-11 02:48:45 [2788] [6] DEBUG: AT2[modem]: <– +CMGS: 2

2010-09-11 02:48:45 [2788] [6] DEBUG: AT2[modem]: <– OK

2010-09-11 02:48:45 [2788] [6] DEBUG: AT2[modem]: send command status: 0

2010-09-11 02:48:45 [2788] [6] DEBUG: DLR[internal]: Adding DLR smsc=modem, ts=2, src=+6281xxxxxxxxx, dst=+6288xxxxxxxxxxx, mask=31, boxc=

2010-09-11 02:48:45 [2788] [6] DEBUG: SMSC[modem]: creating DLR message

2010-09-11 02:48:45 [2788] [6] DEBUG: SMSC[modem]: DLR = http://localhost/playsms/plugin/gateway/kannel/dlr.php?type=%d&slid=24&uid=1

2010-09-11 02:48:45 [2788] [10] DEBUG: send_msg: sending msg to box: <127.0.0.1>

2010-09-11 02:48:45 [2788] [10] DEBUG: boxc_sender: sent message to <127.0.0.1>

2010-09-11 02:48:45 [2788] [9] DEBUG: boxc_receiver: got ack

2010-09-11 02:49:00 [2788] [8] DEBUG: Dumping 0 messages to store

2010-09-11 02:49:11 [2788] [9] DEBUG: boxc_receiver: heartbeat with load value 0 received

Itu berarti SMS yang dikirimkan melalui SMS gateway diterima oleh pemilik nomor HP tersebut.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: