RSS

SMS Gateway Part 3

Di part 3 ini saya akan menjelaskan beberapa tambahan konfigurasi setelah postingan dasar di SMS Gateway Part 1 dan SMS Gateway Part 2. Di artikel ini akan saya menjelaskan beberapa triger / aturan yang diterapkan untuk memecah pengiriman SMS dengan panjang lebih dari 1 halaman (153 karakter).

Langkah Pertama
Pada langkah awal yang perlu diperhatikan yaitu mysql sudah bisa jalan, untuk mengetahui jalan tidaknya mysql kirim sms dengan menambahkan isi pesan dan nomor tujuan di tabel outbox.
$ mysql -u root -p
mysql> use sms
mysql> insert into outbox (DestinationNumber, TextDecoded) values ('085629xxxxx','isi sms');
mysql> select * from sentitems;
Keempat cara diatas mungkin agak membingungkan, OK lebih jelasnya saya akan perlihatkan versi GUI yaitu dengan menggunakan interface phpmyadmin.
Masuk ke browser dengan url http://127.0.0.1/phpmyadmin

Kirim SMS dengan memasukkan data di tabel outbox dengan mengisi field  DestinationNumber dan TextDecoded saja, dan pastikan SMS telah terkirim dengan melihat tabel sentitems


Langkah  Kedua
Sampai langkah ini sms hanya berjalan dengan panjang karakter 153 atau 1 halaman sms, untuk membuat menjadi lebih dari 1 halaman tambahkan triger pada tabel outbox
Pilih database sms, dan pilih menu SQL
Masukkan dua trigger yaitu trigger sebelum insert ke outbox dan trigger setelah insert outbox

Trigger sebelum insert di tabel outbox
DROP TRIGGER IF EXISTS `outbox_before_ins_tr`;
DELIMITER //
CREATE TRIGGER `outbox_before_ins_tr` BEFORE INSERT ON `outbox`
 FOR EACH ROW BEGIN

 if length(new.TextDecoded)>160 then
    set @countM=hex((length(new.TextDecoded) div 154)+1);
    set @remains=substring(new.TextDecoded from 154);
    set @randomUDH=hex(FLOOR(1 + (RAND() * 254)));
  if length(@countM)=1 then
    set @countM=CONCAT('0',@countM);
  end if;
  if length(@remains)>0 then
   set new.UDH=concat('050003',@randomUDH, @countM,'01');
   set new.TextDecoded=left(new.TextDecoded,153);
   set new.MultiPart='true';
   set new.RelativeValidity=255;
  else
    set new.MultiPart='false';
  end if;
  end if;
END
//
DELIMITER ;

Trigger setelah insert di tabel outbox
DROP TRIGGER IF EXISTS `outbox_after_ins_tr`;
DELIMITER //
CREATE TRIGGER `outbox_after_ins_tr` AFTER INSERT ON `outbox`
 FOR EACH ROW BEGIN

 set @seq=2;
 set @udh=left(new.udh,10);
 while (length(@remains)>0 and @seq<256) do
   set @part=left(@remains,153);
   if length(hex(@seq))=1 then
      set @seqx=CONCAT('0',hex(@seq));
   else
      set @seqx=hex(@seq);
   end if;
   set @remains=substring(@remains from 154);
   insert into outbox_multipart  (SequencePosition,UDH,TextDecoded,id) values (@seq,concat(@udh,@seqx),@part,new.ID);
   set @seq=@seq+1;
 end while;
END
//
DELIMITER ;
Eksekusi kedua trigger di atas satu persatu.


Langkah Ketiga
Setelah menambahkan trigger cek apakah trigger sudah terpasang
Masuk ke url http://127.0.0.1/phpmyadmin - pilih database SMS (database yang telah dibuat untuk SMS Gateway) - pilih tabel outbox - scroll kebawah dan pilih Details...
Jika berhasil akan muncul dua trigger seperti gambar di atas


Langkah Terakhir
Langkah terkahir yaitu tes apakah trigger sudah berjalan dan berhasil dengan mengirimkan SMS lebih dari 1 halaman.

Kirim SMS dengan menambahkan data di tabel outbox pada database SMS dan isi field DestinationNumber dan TextDecoded (di field TextDecoded isikan lebih dari 153 karakter).

Jika berhasil akan terlihat pecahan sms pada tabel outbox dan tabel outbox_multipart


Dan beberapa saat terlihat juga pada tabel senditems sebagai pesan terkirim.

5 comments:

fajar mengatakan... [Reply to comment]

bagaimana bila diterapkan dalam mode auto broadcast, kan sms lebih dari 153 char akan otomatis di pecah saat masuk di inbox. untuk menyatukan kembali dan menjalankan triger ini bagaimana. trma kasih

Andhika Cipta mengatakan... [Reply to comment]

@fajar
thanks fajar dah berkunjung..
sebenarnya kita bisa ngakalin sendiri untuk menyatukan inbox lebih dari 153 karakter, buat saja satu tabel misal nama tabelnya tempinbox sebagai temporary yang isi fieldnya sama dengan tabel inbox.
nah di tabel inbox kita bikin satu trigger before insert untuk menggabungkan pecahan inbox tadi ke tabel tempinbox, baru di tabel tempinbox kita bisa terapin trigger auto broadcast.

Melly mengatakan... [Reply to comment]

sangat membantu..thx

Denisha Galery mengatakan... [Reply to comment]

trigger before insertnya di coba di aku kok error ya . . kalo after insert sih langsung bisa . . bisa bantu mba?
2 queries executed, 1 success, 1 errors, 1 warnings

Andhika Cipta mengatakan... [Reply to comment]

@Denisha Galery Ada pesan errornya kah ?
Sebelumnya mungkin bisa pastiin dulu semua table sudah dibuat

Posting Komentar