Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

17
IMPLEMENTASI SMS GATEWAY DENGAN KANNEL DAN MODEM WAVECOM Hary Cahyono wordpress.com, tifosilinux Email : [email protected] [email protected] Begitu banyak referensi mengenai smsgateway dengan berbagai third party yang digunakannya, dengan hobi didunia Linux/UNIX dan niat menambah referensi implementasi dengan kannel, maka saya iseng membuat tulisan ini. Now being developed further by the open source community, namely the Kannel Group. Keyword : Guide Kannel

description

Untuk bagian SMS Alert, kamu bisa menyiapkan server khusus dengan menggunakan IP Public dan koneksi perangkat yang dibutuhkan agar secara luas bisa diakses dari sisi bisnis.

Transcript of Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

Page 1: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

IMPLEMENTASI SMS GATEWAY DENGAN KANNEL

DAN MODEM WAVECOM

Hary Cahyono

wordpress.com, tifosilinux

Email : [email protected]

[email protected]

Begitu banyak referensi mengenai smsgateway dengan berbagai

third party yang digunakannya, dengan hobi didunia Linux/UNIX

dan niat menambah referensi implementasi dengan kannel, maka

saya iseng membuat tulisan ini. Now being developed further by

the open source community, namely the Kannel Group.

Keyword : Guide Kannel

Page 2: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

Pendahuluan

Sudah terlalu banyak referensi yang memuat Linux beserta kannel sebagai SMS

GATEWAY nya. Sekarang saya coba membagi seperti apa sih implementasinya jika

perusahaan/ corporate atau bahkan personal menginginkan business dengan Linux

beserta Kannel. Ekspektasi nya selalu diarahkan kepada hal yang sifatnya untuk

pemanfaatan ke arah positif. Mampu meraih optimalisasi business walaupun tetap

membawa lisensi GPL. Membuat business mudah dalam melakukan analisis dan

membuat Decision.

Konfigurasi Kannel

Semuanya dirancang bangun diatas sistem Linux OpenSuSE 11.2 Emerald dan

menggunakan modem WAVECOM dimana saya hanya akan memberikan point-point

nya saja karena sudah banyak referensi jika kita mencoba mencari di luar sana. Pasti

tidak akan memenuhi kebutuhan informasi kamu :) oleh karena itu saya coba

mencantumkan alamat email diatas. Biasanya kita rujuk ke path /etc/kannel/ namun akan

berbeda jika kamu melakukan kompilasi secara custom pada --prefix=/<path_directory>/

, berikut konfigurasi yang saya gunakan:

# Custom Config, Initiated by Hary on tifosilinux.com

# :) Check these out

#

# In case we are using WAVECOM as a modem to implementing this topologys : [public user, HP]<----

>([SMSC, Telco]<--send sms-->[Modem or HP])<---->[Kannel SMS Gateway]<---->[Database Server or

Content Server]

# We have to know 3 points of Kannel which is important to configure like mandatory (m), optional (o), and

conditional (c), then

# As we know it have 3 things to understand : bearerbox as connection handler between smsbox and(to)

smsc, smsbox as management function on kannel sms gateway, and wapbox as wap as connection

# Four group + 1 group modem required by group 'core' such as Group smsbox, smsc, sendsms-user,

smsservice, and modem

# Divided by 4 log-level to describes, 0 : Level debug, 1 : info, 2 : warning, 3 : error, 4 : panic

#

# Noted : Kannel SMS Gateway can be control/ managed by HTTP interface, like http://localhost:<admin-

port>/shutdown?password=<admin-password>

# Which is the <password> on url above could be changed with status, suspend, resume, start-smsc, and stop-

Page 3: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

smsc

group = core

admin-port = 13000

admin-password = harysmatta

status-password = probolinggo

admin-deny-ip = "*.*.*.*"

admin-allow-ip = "127.0.0.1"

smsbox-port = 13003

#wapbox-port = 13004 # Not needed wap right now

box-deny-ip = "*.*.*.*"

box-allow-ip = "127.0.0.1"

log-file = "/var/log/kannel/kannel.log"

log-level = 1

access-log = "/var/log/kannel/kannel.access"

#unified-prefix = "+358, 00358, 0, +, 00"

#white-list = "http://localhost/whitelist.txt"

store-file = "/var/log/kannel/kannel.store"

group = smsbox

bearerbox-host = 127.0.0.1

sendsms-port = 13013

sendsms-chars = "0123456789 +-"

log-file = "/var/log/kannel/smsbox.log"

log-level = 0

access-log = "/var/log/kannel/sms-access.log"

global-sender = +6281100000

# blacklist = "http://localhost/sms/blacklist.txt"

group = smsc

smsc = at

host = 127.0.0.1

smsc-id = test

#modemtype = auto

modemtype = wavecom

device = /dev/ttyUSB0

speed = 115200

#validityperiod = 167

#keepalive = 10

# pin = 1314 # <== used by GSM

sim-buffering = true

sms-center = +6281100000

my-number = +6285311761918

#my-number = +6281316764465

# Mobile phone configuration

group = modems

id = WAVECOM

name = wavecom

detect-string = WAVECOM

Page 4: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

#detect-string = AT # Use this if u're set modemtype as automatic on group smsc

init-string = "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"

#init-string = "AT+CMEE=2;+CNMI=3,1,0,0,0"

#init-string = "AT+CNMI=2,1,2,2,0

#keepalive-cmd = "AT+CBC;+CSQ"

#message-storage = "sm"

############################### [IF] SMS Connection with SMPP as a protocol

#############################################

# group = smsc (m) #

# smsc = smpp (m) #

# host = 10.195.7.8 # Thisi is using VPN managed by vpn box in order to connect to telco ipaddress_server

SMS CENTER #

# port = 4322 #

# receive-port = 4322 # This is port including IP in order to connect to telco #

# smsc-username = "passinds" # Provided by telco #

# smsc-password = "smpassdf" # Provided by telco #

# system-type = "TCP" #

# interface-version = 33 #

# address-range = "9790" # CP / Content Provider's Shortcode provided by telco #

#######################################################################################

##################################

group = sendsms-user

username = telkomsel

password = telkomsel

max-messages = 5

concatenation = true

# --- SERVICES ---

# -- Find these with your own docs from telco --

# added new parameters :

# %k --> keyword

# %p --> User Number Sender

# %P --> User Number Receiver

# %t --> Time sender

# %T --> transactionid

# %D --> meta-data, forwarded from Operator (XL request)

group = sms-service

keyword = default

#keyword = reg

# get-url = "http://192.168.0.102:39790/mo/index.php?smscid=%i&msisdn=%p&to=%P&sms=

%a&trx_date=%t&tid=%T&meta=%D" # (c) URL came from program or

# script will be execute if the keyword match with text gateway received by. Using GET method in URL

<=== The highest one of hierarchy response text

# Parameter get-url dibawah akan mengembalikan reply couldn't fetch content

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

#get-url = "http://localhost/mo/getting.php?text=%b&sender=%p"

Page 5: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

get-url = "http://localhost/mo/gettings.php?sender=%p&to=%P&text=%b&time=%t"

#get-url = "http://localhost/mo/received.php?sender=%p&text=%b"

max-messages = 3

#text = 'Pendaftaran Mahasiswa Baru'

###group = sms-service

###keyword = INFO

# post-url = # as same as get-url with different method POST <=== The highest one of hierarchy response

text

###file = /home/hary/info.txt

# Kannel helps you to store delivery reports

group = mysql-connection

id = mydlr

id = dlr-db

host = localhost

username = kannel

password = kannel

database = kannels

max-connections = 1

group = dlr-db

id = dlr-db

table = dlr

field-smsc = smsc

field-timestamp = ts

field-source = source

field-destination = destination

field-service = service

field-url = url

field-status = status

field-mask = mask

field-boxc-id = boxc

#group = sms-service

#keyword = Reg

#text = "Selamat anda terdaftar di layanan info IT. Dan tidak dapat berhenti berlangganan. :):) CS :

08569042489"

Dari konfigurasi diatas, sistem mengabaikan hashtag dan kita bisa membacanya sebagai

sebuah informasi. Semua konfigurasi dan MSISDN “BEBAS UNTUK DILIHAT :)”.

Didalam informasi tersebut, saya juga memberikan gambaran bagaimana jika shortcode

yang digunakan untuk kepentingan business corporate, jadinya tidak dengan

menggunakan msisdn pribadi (kamu bisa lihat-lihat di fitur busness di laman

http://tifosilinux.wordpress.com). Tinggal disesuaikan pada parameter :

Page 6: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

global-sender = +6281100000, dan

sms-center = +6281100000

Karena saya menggunakan operator telkomsel, maka pusat dari pesan saya rujuk ke

+6281100000 dan +6281100000 untuk global-sender yang artinya, setiap nomor yang

diterima ke user (sebagai balasan dari sms MT yang telah dikirim) akan menggunakan

nomor +6281100000.

Kemudian, pada group sms-service kita bisa melakukan aktifasi jika menginginkan

sistem melakukan reply secara otomatis. Tinggal kita masukkan keyword dan text nya

sebagai reply atas keyword yang telah dikirim dari si sender. Kannel sebagai receiver

juga dapat melakukan custom reply pada get-url (bisa juga menggunakan post-url dsb)

dimana keyword tertentu yang telah di hardcode atau ter-register sebelumnya akan

melakukan reply sesuai trigger yang telah di register. Syaratnya set keyword ke nilai

default terlebih dahulu. Dalam hal melakukan dailypush (dimana user ter register dahulu

didalam sistem basis data untuk kemudian dikirimkan MT SMS (ter charge ataupun

tidak)), kita perlu menyiapkan parameter URI berikut :

"http://127.0.0.1:13013/cgi-bin/sendsms?

username=telkomsel&password=telkomsel&to=085695042489&text=Isi+SMS+yang+i

ngin+dikirim"

Untuk hubungan langsung Kannel ke MySQL guna meyimpan DLR (Delivery Report)

tidak akan saya bahas dan kamu bisa mendapatkan referensinya sendiri di internet. Jika

setting dan test berhasil, kamu akan mendapati logging-logging sebagai berikut :

Page 7: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

Simulasi Transaksi

Sekarang kita coba memperjelas hal ini dengan membuat scripting yang 'amat sangat'

sederhana dengan PHP dan koneksi MySQL. Konsepnya begini:

Sebagai penyelia konten terhadap client, kita memutuhkan sebuah tools yang dapat

melakukan registrasi services atau layanan beserta nilai charging, isi konten, serta

deskripsi dari layanan tersebut. Didalam sistem butuh sebuah trigger guna mencocokkan

antara layanan dengan nilai charging. Untuk script bisa kamu download di

tifosilinux.wordpress.com, berikut screenshot nya :

Jika sudah mengerti arahnya, kita amati script get-url untuk mendapatkan reply sms

sesuai dengan yang diharapkan. File mengacu pada parameter get-url yang digunakan.

Tempatkan script sesuai document root kamu;

<?php

// Inititated by Harysmatta

mysql_connect("localhost", "kannel", "kannel");

mysql_select_db("kannels");

//http://localhost/mo/gettings.php?sender=%p&to=%P&text=%b&time=%t

//http://localhost/mo/gettings.php?sender=09230232&to=1212232&text=DOA&time=091282912

$msgfrom = $_GET['sender'];

$msgto = $_GET['to'];

$msgtimestamp = $_GET['time'];

$svc_keyword = $_GET['text'];

//Or you can using :

//$svc_keyword = $HTTP_GET_VARS['text'];

Page 8: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

// Avoiding these nested query if u can ;)

$price_mapping = "select b.charging_value as price from charging b where b.id in(select c.charging_id from

service_charging_mapping c where c.service_id = (select a.id from service a where a.service_name =

'$svc_keyword' ))";

$key_price_mapping = mysql_query($price_mapping);

while($result1 = mysql_fetch_array($key_price_mapping)){

$price = $result1['price'];

}

// 'Mobile Originating' like

$inserting_MO = mysql_query("insert into tbl_msgtransacts (MSGFROM, MSGTO, MSGDATA, PRICE,

MSGTIMESTAMP, SUBJECT, OPERATOR) values('$msgfrom', '$msgto', '$svc_keyword', '$price',

'$msgtimestamp', 'MO;PULL;TEXT', 'TSEL')");

$keyword_query = "select description from service where service_name = '$svc_keyword'";

$key_query=mysql_query($keyword_query);

while($result2=mysql_fetch_array($key_query)){

$msgdata = "Congrats : ".$result2['description']."";

echo "Congrats : ".$result2['description']."";

}

// 'Mobile Terminating' like

$inserting_MT = mysql_query("insert into tbl_msgtransacts (MSGFROM, MSGTO, MSGDATA, PRICE,

MSGTIMESTAMP, SUBJECT, OPERATOR) values('$msgto', '$msgfrom', '$msgdata', '$price', '$msgtimestamp',

'MT;PULL;TEXT', 'TSEL')");

Sesuaikan koneksi ke MySQL kamu, sebenarnya bisa menggunakan PDO jika DB Type

yang digunakan berlainan jenis. Script akan mengambil variabel pada url kemudian

melakukan pengecekkan pada tabel-tabel yang digunakan saat inserting service

(disarankan kamu membuat service register terlebih dahulu seperti screenshoot diatas).

Script akan mencocokkan price sesuai dengan keyword (dalam hal ini kita analogikan

sebagai service) dan akan melakukan inserting as a MO and MT. Kita bahkan bisa

menambahkan status ataupun Closereason dari setiap message, namun belum sempat

saya lakukan. Dan bisa saja kamu memperluas konsep diatas.

Kita bisa melihat setiap transaksi diatas pada table tbl_msgtransacts yang kita siapkan

sebelumnya, berikut screenshoot nya:

Page 9: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

Silahkan kamu buat sendiri MO Traffic sebagai tools complement transaksi diatas ;)

SMS Alert

Ibaratkan begini, kita seorang business analyst.. dan melakukan sebuah perencanaan

pada setiap Content Provider untuk menjalankan campaign sebagai activity sales nya.

Kita menjalankan sebuah aplikasi dari vendor dimana mulai dari menentukan tipe

layanan yang dijalankan, range waktu hingga telco mana yang dipilih, namun satu hal..

tidak ada notifikasi pesan ke Account Engineer (AE) sebagai perwakilan CP dan System

Administrator serta Monitoring Team nya. Bahwa telah dijalankan sebuah campaign

dengan range waktu tertentu dan di setiap telco dan CP mana saja campaign telah

berjalan hingga selesai.

Jadi yang kita harapkan ada sebuah aktifitas tambahkan untuk mengirimkan notifikasi ke

System Administrator serta Monitoring Team. Sebuah analogi kembali saya coba

perlihatkan:

Page 10: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

Karena hal ini berkaitan dengan mengirimkan pesan notifikasi dan sedikit banyak

menentukan dalam membuat keputusan bisnis, maka kita perlu membuat priviliges

berupa sebuah session. File-file yang dibutuhkan adalah trigger.sh, triggering.sh,

cekpswd.php, login.html, logout.php, sign.php, sorry.html, green.png, red.png, exec1

s.d. exec9.sh serta SendSMS.php. Tentu file-file tersebut penamaannya bisa

disesuaikan.

Oke, diperjelas.. contoh sample hierarki direktorinya sebagai berikut:

/var/www/html/SendSMS.php

/var/www/html/support/cekpswd.php

/var/www/html/support/login.html

/var/www/html/support/logout.php

/var/www/html/support/sign.php

/var/www/html/support/sorry.html

/var/www/html/support/green.png

/var/www/html/support/red.png

/home/hary/script/trigger.sh

/home/hary/script/triggering.sh

/home/hary/script/exec1-9.sh

Sebagai catatan, saya tidak akan memberikan detail DB dan table-table yang

digunakan hingga field-field nya, namun kamu bisa memenuhi kebutuhan tersebut

Page 11: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

dengan membaca script.

Kemudian kita breakdown isi setiap script;

<Login.html>

<html><head><title>Login dulu</title></head><body><article style='width:40%;float:left;margin:0 30%;' /><b>Login untuk user yang sudah terdaftar sebelumnya </b><pre><form name="frmLogIn" METHOD="post" ACTION="/support/cekpswd.php">Username : <INPUT TYPE="text" NAME="uname">Password : <INPUT TYPE="password" NAME="pswd"><INPUT TYPE="submit" VALUE="Submit"></form></pre></body></html>

Script menggunakan method post pada attribute nya dan menggunakan nama frmLogin

dimana membutuhkan file cekpswd.php guna pengecekkan.

<cekpswd.php>

<?php/** Session started by HarysMatta on tifosilinux.wordpress.com**/session_start();$uname = $_POST['uname'];$pswd = sha1($_POST['pswd']);$host = "localhost";$user = "root";$pwd = '';$db = 'login';$sql = "select * from member where uname='$uname'";

$conn = @mysql_connect($host, $user, $pwd) or die("Koneksi gagal : " . mysql_error());mysql_select_db($db);$qry = mysql_query($sql) or die("Query salah : " . mysql_error());$num = mysql_num_rows($qry);$row = mysql_fetch_array($qry);if ($num==0 OR $pswd!=$row['pswd']){ header("Location: /support/sorry.html");}else{ $_SESSION['login']=1; header("Location: http://localhost/SendSMS.php");}?>

Disinilah session kita buka menggunakan fungsi session_start(); dan melakukan

pengecekkan jika username dan password sudah di insert secara manual atau belum.

Dengan segala detail nya mulai dari koneksi dan pengambilan value dari method POST

yang digunakan, jika login berhasil akan di redirect ke halaman

http://localhost/SendSMS.php

<SendSMS.php>

Page 12: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

<?phpsession_start();if(!isset($_SESSION['login'])){ include("/var/www/html/support/login.html");}else{mysql_connect("localhost", "kannel", "kannel");mysql_select_db("kannels");

echo "<html><head><title>TifosiLinux Wordpress</title></head><body>";echo "<article style='width:40%;float:left;margin:0 30%;' />";

echo "<div style='border: 2px solid green; height: 370px; padding: 5px; text-align: left; width: 430px;'><form method='post' action='SendSMS.php'><table border=0 width=430px><tr> <td> <b>CP 3Tinggi</b><br> <input type='checkbox' value='ProXL1' name='ProXL1'>ProXL<br> <input type='checkbox' value='Indosat1' name='Indosat1'>Indosat<br> <input type='checkbox' value='TSEL1' name='TSEL1'>Telkomsel<br><br> <b>CP Passindonesia</b><br> <input type='checkbox' value='ProXL2' name='ProXL2'>ProXL<br> <input type='checkbox' value='Indosat2' name='Indosat2'>Indosat<br> <input type='checkbox' value='TSEL2' name='TSEL2'>Telkomsel<br><br> <b>CP YattaEra</b><br> <input type='checkbox' value='ProXL3' name='ProXL3'>ProXL<br> <input type='checkbox' value='Indosat3' name='Indosat3'>Indosat<br> <input type='checkbox' value='TSEL3' name='TSEL3'>Telkomsel<br><br> </td> <td> <b>Duration of Campaign</b><br> <select name='hour'> <option selected='selected'>Hour</option>"; for($d=0; $d<=24; $d+=1){echo "<option value=$d>$d</option>"; } echo "</select>hour <select name='minute'> <option selected='selected'>Minute</option>"; for($c=1; $c<=60; $c+=1){ echo "<option value=$c>$c</option>"; } echo "</select>minute/s <br><br><b>Status</b><br>"; echo "<iframe src='http://localhost/support/sign.php' height='120' width='120'></iframe>"; echo "</td></tr></table>";

/* For Example */if (isset($_POST['ProXL1'])){ // echo $_POST['ProXL1'].'<br />'; shell_exec("/home/hary/script/exec1.sh");}if (isset($_POST['ProXL2'])){ // echo $_POST['ProXL2'].'<br />'; shell_exec("/home/hary/script/exec2.sh");}if (isset($_POST['ProXL3'])){ // echo $_POST['ProXL3'].'<br />'; shell_exec("/home/hary/script/exec3.sh");}if (isset($_POST['Indosat1'])){

Page 13: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

// echo $_POST['Indosat1'].'<br />'; shell_exec("/home/hary/script/exec4.sh");}if (isset($_POST['Indosat2'])){shell_exec("/home/hary/script/exec5.sh");}if (isset($_POST['Indosat3'])){ // echo $_POST['Indosat3'].'<br />'; shell_exec("/home/hary/script/exec6.sh");}if (isset($_POST['TSEL1'])){ // echo $_POST['TSEL1'].'<br />'; shell_exec("/home/hary/script/exec7.sh");}if (isset($_POST['TSEL2'])){ // echo $_POST['TSEL2'].'<br />'; shell_exec("/home/hary/script/exec8.sh");}if (isset($_POST['TSEL3'])){ // echo $_POST['TSEL3'].'<br />'; shell_exec("/home/hary/script/exec9.sh");}/* For Example *///if ($_POST['hour'] != "Hour" && $_POST['minute'] != "Minute")if ($_POST['hour'] != "Hour" && $_POST['minute'] != "Minute"){ $HOUR = $_POST['hour']; $MINUTE = $_POST['minute']; mysql_query("TRUNCATE TABLE `kannels`.`trigger`"); mysql_query("INSERT INTO `kannels`.`trigger` (`id`, `hour`, `minute`, `status`, `laststatus`) VALUES (NULL, '$HOUR', '$MINUTE', 'isActive', 'set')"); echo "Schedule has been set<br>";}else{ echo "<b>Noted : </b>Schedule & Duration of Campaign can't be empty<br>";}

echo "<input type='submit' value='Submit' name='submit'><a href='http://localhost/support/logout.php'>Logout</a></div></body></html>";

Iframe digunakan untuk menampilkan status secara realtime dengan menggunakan file

sign.php dengan META refresh untuk melihat kondisi campaign. Gunakan file green.png

untuk status aktif dan red.png ketika status finish. Status dipicu oleh isi dari table

trigger pada field status dan laststatus. Shell script yang bertugas untuk melakukan

action nya, yakni trigger.sh yang kita set pada cronjobs untuk pengecekkan setiap saat.

Kemudian script ini akan otomatis melakukkan update waktu cronjobs untuk file

triggering.sh

<trigger.sh>

#!/bin/bash# Setup this script with all wildcards : * * * * * /home/hary/script/trigger.sh

check=`mysql -hlocalhost -ukannel -p'kannel' kannels -e "select laststatus from kannels.trigger order by id desc limit 1" | grep -v "laststatus"`

if [[ $check == "set" ]];

Page 14: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

then menit=`crontab -l | grep 'triggering.sh' | awk '{print $1}'` jam=`crontab -l | grep 'triggering.sh' | awk '{print $2}'`

hour=`mysql -hlocalhost -ukannel -p'kannel' kannels -e "select hour from kannels.trigger order by id desc limit 1" | grep -v "hour"` minute=`mysql -hlocalhost -ukannel -p'kannel' kannels -e "select minute from kannels.trigger order by id desc limit 1" | grep -v "minute"`

final_minute=`date --date='+'$minute' minutes' +"%M"` final_hour=`date --date='+'$hour' hour' +"%H"` sed -i 's/'$menit' '$jam' \* \* \* \/home\/hary\/script\/triggering.sh/'$final_minute' '$final_hour' \* \* \* \/home\/hary\/script\/triggering.sh/' /var/spool/cron/tabs/root mysql -hlocalhost -ukannel -p'kannel' kannels -e "UPDATE kannels.trigger set laststatus='unset' where laststatus='set'"fi

<triggering.sh>

#!/bin/bash

#number1=085695042489number2=081316764465

time=`date +"%H:%M"`

#links -dump "http://127.0.0.1:13013/cgi-bin/sendsms?username=telkomsel&password=telkomsel&to=$number1&text=Info+:+Campaign+has+been+stop+at+$time+a+clock"links -dump "http://127.0.0.1:13013/cgi-bin/sendsms?username=telkomsel&password=telkomsel&to=$number2&text=Info+:+Campaign+has+been+stop+at+$time+a+clock"

mysql -hlocalhost -ukannel -p'kannel' kannels -e "UPDATE kannels.trigger set status='isDie' where status='isActive'"

Kita juga membutuhkan file-file exec sebagai action apabila value dari POST sesuai

dengan kondisi, file menggunakan parameter url untuk mengirimkan pesan.

<exec1.sh – exec9.sh>

#!/bin/bash

#number1=085695042489number2=081316764465

hour=`mysql -hlocalhost -ukannel -p'kannel' kannels -e "select hour from kannels.trigger order by id desc limit 1" | grep -v hour`minute=`mysql -hlocalhost -ukannel -p'kannel' kannels -e "select minute from kannels.trigger order by id desc limit 1" | grep -v minute`

#links -dump "http://127.0.0.1:13013/cgi-bin/sendsms?username=telkomsel&password=telkomsel&to=$number1&text=Info+:+telco+ProXL+di+3Tinggi+sedang+campaign"links -dump "http://127.0.0.1:13013/cgi-bin/sendsms?username=telkomsel&password=telkomsel&to=$number2&text=Info+:+telco+Telkomsel+di+3Tinggi+sedang+campaign+untuk+$hour+jam+$minute+minute"

echo 'date +"%H:%M:%S"' >> /tmp/LOGGING.txt

#links -dump "http://127.0.0.1:13013/cgi-bin/sendsms?username=telkomsel&password=telkomsel&to=$number1&text=Info+:+telco+Telkomsel+di+3Tinggi+sedang+campaign"

Isi message diatas bisa dirubah sesuai kebutuhan.

<sorry.html>

<HTML><HEAD><TITLE> Sorry </TITLE></HEAD><BODY><article style='width:40%;float:left;margin:0 30%;' /><b> Username ato password anda ndak bener</b><br>

Page 15: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

<a href="http://localhost/support/login.html"> Back </a></BODY></HTML>

<logout.php>

<?/** Session started by HarysMatta on tifosilinux.wordpress.com**/session_start();unset($_SESSION['login']);session_destroy();header("Location: /support/login.html");?>

Script pada file logout.php diatas akan melepas session yang sebelumnya telah

terbentuk.

<sign.php>

<?php

mysql_connect("localhost", "kannel", "kannel");mysql_select_db("kannels");

echo "<META HTTP-EQUIV='REFRESH' CONTENT='3;URL=http://localhost/support/sign.php'>";$stat="select status from kannels.trigger order by id desc limit 1";$hasil1=mysql_query($stat);$hasil2=mysql_fetch_array($hasil1);if($hasil2['status'] != "isActive"){ echo "<img src='http://localhost/support/red.png'></img>";}else{ echo "<img src='http://localhost/support/green.png'></img>";}

Akhirnya kita bisa lihat kondisi pada tiga screenshoot dibawah ini:

Page 16: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2
Page 17: Implementasi Kannel dengan modem Wavecom di Linux OpenSuSE 11.2

Referensi

Kannel cvs-20030901 User’s Guide, Open Source WAP and SMS gateway Andreas Fink

Chairman & CTO, Global Networks Inc. [email protected], http://www.smsrelay.com,

http://www.gni.ch, Bruno Rodrigues, [email protected] , http://litux.org/bruno

*) Semuanya ditulis diatas sistem Linux OpenSuSE 11.2 Emerald, OpenOffice 3.1.1, dia

v 0.97. dan Okular v 0.9.5