SMS GATEWAY
SMS GATEWAY
2 of 15
1 PENDAHULUAN
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.
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
com6 adalah port yang digunakan oleh modem yang saya pakai, informasi port ini penting untuk
diketahui karna akan kita gunakan ketika konfigurasi gammu nantinya.
6 of 15
4. silahkan buka gammurc menggunakan software text editor anda dan cari script pada line 11 dan
12 :
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
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.
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
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;
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;
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;
15 of 15