8/19/2019 Artikel Blog Sms Gateway
1/36
. d i a s - x 2 .
c o .
c c
dias's collection
Artikel Blog SMSGATEWAYTrik SMS Gateway dengan Gammu dengan PHP & MySQL
DiasX2
www.dias-x2.co.cc
8/19/2019 Artikel Blog Sms Gateway
2/36
Artikel Blog SMS GATEWAY
Setting Gammu untuk Aplikasi SMS Gateway
Teknik Dasar Mengirim SMS dengan Gammu
Script Auto Reply SMS Gateway dengan PHP
Membuat SMS Gateway Ucapan Ulang Tahun Otomatis dengan
PHP + MySQL
Setting Gammu Untuk Lebih Dari Satu HP/Modem
Menjalankan Script PHP Untuk SMS Gateway Tanpa Autorefresh
Dengan AJAX
Teknik Mengirim Long Text SMS Gammu dengan Query SQL
Cara Supaya Service SMS Daemon Gammu Berjalan Otomatis di
Windows
Cara Membuat Script PHP Untuk Cek Pulsa Dengan Gammu
8/19/2019 Artikel Blog Sms Gateway
3/36
Setting Gammu untuk Aplikasi SMS Gateway
Dalam blog ini saya mencoba menulis artikel dalam ketegori baru yaitu tentang SMS
Gateway. Soalnya agak jenuh juga nulis artikel yang itu-itu saja Nggak ding… mudah-mudahan kejenuhan itu bersifat temporary saja.
OK… untuk mengawali artikel tentang SMS Gateway ini saya akan membahas cara setting
Gammu. Pernahkah Anda mendengar Gammu? Ya.. Gammu adalah semacam service yang
disediakan untuk membangun aplikasi yang berbasis SMS Gateway. Setelah kita sukses
membangun Gammu, maka kita bisa membangun aplikasi SMS Gateway dengan bahasa
program atau platform apapun, baik itu web based dengan PHP maupun ASP atau apapun,
dan juga desktop dengan menggunakan Delphi, VB atau lainnya.
Kelebihan dari Gammu ini adalah merupakan software opensource yang tersedia dalam
bentuk source code atau binary nya, so.. Anda tidak usah khawatir tentang lisensinya. Selain
itu Gammu juga tersedia untuk OS WIndows maupun Linux.
Terkait dengan masalah kemampuan, Gammu tidak perlu diragukan lagi karena selain bisa
untuk mengirim/menerima SMS, Gammu juga dapat mengirim/menerima MMS,
backup/restore phonebook, serta upload/download file ke HP. Selain itu Gammu juga support
untuk lebih dari 400 jenis HP. Anda dapat melihat list HP yang dapat disupport oleh Gammu
di Gammu Phone List Database.
OK… sekarang akan kita bahas cara mensetting Gammu di platform Windows. Untuk yang
di Linux silakan dibaca sendiri di situs resminya ya soalnya saya kurang menguasai Linux.
Dalam artikel ini pembahasan akan sampai dengan cara instalasi service dan menjalankannya.
Langkah Pertama (Download File)
Silakan mendownload Gammunya terlebih dahulu di
http://www.4shared.com/file/248965295/700b07f9/gammu-install.html
Keterangan: file tersebut sudah saya modifikasi dan disederhanakan untuk kemudahan
proses instalasi. Gammu yang saya gunakan tersebut adalah versi 1.25.
Langkah Kedua (Ekstrak File)
Silakan ekstrak file yang telah Anda download tadi di komputer Anda. File hasil ekstrak bisa
Anda letakkan di C:\ atau D:\ atau dimanapun yang Anda inginkan. Dalam contoh ini,
misalkan file diekstrak di C:\ sehingga akan didapatkan folder Gammu nya di C:\gammu.
Langkah Ketiga (Setting Konfigurasi Gammu)
8/19/2019 Artikel Blog Sms Gateway
4/36
Setelah file Gammu diekstrak, langkah berikutnya adalah setting konfigurasi. Setting ini
diperlukan guna keperluan penyesuaian jenis HP dan nomor port yang akan digunakan.
Bagaimana cara settingnya? Caranya adalah silakan edit file „GAMMURC„ yang ada di
dalam direktori „C:\gammu„. Editlah file GAMMURC tersebut menggunakan Notepad atau
sejenisnya.
Trus.. bagian mana yang perlu diubah konfigurasinya? OK.. bagian yang perlu diubah adalah
pada
[gammu]
port =
connection =
parameter port itu nanti diisi dengan nomor port sesuai lokasi colokan HP Anda. Untuk
mengetahui nomor port dimana Anda colokkan HP Anda di komputer, silakan masuk ke
Control Panel – Phone and Modem Options – Modem. Nah… bila HP Anda sudah
tercolok di PC dan drivernya sudah terinstal dengan baik maka pastinya pada bagian tersebut
akan muncul nomor portnya.
Ralat Penting !!
Pada saat artikel ini dibuat, untuk melihat nomor port di mana kita colokkan modem/hp, saya
menuliskan caranya yaitu melalui Control Panel – System – Hardware – Device Manager
– Ports (COM & LPT). Tolong jangan melihat portnya melalui cara tersebut, karena nomor port yang muncul tidak bisa digunakan untuk mengirim long SMS. Nomor port yang muncul
dari cara tersebut hanya bisa untuk mengirim SMS dengan panjang tak lebih dari 160
karakter saja.
Tips: sebaiknya setiap kali HP Anda dicolokkan ke PC, gunakan lokasi port USB yang sama
alias jangan pindah-pindah colokan, karena setiap ganti colokan maka nomor portnya akan
berubah-ubah. Akibatnya Anda musti ubah setting GAMMURC nya berkali-kali pula karena
harus menyesuaikan nomor portnya.
Kembali pada konfigurasi GAMMURC di atas, parameter connection itu digunakan untuk
memberi keterangan jenis koneksi yang digunakan HP untuk berkomunikasi dengan PCnya.
Setiap jenis HP memiliki jenis koneksi yang berbeda-beda. Untuk mengetahui jenis koneksi
pada jenis HP tertentu, silakan download file di sini. File tersebut adalah hasil kompilasi
yang saya lakukan pada jenis-jenis HP yang mendukung SMS Gateway dengan Gammu.
Berikut ini contoh konfigurasi GAMMURC bila saya menggunakan modem Wavecom
M1206B yang terhubung ke port com5 USB.
8/19/2019 Artikel Blog Sms Gateway
5/36
[gammu]
port = com5:
connection = at115200
(Penting: jangan lupa tanda : di belakang port)
Bila Anda gunakan lebih dari satu HP yang tercolok ke PC, maka Anda bisa menambah atau
mengubah konfigurasinya pada bagian
[gammu1]
.
.
[gammu2]
.
.
dst..
Langkah Keempat (Uji Koneksi)
Langkah terakhir untuk proses setting GAMMU ini adalah melakukan uji koneksi antara
Gammu dengan HP/modem Anda. Langkah ini dilakukan setelah proses setting konfigurasi
dilakukan. Caranya adalah dengan masuk folder „C:\gammu„ pada direktori Gammu Anda
via DOS PROMPT. Lalu ketikkan perintah ini pada command promptnya.
gammu identify
Apabila setelah perintah tersebut dienter lalu muncul informasi mengenai HP Anda, maka
koneksi antara Gammu dengan HP Anda sukses. Bila responnya tidak seperti yang
diharapkan, maka cek kembali nomor portnya atau jenis connectionnya. Berikut ini contoh
tampilan yang keluar apabila proses setting berhasil dilakukan
Langkah Kelima (Membuat Database MySQL untuk Gammu)
Langkah ini bertujuan untuk menyiapkan database MySQL untuk menampung data-data SMS
yang diperlukan Gammu untuk SMS Gateway. Sebenarnya tidak hanya MySQL yang bisa
digunakan, namun bisa juga SQL Lite atau Posgre SQL. Namun… dalam artikel ini hanya
untuk MySQL saja deh, karena saya tidak familiar dengan yang lainnya.
8/19/2019 Artikel Blog Sms Gateway
6/36
Caranya adalah buat database dengan nama „sms„ atau yang lain (terserah) menggunakan
phpMyAdmin Anda.
Lalu buatlah tabel-tabel yang diperlukan oleh Gammu. Waduh.. tabelnya apa aja ya? Don’t
worry karena Gammu sudah menyiapkan file dumpnya untuk create tabel. Letak file
dumpnya ada di folder „C:\gammu\tabel-gammu.sql„. Nah.. silakan gunakan file dump
tersebut untuk membuat tabel-tabelnya menggunakan phpMyAdmin.
Pada Gammu sebenarnya SMS tidak hanya bisa disimpan dalam database, namun juga bisa
sebagai file teks yang disimpan di PC Anda. Namun untuk keperluan SMS gateway
sepertinya lebih enak menggunakan database sebagai storagenya.
Langkah Keenam (Setting Konfigurasi Untuk SMS Daemon)
Langkah ini dilakukan setelah setting database untuk Gammu. SMS daemon pada Gammudigunakan untuk proses pembacaan otomatis SMS yang diterima lalu disimpan ke database.
SMS daemon juga diperlukan untuk keperluan pengiriman SMS.
Untuk melakukan setting SMS daemon, bukalah file „SMSDRC„ yang terletak di direktori
„C:\gammu„. Bukalah dengan Notepad atau sejenisnya. Bagian yang diubah adalah:
port = diisi nomor port sesuai yang ada di file GAMMURC
connection = diisi jenis connection sesuai yang ada di GAMMURC
service = mysql (diisi dengan „mysql‟ karena kita akan menggunakan mysql sebagai storage
data SMSnya)user = diisi user database koneksi ke mysql Anda
password = diisi password koneksi ke mysql Anda
pc = diisi nama host mysql (biasanya localhost)
database = sms (atau sesuai nama database yang tadi kita buat)
Contoh konfigurasi yang ditulis
port = com5:
connection = at115200
service = mysqluser = root
password = passwordroot
pc = localhost
database = sms
Catatan: hilangkan tanda # di depan parameter-parameter di atas bila ada.
Langkah Ketujuh (Membuat Gammu Service)
8/19/2019 Artikel Blog Sms Gateway
7/36
Langkah ini bertujuan untuk membuat service Gammu di Windows. Dengan dibuatnya
service di Windows ini kita bisa lebih mudah menjalankannya tanpa menggunakan perintah
tertentu di command prompt.
Untuk membuat Gammu service di Windows, ketikkan perintah ini di DOS PROMPT setelah
Anda masuk ke folder „C:\gammu„.
gammu-smsd.exe -c smsdrc -i
Nah.. bila ada konfirmasi bahwa proses pembuatan service sukses, maka Anda akan melihat
service Gammu muncul pada daftar service yang berjalan di Windows. Service ini bisa dilihat
melalui „CONTROL PANEL > Administrative Tools > Services‟. Nah.. untuk menjalankan
service Gammu ini tinggal klik START pada service Gammu tersebut.
Namun bila proses pembuatan service ini gagal, maka silakan cek kembali konfigurasi
SMSDRC nya atau mungkin nama databasenya salah, atau bisa juga command yang
dituliskan salah.
OK demikian cara setting konfigurasi Gammu di Windows. Untuk artikel selanjutnya akan
dibahas teknik dasar mengirim dan menerima SMS dengan Gammu. Teknik ini akan menjadi
dasar SMS Gateway yang akan dibuat. So.. stay tune terus di blog ini ya
8/19/2019 Artikel Blog Sms Gateway
8/36
Teknik Dasar Mengirim SMS dengan Gammu
Pada artikel sebelumnya, saya sudah paparkan bagaimana cara melakukan setting Gammu
untuk SMS Gateway yang diintegrasikan dengan MySQL. Jika proses setting ini sudah beres,maka selanjutnya kita bisa bermain-main sepuasnya dengan Gammu.
Dalam artikel ini saya akan paparkan bagaimana teknik dasar mengirim SMS dengan Gammu
baik dalam bentuk short text maupun long text. Pada bagian akhir nanti kita akan coba
membuat script sederhana dengan PHP untuk mengirim pesan SMS ini yang diintegrasikan
dengan Gammu melalui sebuah form.
OK.. pada dasarnya dengan Gammu kita bisa mengirim pesan SMS dalam 2 cara yaitu
dengan menggunakan command inject yang sudah disediakan oleh Gammu, atau cara kedua
kita menyisipkan record dengan menggunakan query SQL ke dalam tabel „outbox„. Bila
Anda ingin mengirimkan pesan dengan cara yang kedua ini, terlebih dahulu Anda harus
sudah memiliki database ‟sms‟ dan tabel-tabel yang diperlukan oleh Gammu sebagaimana
sudah saya jelaskan cara instalasinya pada langkah ke-5 dari artikel sebelumnya.
Untuk cara pertama yaitu dengan menggunakan command inject yang disediakan oleh
Gammu, caranya adalah masuklah ke folder/direktori Gammu Anda melalui Command
Prompt di mana terdapat file bernama „gammu-smsd-inject„, lalu ketikkan perintah berikut
ini kemudian tekan ENTER.
gammu-smsd-inject -c pathtoconfigfile TEXT notujuan -text "pesan"
dengan parameter „pathtoconfigfile„ adalah path direktori file „SMSDRC‟ Gammu Anda.
Sebagai contoh misalkan akan dikirim pesan SMS ke no. tujuan +62811000001 dengan pesan
“Hello World”, dan file SMSDRC nya terletak di C:\gammu, maka perintahnya
gammu-smsd-inject -c c:\gammu\smsdrc TEXT +62811000001 -text "Hello World"
Keterangan: tanda petik ganda pada command inject digunakan untuk mengapit string pesan
yang akan dikirim.
Perintah di atas akan mengirimkan pesan SMS dengan maksimum panjang karakternya
adalah 160.
Lantas, bagaimana jika untuk long text atau dengan panjang yang lebih dari itu? Caranya
adalah dengan menggunakan pesan dalam format EMS.
gammu-smsd-inject -c pathtoconfigfile EMS notujuan -text "pesan"
8/19/2019 Artikel Blog Sms Gateway
9/36
8/19/2019 Artikel Blog Sms Gateway
10/36
Perintah exec() dalam PHP digunakan untuk menjalankan perintah command DOS dalam
hal ini adalah perintah command inject nya Gammu.
Karena command inject Gammu pada script di atas menggunakan format EMS maka
memungkinkan kita mengirim SMS dengan jumlah karakter lebih dari 160 buah.
Oya… sebelum Anda menjalankan script di atas, pastikan bahwa service Gammu nya telah
Anda jalankan, dan HP Anda tercolok ke PC
Sekarang… bagaimana bila pengiriman SMS dari script di atas menggunakan query
INSERT? Ini dia scriptnya.
send.php
8/19/2019 Artikel Blog Sms Gateway
11/36
Script Auto Reply SMS Gateway dengan PHP
Setelah sekian lama tidak update blog, kangen rasanya untuk berbagi kembali pada
pengunjung setia blog ini. Dalam postingan kali ini saya akan berbagi ilmu tentang
bagaimana cara membuat script auto reply SMS Gateway dengan PHP dan MySQL. Topikini sebenarnya sudah lama dinantikan oleh beberapa rekan namun baru sempat kali ini saya
mewujudkannya. Maaf ya rekans…
OK deh… masih dengan menggunakan Gammu kita akan membuat contoh studi kasus yaitu
tentang nilai mahasiswa. Adapun skenarionya adalah sbb: andaikan kita telah memiliki data
nilai matakuliah Kalkulus mahasiswa. Nah… untuk melihat nilainya, si mahasiswa tinggal
mengirim pesan melalui SMS dengan format „NILAINIM„ dan dikirim ke nomor HP
tertentu. Selang beberapa waktu si mahasiswa tadi akan mendapat SMS balasan berisi nilai
matakuliah Kalkulus yang diperolehnya secara otomatis. OK paham ya skenarionya?
Sebelum kita bahas lebih lanjut mengenai pembuatan scriptnya, terlebih dahulu kita harus
mengetahui ide pembuatan script auto reply SMS dengan Gammu ini.
Tentu kita sudah ketahui bersama bahwa setiap kali SMS yang diterima oleh Gammu, maka
SMS tersebut akan masuk ke dalam tabel „INBOX„ yang ada di database MySQL. Lantas..
mungkin Anda bertanya, bagaimana cara membedakan mana SMS yang telah diproses dan
yang belum diproses (baru saja masuk)? Jawabannya adalah terletak pada field yang bernama
„Processed„. Begitu ada SMS masuk, maka secara default nilai pada field ini adalah „false„.
Nah… Bila ditemukan record SMS yang bernilai „false‟ ini maka kita bisa proses denganmenggunakan script tertentu. Kemudian setelah data SMS tersebut diproses kita harus segera
mengubah nilainya menjadi „true„ untuk membedakan mana SMS yang telah diproses
dengan yang belum.
Proses di atas ini harus dilakukan setiap saat. Anda dapat menggunakan script PHP atau
script apapun untuk memproses data SMS yang masuk ke dalam INBOX ini. Bila Anda
menggunakan script PHP, maka Anda perlu membuat script auto refresh yang secara
otomatis berjalan pada selang interval waktu tertentu. Proses auto refresh ini bertujuan untuk
mengecek ada tidaknya SMS baru yang masuk sekaligus memprosesnya.
OK… now back to the case… pertama kita siapkan dahulu data nilai Kalkulus mahasiswa
beserta tabelnya.
CREATE TABLE `nilaikalkulus` (
`nim` varchar(10),
`nilai` int(11),
PRIMARY KEY (`nim`)
);
INSERT INTO `nilaikalkulus` VALUES ('M0197001', '80');
INSERT INTO `nilaikalkulus` VALUES ('M0197002', '79');
INSERT INTO `nilaikalkulus` VALUES ('M0197003', '86');
8/19/2019 Artikel Blog Sms Gateway
12/36
Oya, untuk tabel di atas Anda bisa buat pada satu database yang sama dengan tabel-tabel
bawaannya Gammu atau bisa juga berbeda.
Selanjutnya, kita buat script PHP untuk pemrosesannya. Oya.. pastikan bahwa keyword dari
perintah SMS yang dikirimkan adalah sesuai dengan format. Untuk memastikan bahwa
keyword dari perintah itu benar, Anda harus membuat parsing terlebih dahulu. Jika format
perintah benar maka SMS akan diproses untuk mengirimkan nilainya. Namun jika tidak
sesuai, maka tetap diproses dengan mengirimkan pesan kesalahan dalam bentuk SMS pula.
Hal terpenting… jangan lupa mengubah status ‘processed’ menjadi ‘true’ pada setiap
SMS yang telah diproses di dalam tabel INBOX nya.
Nah.. ini dia scriptnya untuk membuat auto reply, lengkap saya sertakan penjelasannya dalam
bentuk komentar.
8/19/2019 Artikel Blog Sms Gateway
13/36
if (mysql_num_rows($hasil2) == 0) $reply = "NIM tidak ditemukan";
else
{
// bila nilai ditemukan
$data2 = mysql_fetch_array($hasil2);
$nilai = $data2['nilai'];
$reply = "Nilai Kalkulus Anda: ".$nilai;
}
}
else $reply = "Maaf perintah salah";
// membuat SMS balasan
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES
('$noPengirim ', '$reply')";
$hasil3 = mysql_query($query3);
// ubah nilai 'processed' menjadi 'true' untuk setiap SMS yang telahdiproses
$query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id '";
$hasil3 = mysql_query($query3);
}
?>
Oya… mungkin Anda bertanya, mengapa untuk proses parsing di atas pesan SMS nya perlu
dibuat huruf kapital dengan strtoupper(). Ya… hal ini perlu karena supaya ada keseragaman
bentuk pesan. Karena terkadang SMS dikirim dengan huruf kapital semua, kecil semua atau
campuran. Bila tidak seragam, maka sulit dalam proses memparsingnya, karena string
„NILAI‟ dengan „nilai‟ itu berbeda sehingga bila ditulis huruf kecil semua nantinya bisa
dianggap perintah salah. Nah.. supaya seragam, maka setiap SMS yang masuk kita buat
kapital semua saja.
Keterangan:
Cara pengiriman pesan balasan pada script di atas, saya menggunakan teknik insert data pada
tabel OUTBOX dengan query SQL. Anda dapat mempelajari kembali teknik ini serta
menggunakan teknik lain dengan membaca artikel saya tentang „Teknik Dasar Mengirim
SMS dengan Gammu„.
Selanjutnya supaya script di atas berjalan secara otomatis mengecek SMS yang masuk, Anda
harus buat auto refresh dalam selang beberapa detik.
sms.php
8/19/2019 Artikel Blog Sms Gateway
14/36
SMS server running....
8/19/2019 Artikel Blog Sms Gateway
15/36
$query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES
('$noPengirim ', '$reply')";
$hasil3 = mysql_query($query3);
// ubah nilai 'processed' menjadi 'true' untuk setiap SMS yang telah
diproses
$query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id '";
$hasil3 = mysql_query($query3);
}
?>
Sebenarnya untuk memproses SMS dan memberikan auto reply, selain dengan auto script
menggunakan auto refresh seperti di atas, Anda dapat pula menggunakan TRIGGER di
MySQL nya. Namun.. bagi yang belum terbiasa membuatnya seperti saya, mungkin agak
repot, apalagi bila panjang text auto reply nya di atas 160 karakter.
OK deh.. selamat mencobanya, dan silakan berkreasi sendiri ya… Anda dapat menambahkan
keyword lain atau format SMS lain yang lebih dari satu.
8/19/2019 Artikel Blog Sms Gateway
16/36
Membuat SMS Gateway Ucapan Ulang Tahun Otomatis
dengan PHP + MySQL
Seperti yang pernah saya janjikan dahulu, saya akan mencoba memposting artikel tentangaplikasi SMS gateway untuk membuat SMS ucapan ulang tahun secara otomatis dalam blog
ini.
Jika Anda punya banyak teman dan Anda memiliki data tanggal lahir semua teman Anda,
maka mudah-mudahan script yang dibahas dalam artikel ini akan bermanfaat. Oleh teman
Anda, Anda akan dianggap sebagai teman yang sangat perhatian, karena setiap kali sang
teman berulang tahun maka SMS ucapan ultah selalu terkirim ke dia tepat waktu tanpa
meleset 1 hari pun, 1 jam bahkan 1 menit pun (kalo waktu di komputer Anda sama dengan
waktu di rumah teman Anda … he 3x). Tapi jangan bilang ke temen Anda, bhw yangmengirim SMS ucapan ultah adalah program komputer ya
OK, untuk membuat SMS ucapan ulang tahun otomatis ini kita memerlukan Gammu sebagai
SMS daemonnya, HP tentu saja dan sebuah komputer yang senantiasa ON terus. Mengapa
haris ON terus komputernya? ya.. kalo pas ada temen Anda yang ulang tahun namun
kebetulan komputer Anda lagi mati, ya… SMS nya gak bisa terkirim. It makes sense, doesn’t
it ? Oya, satu lagi Anda perlu XAMPP atau AppServ untuk menjalankan programnya,
karena kita akan membuatnya menggunakan PHP + MySQL. Untuk mengetahui cara
instalasi Gammu dan bagaimana cara mengintegrasikannya dengan MySQL silakan baca
artikel cara setting Gammu.
Trus… untuk tabel datanya, apa saja yang dibutuhkan?
Untuk keperluan ini, kita buat 2 buah tabel. Tabel pertama untuk menyimpan data teman
Anda. Data apa saja yang disimpan? cukup nama, nomor HP dan tanggal lahirnya saja. Tabel
ini kita namai „friends‟. Kemudian tabel kedua untuk menyimpan data SMS ucapan ultah
yang telah terkirim ke teman Anda. Tabel ini kita namai „kirim‟. Untuk tabel „kirim‟ cukup
memiliki field nomor HP dan tanggal kirim SMS saja. Tabel ini berfungsi sebagai pencegah
pengiriman SMS ucapan secara berulang, karena script yang kita buat ini nanti menggunakan
Auto Refresh atau dengan kata lain script ini berjalan secara otomatis pada selang waktu
tertentu. Tanpa adanya tabel kedua ini, maka proses pengiriman SMS ucapan ultah bisa
dilakukan beberapa kali. Oleh karena itu untuk tabel kedua ini, field nomor HP dan tanggal
kirim SMS kita buat sebagai primary key.
Nah.. untuk kedua tabel di atas, berikut ini struktur tabel dan contoh datanya
CREATE TABLE `friends` (
`noHP` varchar(30),
`nama` varchar(100),
`tglLahir` date,
PRIMARY KEY (`noHP`)
8/19/2019 Artikel Blog Sms Gateway
17/36
);
CREATE TABLE `kirim` (
`noHP` varchar(30),
`tglKirim` date,
PRIMARY KEY (`noHP`,`tglKirim`)
);
INSERT INTO `friends` VALUES ('08881111111', 'A', '1979-02-21');
INSERT INTO `friends` VALUES ('08120101010', 'B', '1980-09-07');
INSERT INTO `friends` VALUES ('08562810000', 'C', '1986-03-10');
Kedua tabel di atas nantinya dibuat di dalam database yang sama dengan tabel-tabel bawaan
dari Gammu, seperti tabel INBOX, OUTBOX, SENTITEMS dsb…
Kemudian bagaimana ide dari script SMS ucapan ulang tahun ini. Idenya adalah pertama kali
kita cari dulu data teman yang ada di tabel „friends‟ yang tanggal lahir dan bulan lahirnya
sama dengan saat ini (current date). Untuk tahun lahirnya tidak usah diperhatikan saja.
Kemudian bila ada data teman yang tanggal dan bulan lahirnya sesuai dengan current date,
kita baca nomor HP dan namanya. Proses selanjutnya adalah jangan langsung mengirim SMS
ucapannya, namun kita simpan data nomor HP dan current date nya ke tabel „kirim‟. Jika
proses insert atau simpan data ke tabel „kirim‟ ini berhasil barulah kita kirim SMS ucapannya
ke tabel „OUTBOX‟ yang sudah disediakan oleh Gammu. Namun jika gagal, berarti SMS
ucapan sebelumnya sudah pernah terkirim. Proses insert data ke tabel „kirim‟ ini gagal jika
terdapat data nomor HP dan tanggal kirim yang sama, mengingat kedua field tersebut adalah
primary key. Dengan demikian pasti ada jaminan bahwa SMS ucapan yang terkirim ke teman
Anda tidak dilakukan berulang kali pada hari yang sama. Lantas bagaimana bila ulang
tahunnya pada tahun depan? ya tidak ada masalah, kan current date nya sudah berbeda?sehingga proses insert data ke tabel „kirim‟ pasti berhasil pada tahun depan.
Berdasarkan ide di atas, berikut ini implementasi script PHP nya:
SMS Ulang Tahun
8/19/2019 Artikel Blog Sms Gateway
18/36
// baca bulan sekarang
$blnNow = date("m");
// baca tahun-bulan-tanggal sekarang
$now = date("Y-m-d");
// cari data teman yang bulan lahir dan tanggal lahir sesuai pada current
date
$query = "SELECT * FROM friends WHERE DAY(tglLahir) = '$tglNow' AND
MONTH(tglLahir) = '$blnNow'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
// baca nomor HP dan nama teman
$noHP = $data['noHP'];
$nama = $data['nama'];
// insert data ke tabel kirim $query2 = "INSERT INTO kirim (noHP, tglKirim) VALUES ('$noHP', '$now')";
$hasil2 = mysql_query($query2);
// jika proses insert ke tabel kirim sukses maka kirim sms ucapan
if ($hasil2)
{
// isi pesan SMS ucapan ultah, disertai nama temannya
$pesanSMS = "Wahai sahabatku ".$nama.", Happy Birthday !! Semoga
dengan bertambahnya usiamu, semakin bertambah pula amalan ibadahmu.";
// proses kirim sms via insert data ke tabel outbox $query2 = "INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES
('$noHP', '$pesanSMS')";
mysql_query($query2);
}
}
?>
Script di atas akan melakukan autorefresh setiap 10 detik. Perhatikan perintah di bawah ini
8/19/2019 Artikel Blog Sms Gateway
19/36
Menjalankan Script PHP Untuk SMS Gateway Tanpa
Autorefresh Dengan AJAX
Sebenarnya sudah lama niat saya untuk artikel ini, tapi maaf baru kesampaian sekarang.
Sepertinya para fans blog ini sudah gak sabar Artikel ini didasarkan pada hasil eksperimen
pribadi yang awalnya hanya bersifat iseng-iseng saja. Dari judul artikel di atas, tentu Anda
sudah bisa memperkirakan apa isi artikel ini yaitu cara alternatif menjalankan script PHP
untuk memproses SMS gateway tanpa autorefresh browser. Dalam hal ini pembahasan hanya
dibatasi untuk SMS Gateway dengan Gammu.
Pada artikel-artikel sebelumnya, seringkali saya membuat contoh-contoh script PHP untuk
memproses SMS yang masuk ke database menggunakan konsep autorefresh setiap n detik
atau menjalankan script berulang-ulang secara otomatis setiap n detik. Namun konsep initerkadang kurang cocok untuk browser yang menolak autorefresh. Beberapa rekan-rekan
mengeluh karena browsernya tidak bisa melakukan autorefresh yang kemungkinan
disebabkan settingan di browsernya. Dengan autorefresh yang sering tersebut, terkadang
browser menganggap adanya suatu program abnormal.
Dari hal di atas, maka saya menggunakan pendekatan lain untuk menjalankan script PHP
pengolah SMS gateway tersebut bukan lagi menggunakan autorefresh namun menjalankan
script PHP nya di balik layar (browser) menggunakan AJAX (Asynchronous Javascript And
XML).
Pada prinsipnya, penggunaan AJAX untuk menjalankan script PHP pengolah SMS gateway
ini hampir sama dengan autorefresh, namun perbedaannya hanyalah autorefreshnya dilakukan
di balik layar browser. Untuk proses autorefreshnya sendiri nanti menggunakan Javascript
dan bukannya meload script ke browser seperti sebelumnya.
Lantas.. bagaimana implementasinya? OK, andaikan kita memiliki script PHP bernama
“script.php” untuk mengolah SMS gatewaynya, dan juga halaman “index.htm” untuk
halaman utama tampilan. Maka isi struktur dari halaman index.htm adalah sbb:
index.htm
SMS Server
SMS SERVER
.
.
8/19/2019 Artikel Blog Sms Gateway
20/36
Keterangan:
File „ajax.js‟ merupakan file berisi script Javascript untuk menjalankan AJAX
Sedangkan function „autorefresh()‟ adalah function untuk menjalankan autorefresh
pada ‟script.php‟. Function ini nantinya diletakkan dalam ajax.js.
Selanjutnya, bagaimana isi script ajax.js nya? OK ini dia isinya
ajax.js
var page = "script.php";
function autorefresh(page) {
if (window.XMLHttpRequest) { req = new XMLHttpRequest();
req.open("GET", page, true);
req.send(null);
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLDOM");
if (req) {
req.open("GET", page, true);
req.send(null);
}
}
setTimeout("autorefresh(page)", 5000);
}
Javascript di atas akan melakukan autorefresh menggunakan AJAX pada setiap interval 5
detik (5000 milisekon). Anda bisa mengatur sendiri lama intervalnya pada bagian
setTimeout("autorefresh(page)", 5000);
OK… that‟s all. Nah… Script mana yang nantinya dijalankan di browser? yang dijalankan
cukup file index.htm saja. Untuk script.php nya tidak perlu dijalankan karena yang
menjalankan adalah script AJAX nya.
Sekarang saya akan mengambil contoh implementasi pendekatan di atas pada kasus SMS
Ulang Tahun yang pernah dibahas.
Misalkan kita punya script PHP untuk memproses SMSnya sbb:
ultah.php
8/19/2019 Artikel Blog Sms Gateway
21/36
mysql_select_db("dbname");
// baca tanggal sekarang
$tglNow = date("d");
// baca bulan sekarang
$blnNow = date("m");
// baca tahun-bulan-tanggal sekarang
$now = date("Y-m-d");
// cari data teman yang bulan lahir dan tanggal lahir sesuai pada current
date
$query = "SELECT * FROM friends WHERE DAY(tglLahir) = '$tglNow' AND
MONTH(tglLahir) = '$blnNow'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{ // baca nomor HP dan nama teman
$noHP = $data['noHP'];
$nama = $data['nama'];
// insert data ke tabel kirim
$query2 = "INSERT INTO kirim (noHP, tglKirim) VALUES ('$noHP', '$now')";
$hasil2 = mysql_query($query2);
// jika proses insert ke tabel kirim sukses maka kirim sms ucapan
if ($hasil2)
{ // isi pesan SMS ucapan ultah, disertai nama temannya
$pesanSMS = "Wahai sahabatku ".$nama.", Happy Birthday !! Semoga
dengan bertambahnya usiamu, semakin bertambah pula amalan ibadahmu.";
// proses kirim sms via insert data ke tabel outbox
$query2 = "INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES
('$noHP', '$pesanSMS')";
mysql_query($query2);
}
}
?>
Berikutnya kita buat javascript „ajax.js‟ untuk AJAX nya sbb:
ajax.js
// setting file tujuan autorefresh via AJAX
var page = "ultah.php";
function autorefresh(page) {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.open("GET", page, true);
8/19/2019 Artikel Blog Sms Gateway
22/36
req.send(null);
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLDOM");
if (req) {
req.open("GET", page, true);
req.send(null);
}
}
setTimeout("autorefresh(page)", 5000);
}
Sedangkan isi dari file index.htm nya adalah
index.htm
SMS Server
SMS SERVER ULANG TAHUN
OK begitulah contoh implementasi pendekatan AJAX untuk mengolah data SMS dengan
script PHP. Mudah-mudahan artikel ini bermanfaat.
8/19/2019 Artikel Blog Sms Gateway
23/36
Setting Gammu Untuk Lebih Dari Satu HP/Modem
Dalam artikel yang lain, saya telah memaparkan cara setting Gammu. Namun pembahasan
tersebut hanya pada cara setting untuk 1 buah HP/modem saja. Lantas bagaimana bilaHP/modem yang ingin dipasang lebih dari satu? Trus… misalkan ada 2 HP/modem misalkan
A dan B, gimana cara mengirim SMS dengan Gammu melalui HP/modem A atau B?
Temukan jawabannya di artikel ini.
Bila Anda masih bingung dengan penjelasannya, sebaiknya baca dulu artikel sebelumnya
yang membahas setting gammu untuk sebuah HP/modem.
OK kita mulai pembahasannya ya. Kita mulai bahas dulu cara setting Gammu untuk lebih
dari satu HP/modem dahulu. Di sini saya andaikan akan memasang 2 buah HP/modem.
Untuk HP/modem sejumlah 3, 4 atau lebih caranya sama persis.
Berikut ini adalah cara setting Gammu untuk 2 buah HP/modem atau lebih:
Langkah 1.
Silakan colokkan HP/modem yang Anda ingin instal di Gammu ke sembarang port komputer
(lihat gambar di bawah)
Keterangan:
Pada gambar di atas, saya ingin menginstal 2 buah HP di notebook Sony Ericcsson W200i
kesayangan saya yang kini mau saya jual hiks…
Oya… Pastikan 2 buah HP/modem tersebut sudah dikenali oleh komputernya. Gimana
caranya? ya.. tentu saja harus menginstal drivernya dulu. Untuk mengecek apakah sudah
dikenali atau belum, Anda bisa lihat di Control Panel – Phone and Modems Option –
Modem.
http://blog.rosihanari.net/dijual-sony-ericcson-w200i-gammu-sms-gateway-supporthttp://blog.rosihanari.net/dijual-sony-ericcson-w200i-gammu-sms-gateway-supporthttp://blog.rosihanari.net/dijual-sony-ericcson-w200i-gammu-sms-gateway-support
8/19/2019 Artikel Blog Sms Gateway
24/36
Ralat Penting!!
Pada saat artikel ini dibuat, untuk melihat nomor port di mana kita colokkan modem/hp kita,
saya menyarankan melalui Control Panel – System – Hardware – Device Manager, dan
lihat bagian Ports (COM & LPT). Tolong jangan melihat portnya melalui cara tersebut,
karena nomor port yang muncul tidak bisa digunakan untuk mengirim long SMS. Nomor port
yang muncul dari cara tersebut hanya bisa untuk mengirim SMS dengan panjang tak lebih
dari 160 karakter saja.
Langkah 2.
Setelah kedua HP dikenali oleh komputer, sekaligus nomor portnya sudah diketahui yaitu
misalnya COM8 dan COM17, selanjutnya adalah mengedit file GAMMURC nya yang ada di
direktori Gammu Anda. Karena ada 2 buah HP/modem, maka kita edit konfigurasinya pada
bagian [gammu] dan [gammu1]. Settinglah parameter port dan connection pada keduanya.Berikut ini contoh konfigurasi GAMMURC dari kasus di atas.
[gammu]
port = com8:
connection = at115200
.
.
[gammu1]
port = com17:
connection = at115200.
.
Bila Anda ingin menambahkan HP/modem ke tiga, maka cukup Anda tambahkan sendiri
konfigurasi untuk
[gammu2]
port = com17:
connection = at115200
.
.
begitu seterusnya…
Langkah 3.
Setelah file GAMMURC diedit menyesuaikan jenis HP/modem dan port nya, langkah
berikutnya adalah mengecek apakah kedua HP/modem sudah dapat dideteksi oleh
Gammunya. Untuk melakukan hal ini adalah dengan mengetikkan perintah berikut ini pada
direktori Gammu Anda melalui command prompt:
gammu 0 identify
8/19/2019 Artikel Blog Sms Gateway
25/36
Keterangan: perintah di atas untuk mengecek apakah Gammu sudah dapat mengenali
HP/modem yang tercolok ke port COM8.
dan perintah
gammu 1 identify
Keterangan: perintah di atas untuk mengecek apakah Gammu sudah dapat mengenali
HP/modem yang tercolok ke port COM17.
Untuk mengecek HP/modem ke tiga, perintah yang Anda gunakan adalah
gammu 2 identify
begitu seterusnya.
Dalam contoh ini, apabila kedua HP sudah dikenali oleh Gammu maka hasil dari kedua
perintah di atas akan tampak informasi tentang HP/modem Anda sebagaimana gambar di
bawah ini.
Langkah 4.
Setelah GAMMURC dimodifikasi, langkah berikutnya adalah mengedit di file SMSDRC nyayang ada di direktori Gammu Anda. Karena Anda menggunakan lebih dari satu HP/modem,
maka file SMSDRC nya juga dibuat lebih dari satu sejumlah HP/modem Anda. Trus.. nama
filenya apa donk? Anda bisa beri nama filenya terserah, misalnya: SMSDRC1, SMSDRC2,
dst… dengan cara merename nama file aslinya.
Berikut ini contoh isi konfigurasi untuk file SMSDRC1 yang nantinya akan kita kaitkan
dengan HP/modem yang tercolok di port COM8. Ubahlah pada bagian parameter tertentu
saja seperti pada contoh ini bila Anda ingin Gammunya diintegrasikan dengan MySQL.
[gammu]port = com8:
8/19/2019 Artikel Blog Sms Gateway
26/36
connection = at115200
.
.
service = mysql
.
.
phoneid = Phone1
.
.
user = dbuser
password = dbpass
pc = localhost
database = dbname
Keterangan:
Perhatikan konfigurasi di atas! Di situ terdapat parameter „phoneid‟. Phoneid ini pentingkarena nantinya digunakan untuk penanda ketika kita menerima atau mengirim sms.
Misalkan kita ingin mengirim sms via HP yang tercolok di port COM8, maka kita gunakan
phoneid tersebut ketika proses mengirimnya. Dalam contoh ini, HP/modem yang tercolok di
COM8 ini dinamai „Phone1′. Hilangkan tanda # di depan parameter phoneid bila ada.
dan berikut contoh isi konfigurasi file SMSDRC2 yang nantinya kita kaitkan dengan
HP/modem yang tercolok di port COM17.
[gammu]
port = com17:connection = at115200
.
.
service = mysql
.
.
phoneid = Phone2
.
.
user = dbuser
password = dbpass
pc = localhost
database = dbname
Keterangan:
Dalam contoh ini, HP/modem yang tercolok di port COM17 dinamai „Phone2′ pada phoneid
nya.
Langkah 5.
Setelah file SMSDRC kita buat sejumlah HP/modem nya, langkah berikutnya adalah
menginstal servicenya. Karena jumlah HP/modem yang digunakan lebih dari satu, maka kita
8/19/2019 Artikel Blog Sms Gateway
27/36
buat servicenya juga lebih dari satu. Berikut ini perintah untuk membuat servicenya melalui
command prompt di dalam direktori Gammu.
gammu-smsd.exe -c namafilesmsdrc -n namaservice -i
Keterangan:
„namafilesmsdrc‟ nanti diganti dengan nama file SMSDRC yang telah kita buat sebelumnya,
dan „namaservice‟ kita ganti dengan nama service yang kita inginkan.
Berikut ini perintah untuk menginstal service untuk HP/modem yang tercolok ke port COM8
yang menggunakan file SMSDRC1 sebagai konfigurasinya, dan servicenya kita beri nama
(gammu1). Untuk nama servicenya kita bisa tentukan sembarang (terserah), asal untuk nama
service yang satu dengan yang lain berbeda.
gammu-smsd.exe -c smsdrc1 -n gammu1 -i
dan berikut ini perintah untuk menginstal service untuk HP/modem yang tercolok ke port
COM17 yang menggunakan file SMSDRC2 sebagai konfigurasinya, dan servicenya kita beri
nama (gammu2).
gammu-smsd.exe -c smsdrc2 -n gammu2 -i
Cara yang sama juga dilakukan untuk 3 buah HP/modem atau lebih.
Apabila kedua service telah sukses dibuat, maka di bagian CONTROL PANEL –
ADMINISTRATIVE TOOLS – SERVICES akan muncul kedua service yang telah dibuat,
sebagaimana tampak pada gambar di bawah ini
Untuk menjalankan servicenya, tinggal double klik saja pada kedua service tersebut.
OK proses setting/instalasi Gammu dengan lebih dari satu HP/modem sudah selesai.
Sekarang kita telusuri di tabel MySQL nya. Kita akan lihat pengaruh dari instalasi lebih dari
satu HP/modem ini.
8/19/2019 Artikel Blog Sms Gateway
28/36
Kita telusuri dulu data SMS yang masuk ke tabel INBOX apabila ada sms yang diterima dari
salah satu HP/modem yang sudah terinstal di Gammunya. Apabila ada SMS yang masuk
melalui salah satu HP/modem yang sudah terinstal di Gammu, maka pada bagian field
„RecipientID‟ akan muncul nama phoneid sesuai yang sudah kita setting di SMSDRC nya
tadi. Perhatikan gambar berikut ini yang menunjukkan isi tabel INBOX setelah beberapaSMS masuk melalui HP/modem yang terinstal di Gammu,
Jika field „RecipientID‟ nya muncul „Phone1′ berarti SMS tersebut diterima oleh HP/modem
yang tercolok di port COM8. Demikian pula bila yang diterima oleh HP/modem yang
tercolok di COM17, yang akan menampilkan „Phone2′ pada field RecipientID nya.
Selanjutnya bagaimana bila kita ingin mengirim SMS dengan Gammu melalui HP/modem
tertentu yang sudah terinstal? Caranya mudah sekali kawan, yaitu tinggal kita tentukan saja
nama phoneid nya, lalu phoneid ini kita masukkan ke field „SenderID‟, contoh:
INSERT INTO outbox (DestinationNumber, TextDecoded, SenderID)
VALUES ('085728434754', 'Test', 'Phone1')
Contoh di atas adalah perintah SQl untuk mengirim SMS ke no 085728434754 (no HP saya
he3x ) melalui HP/modem yang tercolok ke port COM8.
Nah… mudah bukan settingnya? selamat mencoba ya…
8/19/2019 Artikel Blog Sms Gateway
29/36
Teknik Mengirim Long Text SMS Gammu dengan Query
SQL
Pada artikel yang lalu, saya pernah menulis topik Teknik Dasar Mengirim SMS denganGammu. Dalam artikel tersebut salah satunya adalah pembahasan tentang teknik mengirim
SMS dengan panjang karakter lebih dari 160 karakter (long text SMS ) yaitu dengan command
“gammu-smsd-inject”. Nah.. pada artikel kali ini saya akan menjelaskan cara mengirim long
text SMS Gammu menggunakan query SQL.
Kelemahan mengirim long text SMS dengan command “gammu-smsd-inject” adalah
lambatnya proses bila diintegrasikan dengan script PHP. Dari hasil eksperiman sendiri,
ceilee… , untuk mengirim long text SMS ke lebih dari 500 nomor dengan menggunakan
command “gammu-smsd-inject” yang diintegrasikan dengan script PHP butuh waktu lebihdari 30 detik. Bisa dibayangkan bila digunakan untuk mengirim ke ribuan nomor sekaligus.
Tentu running timenya lebih lama. Sedangkan kelebihan mengirim long text SMS dengan
query SQL adalah running time yang jauh lebih cepat dibandingkan command “gammu-
smsd-inject”. Namun.. di sisi lain, kekurangannya adalah agak rumitnya membuat script
untuk melakukan hal ini. Sedangkan kelebihan dari command “gammu-smsd-inject” adalah
perintahnya jauh lebih mudah dibandingkan via script query SQL. Akan tetapi mengingat
kelebihannya yang lebih efisien, saya kira kesulitan untuk membuat script pengiriman long
text SMS dengan query tak perlu dipermasalahkan, toh… saya akan beberkan caranya di sini
So.. gimana teknik pengiriman long text SMS Gammu dengan query SQL? OK tekniknya
adalah kita harus split atau memecah-mecah dahulu text SMS yang akan kita kirimkan. Untuk
setiap pecahan terdiri dari text yang panjangnya 153 karakter. Jadi misal kita punya text SMS
dengan panjang 400 karakter, maka sebelum dikirim dengan Gammu, kita harus split textnya
menjadi 3 bagian, yaitu pecahan pertama terdiri dari 153 karakter, pecahan kedua 153
karakter dan pecahan ketiga 94 karakter.
Mungkin Anda bertanya, gimana caranya memecah-mecah text atau string dengan panjang
153 karakter tsb? Lho… kan sudah pernah saya bahas caranya di artikel Teknik MemecahString Menjadi Substring Dengan Jumlah Karakter Sama.
Setelah kita pecah text SMS asli ke dalam n pecahan dengan panjang maks 153 karakter,
selanjutnya pecahan bagian pertama kita masukkan ke dalam tabel OUTBOX, sedangkan
pecahan yang lain dimasukkan ke tabel OUTBOX_MULTIPART
Adapun query untuk memasukkan text pecahan pertama ke tabel OUTBOX adalah sbb:
INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, MultiPart)
VALUES ('NO TELP TUJUAN', 'KODE UDH', 'ISI TEXT PECAHAN KE-1', 'true')
8/19/2019 Artikel Blog Sms Gateway
30/36
Perhatikan, bahwa khusus untuk long text SMS, kita set nilai „true‟ pada field „MultiPart‟,
dan ada pula kode UDH. Wah apaan tuh UDH? Nanti saya akan jelaskan.
Selanjutnya perintah query untuk memasukkan text pecahan ke tabel
OUTBOX_MULTIPART adalah sbb:
INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition)
VALUES ('KODE UDH', 'ISI TEXT PECAHAN', 'NO ID', 'NO URUT PESAN')
Keterangan:
NO ID adalah nomor id dari pesan pecahan pertama yang telah disimpan ke tabel
OUTBOX. Misal pecahan pertama setelah dimasukkan ke tabel OUTBOX memiliki
ID = 100, maka dalam query SQL untuk memasukkan pecahan text ke tabel
OUTBOX_MULTIPART juga harus menggunakan NO ID = 100.
NO URUT PESAN adalah nomor urutan pesan dari pesan utuhnya.
UDH adalah kode header untuk menunjukkan urutan pecahan text SMS. Kode UDH ini
terdiri dari 12 digit yang memiliki format sbb:
AAAAAAAA XX YY dimana AAAAAAAA itu adalah kode random dalam format hexadesimal, XX
itu menunjukkan jumlah pecahan SMS, dan YY menunjukkan nomor urutan pecahan.
Salah satu kode random hexadesimal yang bisa digunakan adalah „050003A7„, atau Anda
juga bisa memilih sendiri kode random yang lain.
Contoh UDH untuk sebuah pesan adalah sbb:
050003A7 10 02.
Pada kode di atas, nilai 10 menunjukkan bahwa pesan tersebut total terdiri dari 10 pecahan
SMS, dan UDH tersebut adalah milik pesan ke 2 (perhatikan nilai „02′).
Sebagai gambaran misalkan kita punya teks SMS asli sbb:
Perkenalkan Nama Saya Rosihan Ari Yuana. Saya Memiliki Tiga Anak, Dua Diantaranya
Laki-Laki Dan Satu Orang Perempuan. Saya Juga Punya Seorang Istri Yang Saya Cintai.
Rumah Saya Di Colomadu Karanganyar. Saya Lahir Di Boyolali Tiga Puluh Tahun Yang
Lalu. Sekarang Saya Mengajar Di Salah Satu Perguruan Tinggi Di Kota Solo, Yaitu
Universitas Sebelas Maret.
Panjang karakter text SMS di atas adalah 353 buah.
Karena pesan tersebut panjangnya lebih dari 160 karakter, maka langkah pertama kita harus
split dahulu menjadi beberapa pecahan string dengan panjang maks 153 untuk setiap
pecahannya. Berikut ini hasil pecahannya
8/19/2019 Artikel Blog Sms Gateway
31/36
Pecahan ke-1 : Perkenalkan Nama Saya Rosihan Ari Yuana. Saya Memiliki Tiga Anak, Dua
Diantaranya Laki-Laki Dan Satu Orang Perempuan. Saya Juga Punya Seorang Istri Yang
Pecahan ke-2 : Saya Cintai. Rumah Saya Di Colomadu Karanganyar. Saya Lahir Di Boyolali
Tiga Puluh Tahun Yang Lalu. Sekarang Saya Mengajar Di Salah Satu Perguruan Tinggi
Pecahan ke-3 : Di Kota Solo, Yaitu Universitas Sebelas Maret.
Panjang pecahan ke-1 dan ke-2 adalah 153 karakter, dan pecahan ke-3 panjangnya 47
karakter.
Setelah dipecah, selanjutnya kita simpan pecahan ke-1 ke tabel OUTBOX
INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, MultiPart)
VALUES ('NO TELP TUJUAN', '050003A70301', 'Perkenalkan Nama Saya Rosihan
Ari Yuana.
Saya Memiliki Tiga Anak, Dua Diantaranya Laki-Laki Dan Satu Orang
Perempuan. Saya JugaPunya Seorang Istri Yang ', 'true');
Perhatikan nilai UDH dari pecahan pertama di atas, yaitu 050003A70301. Nilai „03′ dari
„0301′ menunjukkan total pecahan ada 3 buah, dan „01′ dari „0301′ menunjukkan urutan
pecahan.
Selanjutnya misalkan ID dari record hasil query di atas adalah 200 (lihat field ID record di
atas pada tabel OUTBOX), maka kita gunakan ID = 200 ini untuk proses penyimpanan
pecahan yang ke-2 dan ke-3 di tabel OUTBOX_MULTIPART nya.
Perintah query untuk menyimpan pecahan ke-2 ke tabel OUTBOX_MULTIPART:
INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition)
VALUES ('050003A70302', 'Saya Cintai. Rumah Saya Di Colomadu Karanganyar.
Saya Lahir Di
Boyolali Tiga Puluh Tahun Yang Lalu. Sekarang Saya Mengajar Di Salah Satu
Perguruan
Tinggi', '200', '2');
Perhatikan nilai UDH dari pecahan kedua di atas, yaitu 050003A70302.
Perintah query untuk menyimpan pecahan ke-3 ke tabel OUTBOX_MULTIPART:
INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition)
VALUES ('050003A70303', 'Di Kota Solo, Yaitu Universitas Sebelas Maret.',
'200', '3');
Perhatikan nilai UDH dari pecahan kedua di atas, yaitu 050003A70303.
Nah.. dah paham kan konsepnya? OK sekarang saya berikan script khusus untuk mengirim
long text SMS sebagaimana ide di atas.
8/19/2019 Artikel Blog Sms Gateway
32/36
8/19/2019 Artikel Blog Sms Gateway
33/36
Cara Supaya Service SMS Daemon Gammu Berjalan
Otomatis di Windows
sudah diinstall di komputer dapat berjalan secara otomatis begitu komputer dihidupkan (start
automatically)? Jika ya, maka mudah-mudahan artikel ini bisa bermanfaat bagi Anda.
Mungkin Anda bertanya dalam hati pada saya: “ Lho mas/pak, bukankah di service Gammu
yang ada Windows sudah otomatis berjalan? kan kalau dilihat di Control Panel >
Administrative Tools > Services tampak bahwa Startup Type dari service Gammu sudah
tertulis Automatic?”
Iya.. sih.. tampaknya begitu, namun kenyataannya Anda tetap harus menjalankannya secara
manual. Saya juga tidak mengerti kenapa hal ini terjadi. Mungkin ini bug dari service
Gammu kali ya? ah.. yang ngomong demikian tidak lebih pintar dari yang buat Gammu positive thinking aja ah…
OK… bagi Anda yang sudah berhasil membuat service SMSD di Gammu, dan ingin supaya
service tersebut berjalan otomatis begitu komputer dihidupkan, cobalah menjalankannya
dengan menggunakan BATCH FILE. Di dalam batch file tersebut nantinya kita tuliskan
perintah untuk menjalankan service Gammu nya. Supaya perintah untuk menjalankan service
tersebut dijalankan secara otomatis, maka Anda letakkan ke dalam folder START UP.
Mengapa di folder START UP? iya karena setiap kali Windows melakukan booting, maka
dia akan menjalankan program yang ada di folder tersebut secara otomatis. Nah.. begitu
idenya.
So… apa isi dari batch file tersebut? ini dia isinya:
START C:\gammu\gammu-smsd.exe -s -c C:\gammu\smsdrc -n GammuSMSD
Anda dapat membuat batch file dengan menggunakan Notepad, lalu tuliskan perintah di atas
dan simpan sebagai file berekstensi (*.bat).
Oya… perintah di atas akan menjalankan file „gammu-smsd.exe„ yang terdapat dalam
direktori C:\gammu serta menggunakan file „smsdrc„ sebagai file konfigurasi yang juga
terletak di C:\gammu. Sehingga Anda harus menyesuaikan direktorinya bila letak file
„gammu-smsd.exe‟ dan ‟smsdrc‟ nya tidak di C:\gammu.
Setelah batch file dibuat, selanjutnya Anda letakkan file tersebut di folder START UP.
Dimanakah gerangan letak folder START UP? Kalau di Windows XP, letaknya di
C:\Documents and Settings\All Users\Start Menu\Programs\Startup. Sedangkan kalau di
Windows Vista atau Windows 7 ane belum tahu Silakan dicari sendiri ya…
It‟s DONE…. untuk melihat efeknya, silakan Anda restart komputer dan lihat hasilnya
melalui Control Panel > Administrative Tools > Services, maka Gammu servicenya sudahotomatis berjalan.
8/19/2019 Artikel Blog Sms Gateway
34/36
Cara Membuat Script PHP Untuk Cek Pulsa Dengan
Gammu
Banyak sekali pengunjung setia blog ini yang menanyakan bagaimana cara melakukan cek
pulsa menggunakan Gammu. Pertanyaannya menarik juga, karena kebanyakan orang
mengidentikkan Gammu hanya sebagai tool untuk pengolah SMS Gateway saja. Tapi…
bisakah Gammu ini digunakan untuk cek pulsa juga? Setelah saya melakukan eksperimen
sendiri beberapa waktu yang lalu, dan hasilnya ternyata …. “BISA”
OK.. dalam artikel ini saya akan mencoba memaparkan cara melakukan cek pulsa dengan
Gammu, baik melalui console (command prompt) maupun menggunakan script PHP.
Untuk melakukan cek pulsa dengan menggunakan Gammu melalui console (command
prompt), caranya cukup mudah yaitu dengan menggunakan perintah sbb:
gammu getussd nocekpulsa
Sebagai contoh misalkan saya menggunakan kartu XL, maka perintahnya
gammu getussd *123#
Perintah di atas dijalankan setelah Anda masuk ke direktori Gammu nya.
Jika setelah Anda berikan perintah tersebut dan ternyata muncul keterangan “Press CTRL+C
to break…” tunggulah sebentar karena Gammu sedang merequest perintah cek pulsa tersebut
ke operator.
Oya… sebelum Anda melakukan cek pulsa dengan Gammu, pastikan bahwa konfigurasi di
GAMMURC nya sudah tepat, khususnya parameter CONNECTION dan PORT nya. Untuk
panduan lengkapnya, silakan baca Cara Setting Gammu.
Berikut ini tampilan yang muncul setelah perintah di atas diberikan
Dari tampilan di atas tampak bahwa pulsa nya masih ada Rp. 2.000,-. Mmm.. tapi kok hasil
requestnya rumit gitu ya? ada tulisan USSD Received , Status, Service Reply, dsb… belum lagi
8/19/2019 Artikel Blog Sms Gateway
35/36
ada iklan dari XL yang banyak. Padahal inti terpenting dari keterangan tersebut hanyalah
jumlah sisa pulsanya saja. Trus… bagaimana cara menampilkan hanya besar sisa pulsanya
saja? He… 3x itu nanti kita lakukan dengan script PHP. Dengan script PHP kita b isa
hilangkan beberapa informasi yang kurang berguna.
OK.. sekarang kita coba buat script PHP untuk cek pulsa dengan Gammu. Pada prinsipnya
caranya sama seperti di atas yaitu dengan menjalankan perintah di console lalu hasilnya
dibaca oleh PHP.
Di dalam PHP, terdapat function exec() yang digunakan untuk menjalankan perintah dalam
console, dan keterangan hasil dari proses tersebut bisa ditangkap kembali oleh PHP untuk
ditampilkan via browser.
So… script PHP untuk cek pulsa dengan Gammu adalah sbb:
cekpulsa.php
Keterangan:
Script di atas dibuat berdasarkan asumsi bahwa direktori Gammu berada di C:\gammu
Perintah
exec("c:\gammu\gammu -c c:\gammu\gammurc getussd *123#", $hasil);
digunakan untuk menjalankan perintah cek pulsa Gammu melalui console. Tapi… kok
perintahnya beda dengan yang diberikan di atas? Ya… khusus untuk perintah console yang
dijalankan lewat script PHP ini, path direktorinya harus jelas. Perhatikan pula, bahwa untuk
perintah gammu getussd ini perlu ditambahkan path untuk GAMMURC nya (file
konfigurasi). Bagaimana bila dihilangkan path GAMMURC nya? dari hasil eksperimen saya,
ternyata tidak bisa. Oya, untuk cek pulsa ini, file yang diperlukan adalah GAMMURC, bukan
SMSDRC.
8/19/2019 Artikel Blog Sms Gateway
36/36
Setelah perintah di console dijalankan, selanjutnya hasilnya disimpan dalam variabel $hasil.
Selanjutnya bagian
for ($i=0; $i 0) $index = $i; }
digunakan untuk memfilter $hasil yang di dalamnya hanya terdapat string “Service Reply“.
Mengapa harus string “Service Reply”? Perhatikan gambar hasil cek pulsa lewat console di
atas. Keterangan jumlah sisa pulsa muncul pada baris output yang didahului dengan string
“Service Reply”. Oleh karena itu kita hanya ambil saja baris output yang terdapat string
“Service Reply”. Oya perlu saya tambahkan pula bahwa hasil dari perintah exec() ini adalah
berupa array dimana elemen array nya adalah tergantung jumlah baris outputnya atau dalam
hal ini nilai $hasil adalah berupa data array.
Trus.. mungkin Anda melihat bahwa pada gambar hasil cek pulsa di atas terdapat 2 buah
baris yang di dahului dengan string “Service Reply”, nah… lantas mana yang diambil, karena
keterangan sisa pulsanya muncul pada baris “Service Reply” yang terakhir, maka kita ambil
saja index terakhirnya.
Sekarang, ini dia tampilan cek pulsa melalui script PHP yang dijalankan via browser.
Nah.. mudah bukan? Selamat mencoba ya… Semoga bermanfaat.