Anda di halaman 1dari 15

DOKUMEN TEKNIS

SMS GATEWAY

SMS GATEWAY

Information System & Dokumen Versi


Telecommunication
CCF-20161101
Division
PT. Japfa Comfeed. Tbk Revisi A
DAFTAR ISI
1 PENDAHULUAN..................................................................................................................................3
1.1 TUJUAN PEMBUATAN DOKUMEN..........................................................................................3
1.2 DESKRIPSI UMUM SMS GATEWAY.........................................................................................3
2 FRAMEWORK GAMMU......................................................................................................................4
2.1 DESKRIPSI STRUKTUR DAN FUNGSI.....................................................................................4
2.2 CARA PENGGUNAAN.................................................................................................................6
2.2.1 CARA CEK MODEM........................................................................................................6
2.2.2 INSTALASI GAMMU.......................................................................................................6
2.2.3 IMPORT DATABASE........................................................................................................8
2.2.4 MEMBUAT SERVICE GAMMU....................................................................................10
2.2.5 Cara Mengirimkan SMS Dengan Gammu.......................................................................12
3 PENGGUNAAN TRIGGER MYSQL.................................................................................................12
3.1 TRIGGER UNTUK MANAMPUNG SMSINBOX.....................................................................12
3.2 TRIGGER UNTUK MENGIRIM SMS.......................................................................................13
3.3 TRIGGER UNTUK HANDLE ERROR KIRIM SMS................................................................14

2 of 15
1 PENDAHULUAN

1.1 TUJUAN PEMBUATAN DOKUMEN


Dokumen Teknis sms gateway ini dibuat untuk tujuan sebagai berikut :
1. Memberikan gambaran tentang struktrur dari sistem sms gateway.
2. Sebagai panduan penggunaan framework tersebut dalam membagun aplikasi sms gateway
yang baru.

1.2 DESKRIPSI UMUM SMS GATEWAY


SMS Gateway adalah 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.Beberapa
kemampuan SMS Gateway, yaitu untuk :

1. Memperbesar skala aplikasi teknologi informasi dengan menggunakan komunikasi SMS


interaktif.
2. Menyediakan aplikasi kolaborasi komunikasi SMS berbasis web untuk pengguna di institusi
atau perusahaan
3. Menjangkau konsumen maupun pengguna jasa layanan institusi atau perusahaan secara mudah
menggunakan komunikasi sms interaktif.
Alur dari sistem sms gateway pada dasarnya hampir sama dengan yang ada dalam skema
dibawah ini

Gambar alur sistem sms gateway

3 of 15
2 FRAMEWORK GAMMU
Framework Gammu adalah library yang digunakan untuk membangun sebuah aplikasi sms
gateway. Struktur dan fungsi pada framework Gammu dijelaskan pada sub bab berikutnya.

2.1 DESKRIPSI STRUKTUR DAN FUNGSI


GAMMU adalah sebuah aplikasi yang dapat digunakan untuk mengelola berbagai fungsi pada
handphone, modem dan perangkat sejenis lain nya. Fungsi-fungsi yang dapat dikelola oleh Gammu
antara lain adalah fungsi nomor kontak (Phonebook) dan fungsi SMS sedangkan SMS gateway adalah
sebuah perangkat yang menawarkan layanan transit SMS, mentransformasikan pesan ke jaringan
selular dari media lain, atau sebaliknya, sehingga memungkinkan pengiriman atau penerimaan pesan
SMS dengan atau tanpa menggunakan ponsel.

Di folder gammu terdapat 4 folder standard yang disediakan oleh gammu yaitu bin, include,
lib, share. Untuk folder bin nanti yang kita lakukan konfigurasi untuk kebutuhan koneksi ke modem
dan database. Ada dua file yang perlu kita rubah yaitu gammurc dan smsdrc

4 of 15
Berikut ini adalah penjelesan dari kegunaan tabel tabel yang ada pada databse gammu :
Nama Tabel Fungsi
inbox untuk menyimpan pesan yang masuk
untuk menyimpan pesan yang akan diproses untuk dikirim oleh
Outbox
gammu
Gigunakan untuk menyimpan potongan pesan yang dikirim
Outbox Multipart lebih dari 160 karakter, ketika proses pengiriman nantinya pesan
akan dipecah menjadi beberapa bagian sebelum dikirim
Senditems untuk menyimpan pesan yang sudah terkirim
PBK untuk menyimpan data phonebook
digunakan untuk menyimpan data group phonebook, misalnya
PBK_groups
group kontak keluarga, teman kantor dan sebagai nya

5 of 15
2.2 CARA PENGGUNAAN

2.2.1 CARA CEK MODEM


Pada turorial ini modem yang digunakan Wavecom 8 port (SIM BOX) dan OS windows 7,
setelah anda menancapkan modem dan melakukan instalasi driver lalu silahkan buka device manager
dari controll panel atau klik logo windows yang ada disudut kiri bawah lalu search device manager
sehingga muncul seperti dibawah ini :

com6 adalah port yang digunakan oleh modem yang saya pakai, informasi port ini penting untuk
diketahui karna akan kita gunakan ketika konfigurasi gammu nantinya.

2.2.2 INSTALASI GAMMU


Versi gammu yang saya gunakan adalah gammu untuk OS windows dengan versi 1.3.3.0 yang
bisa anda download di situs gammu
1. setelah itu silahkan extrack Gammu-1.33.0-Windows.zip ke partisi C
2. lalu rename folder Gammu-1.33.0-Windows menjadi gammu
3. langkah selanjutnya silahkan cari file gammurc pada
C:\gammu\share\doc\gammu\examples\config

6 of 15
4. silahkan buka gammurc menggunakan software text editor anda dan cari script pada line 11 dan
12 :

lalu ubah sesuai dengan port modem yang anda gunakan

kemudian save untuk menyimpan perubahan settingan pada file ini.


5. Copykan kedua file gammurc dan smsdrc yang ada pada folder
C:\gammu\share\doc\gammu\examples\config lalu pindahkan ke folder bin (C:\gammu\bin )
lalu bukan cmd dan coba masuk ke folder C:\gammu\bin lalu jalankan perintah gammu
identify untuk mengechek apakah modem yang kita gunakan sudah dikenal atau belum oleh
gammu

7 of 15
2.2.3 IMPORT DATABASE
gammu menggunakan database sebegai media untuk menyimpan informasi pesan masuk, pesan
keluar, phonebook dan lain lain. sedangkan jenis database yang disupport oleh gammu adalah mysql,
sqlite dan postgreeSQL. pada tutorial ini kita akan menggunakan mysql sebagai database nya. silahkan
buka phpmyadmin melalui web browser anda dan buatlah sebuah database baru dengan nama gammu

lalu silahkan cari dan import file mysql.sql di folder C:\gammu\share\doc\gammu\examples\sql

kalau sudah lalu akan muncul list tabel tabel yang ada pada database gammu

8 of 15
9 of 15
2.2.4 MEMBUAT SERVICE GAMMU
untuk bisa mengirimka sms menggunakan gammu maka kita harus membuat service nya terlebih
dahulu, service ini penting agar gammu bisa bekerja secara otomatis dalam menjalankan tugasnya, oke
sekarang silahkan buka file smsdrc dengan software text editor lalu sesuaikan dengan konfigurasi
berikut :

anda boleh mengcopy seluruh settingan ini lalu mengreplace settingan bawaan nya, atau menyesuaikan
settingan konfigurasi nya satu persatu. lalu langkah selanjutnya membuat service nya menggunakan
perintah gammu-smsd -c smsdrc -i pada cmd windows.

setelah itu kita akan menjalankan service yang sudah kita buat tadi, silahkan klik icon windows lalu
ketik saja service dan pilih menu service yang keluar sehingga muncul seperti gambar dibawah,
silahkan cari service gammu

10 of 15
lalu klik start pada jendela sebelah kiri untuk menjalankans service yang sudah dibuat.

jika tidak terdapat pesan error maka sampai pada tahap ini anda sudah berhasil mengkonigurasi gammu

11 of 15
pada OS Windows.

2.2.5 Cara Mengirimkan SMS Dengan Gammu


selanjutnya kita akan mencoba mengirimkan SMS, konsep dasar pengiriman sms menggunakan gammu
adalah dengan cara meng-insert data ke tabel outbox, adapun query nya adalah sebagai berikut

insert into outbox (DestinationNumber, TextDecoded, CreatorID) values ('089699935552','Coba sms


pake Database','Gammu');

lalu silahkan chek tabel outbox akan ada sebuah record baru, record ini menunggu giliran untuk
diproses oleh gammu, lalu setelah pesan dikirim maka record ini akan dihapus dan dipindahkan secara
otomatis

3 PENGGUNAAN TRIGGER MYSQL


Untuk proses pengirman dan menerima sms smua dilakukan oleh trigger yang ada di mysql

3.1 TRIGGER UNTUK MANAMPUNG SMSINBOX


Trigger ini digunakan untuk menampung ketika ada request data dari user. Jadi ketika data
request masuk ke inbox maka secara otomatis di masukkan ke tabel smsinbox. Tabel sms ini
merupakan tabel custom yang kita gunakan untuk menampung data inbox. Tabel sms ini akan di
jadikan acuan data yang akan dikirim oleh oracle dengan menggunakan job. Beriku trigger tersebut.
DELIMITER $$

12 of 15
CREATE TRIGGER `trigger_insertsmsinbox` AFTER INSERT ON `inbox` FOR EACH ROW
BEGIN
insert into smsinbox (cphone,cmessage,csyncflag)
values(NEW.SenderNumber,NEW.TextDecoded,'0');
END
$$
DELIMITER;

3.2 TRIGGER UNTUK MENGIRIM SMS


Trigger ini berfungsi ketika ada data yang masuk ke tabel smsoutbox secara otomatis ke tabel outbox.
Dalam trigger ini terdapat pengecekan ketika data lebih dari 160 karakter maka pesan tersebut akan di
bagi beberapa bagian pada setiap bagian kita sisipkan kode UDH. Kode UDH ini berfungsi untuk
mengidentifikasi bahwa pesan tersebut terbagi menjadi beberapa bagian. Untuk bagian pertama pesan
akan insertkan ke tabel outbox. Untuk bagian yang lain akan di insertkan ke tabel outbox_multipart.
Berikut trigger tersebut.

DELIMITER $$
CREATE TRIGGER `trigger_insertsmsoutbox` AFTER INSERT ON `smsoutbox` FOR EACH ROW
BEGIN
DECLARE id_exists text;
DECLARE pesan,idsender text;
DECLARE jumlah,jumlah_edit,jumlah_sisa,awal, panjang,hasil_bagi,sisa_bagi,i,x,inc,cekprioritas int;
DECLARE UDH,pj,urut VARCHAR (20);
SET @x = 1;
SET @UDH = '0500030A';
select count(*) INTO @cekprioritas from smsoutbox where NTRANSACTIONPK= NEW.NTRANSACTIONPK
AND SENDERID IS NOT NULL ORDER BY NO_AUTO DESC LIMIT 1;
if (@cekprioritas>0) then
SET @idsender=NEW.SENDERID;
else
SELECT senderid into @idsender from mphone_center where
phone_number=substring(replace(NEW.CDESTNO,'+62','0'),1,4) limit 1;
end if;
SELECT AUTO_INCREMENT INTO @autoinc
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'sms'
AND TABLE_NAME = 'outbox';
SET @id_exists=NEW.CMESSAGE;
SET @panjang=length(@id_exists);

13 of 15
SET @hasil_bagi=@panjang div 153;
SET @sisa_bagi = @panjang % 153;
if @sisa_bagi > 0 then
set @i=@hasil_bagi+1;
else
set @i=@hasil_bagi;
end if;
SET @pj=hex(@i);
REPEAT
IF (@i>1) then
if (@x=1) THEN
SET @urut=hex(@x);
insert into outbox (DestinationNumber,UDH,TextDecoded,SenderID,MultiPart)
values(NEW.CDESTNO,concat(@UDH,lpad(@pj,2,'0'),lpad(@urut,2,'0')),substring(@id_exists,1,153),@idsende
r,'true');
INSERT SMSOUTBOX_temp(ntransactionpk,cdestno,cmessage,csyncflag,ID_OUTBOX,SENDERID)
values(NEW.ntransactionpk,NEW.cdestno,NEW.cmessage,'0',@autoinc,@idsender);
ELSE
SET @awal = (@x * 153) - 153 + 1;
SET @urut=hex(@x);
insert into outbox_multipart (UDH,TextDecoded,ID,SequencePosition)
values(concat(@UDH,lpad(@pj,2,'0'),lpad(@urut,2,'0')),substring(@id_exists,@awal,153),@autoinc,@x);
END IF;
ELSE
insert into outbox (DestinationNumber,TextDecoded,SenderID)
values(NEW.CDESTNO,@id_exists,@idsender);
INSERT SMSOUTBOX_temp(ntransactionpk,cdestno,cmessage,csyncflag,ID_OUTBOX,SENDERID)
values(NEW.ntransactionpk,NEW.cdestno,NEW.cmessage,'0',@autoinc,@idsender);
END IF;
SET @x = @x + 1;
until @x > @i END REPEAT;
END
$$
DELIMITER;

3.3 TRIGGER UNTUK HANDLE ERROR KIRIM SMS


Trigger ini berfungsi untuk melakukan handle ketika sms gagal terkirim. Jadi ketika pesan gagal
terkirim maka secara otomatis akan dikirim ulang, ada beberapa tabel tambahan yang kita gunakan
disini untuk membantu dalam proses handle sms error.

14 of 15
DELIMITER $$
CREATE TRIGGER `triger_sent_ulang` AFTER INSERT ON `sentitems` FOR EACH ROW
BEGIN
DECLARE ID,VNTRANSACTION,SEND_STATUS,SENDID,CDESTNO,CINITIAL VARCHAR (20);
DECLARE CMESSAGE TEXT;

SET @ID = NEW.ID;


SET @SEND_STATUS = NEW.STATUS;

SELECT NTRANSACTIONPK INTO @VNTRANSACTION FROM smsoutbox_temp where ID_OUTBOX=@ID


LIMIT 1;
SELECT CMESSAGE INTO @CMESSAGE FROM smsoutbox_temp where ID_OUTBOX=@ID LIMIT 1;
SELECT CDESTNO INTO @CDESTNO FROM smsoutbox_temp where ID_OUTBOX=@ID LIMIT 1;
SELECT INITIAL INTO @CINITIAL FROM counter_sms WHERE SENDERID=NEW.SENDERID;
SELECT senderid INTO @SENDID FROM counter_sms where initial=@CINITIAL AND senderid !=
NEW.SENDERID ORDER BY ID ASC LIMIT 1;
IF @SEND_STATUS = 'SendingOKNoReport' THEN
UPDATE smsoutbox SET FLAGSENT ='Y' WHERE NTRANSACTIONPK=@VNTRANSACTION;
ELSE
insert smsoutbox (NTRANSACTIONPK,CDESTNO,CMESSAGE,CSYNCFLAG,SENDERID,ID_OUTBOX)
VALUES (@VNTRANSACTION,@CDESTNO,@CMESSAGE,'0',@SENDID,@ID);
END IF;
END
$$
DELIMITER;

15 of 15

Anda mungkin juga menyukai