Setelah sebelumnya saya membahas beberapa cara mengirim SMS lewat command inject dan langsung insert di tabel outbox, kali ini saya akan membahas tentang cara mengirim sms dengan isi lebih dari 1 SMS (lebih dari 160 karakter). Ada dua tabel di database yang telah disediakan oleh gammu dalam proses pengiriman lebih dari 1 sms, yaitu tabel outbox dan outbox_multipart. Dimana jika sms lebih dari 160 karakter selanjutnya akan dipecah, pecahan pertama akan di tempatkan di tabel outbox sedangkan pecahan selanjutnya akan di tempatkan di tabel outbox_multipart.





Untuk mengaitkan antar pecahan-pecahan sms tersebut dibuatlah sebuah id yang akan ditempatkan di field yang bernama udh. Kita juga harus mengeset field multipart di tabel outbox menjadi true ketika menginsert ke tabel outbox. Berikut script untuk mengirimkan sms lebih lebih dari 160 karakter

<?
// koneksi ke database
$hostname_config = "localhost";
$database_config = "smsgateway";
$username_config = "root";
$password_config = "root";
$config = mysql_pconnect($hostname_config, $username_config, $password_config) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_config, $config);
// isi pesan yang akan di kirim
$isisms="Jika pada tutorial sebelumnya saya telah mengajarkan bagaimana prosedur instalasi dari gammu, maka kali ini saya akan menuliskan beberapa cara mengirimkan sms lewat gammu. Ada dua cara mengirimkan sms di gammu. Yang pertama melalui command inject, kemudian yang kedua langsung di insert di tabel outbox yang telah disediakan gammu.";
// hitung berapa jumlah sms dengan membaginya dengan 160
$jumsms = ceil(strlen($pesan)/160);
// process jika jumlah sms hanya 1
if($jumsms==1)
{
$query = mysql_query("INSERT INTO outbox (DestinationNumber, TextDecoded, SenderID, CreatorID, Class)
VALUES ('085649921023', '$isisms', 'prolink', 'Gammu', '0')");
}
// process jika jumlah sms lebih dari 1
if($jumsms<>1)
{
// menghitung jumlah pecahan
$hitpecah = ceil(strlen($isisms)/153);
// memecah pesan asli
$pecah = str_split($isisms, 153);
// membuat nilai ID untuk di insert di outbox
$query = "SHOW TABLE STATUS LIKE 'outbox'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$newID = $data['Auto_increment'];
// proses penyimpanan ke tabel outbox dan outbox_multipart untuk setiap pecahan
for ($i=1; $i<=$jmlSMS; $i++)
{
// membuat UDH untuk setiap pecahan, sesuai urutannya
$udh = "050003A7".sprintf("%02s", $hitpecah).sprintf("%02s", $i);
// membaca text setiap pecahan
$msg = $pecah[$i-1];
if ($i == 1)
{
// jika merupakan pecahan pertama, maka masukkan ke tabel OUTBOX
$query = "INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, ID, MultiPart, SenderID, CreatorID, Class)
VALUES ('085649921023', '$udh', '$msg', '$newID', 'true', 'prolink', 'Gammu', '0')";
}
else
{
// jika bukan merupakan pecahan pertama, simpan ke tabel OUTBOX_MULTIPART
$query = "INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition)
VALUES ('$udh', '$msg', '$newID', '$i')";
}
// jalankan query
mysql_query($query);
}
}
?>
view raw gistfile1.txt hosted with ❤ by GitHub