SMS Gateway
- Auto-reply.
SMS gateway secara otomatis akan membalas SMS
yang masuk. Contohnya untuk keperluan permintaan informasi tertentu
(misalnya kurs mata uang, jadwal perjalanan), dimana pengirim
mengirimkan SMS dengan format tertentu yang dikenali aplikasi, kemudian
aplikasi dapat melakukan auto-reply dengan membalas SMS tersebut, berisi
informasi yang dibutuhkan.
- Pengiriman
masal.
Disebut juga dengan istilah SMS broadcast,
bertujuan untuk mengirimkan SMS ke banyak tujuan sekaligus. Misalnya
untuk informasi produk terbaru kepada pelanggan.
- Pengiriman terjadwal.
Sebuah SMS dapat diatur untuk dikirimkan ke
tujuan secara otomatis pada waktu tertentu. Contohnya untuk keperluan
mengucapkan selamat ulang tahun.
Untuk membuat sebuah SMS gateway, Anda perlu mengenal hal-hal
yang berhubungan dengan SMS gateway itu sendiri.
Salah satu hal yang memegang peranan penting dalam pengiriman
SMS adalah SMSC (Short Message Service Center), yang merupakan jaringan
telpon selular yang menangani pengiriman SMS.
Jadi, pada saat seseorang mengirimkan sebuah pesan SMS
melalui ponselnya, SMSC lah yang bertugas mengirimkan pesan tersebut ke
nomor tujuan.
Jika nomor tujuan tidak aktif, maka SMSC akan menyimpan pesan
tersebut dalam jangka waktu tertentu. Jika SMS tetap tidak dapat
terkirim sampai jangka waktu tersebut berakhir, maka SMS tersebut akan
dihapus dari penyimpanan SMSC.
Sebuah aplikasi SMS gateway dapat
menggunakan jalur SMSC untuk pengoperasiannya, keuntungannya adalah
penggunaan nomor pendek yang mungkin dapat terdiri dari 3 atau 4 digit
saja, misalnya 222, 9090, dan seterusnya.
Contohnya
seperti saat Anda mengikuti polling SMS Indonesian Idol, nomor pendek
ini disediakan oleh operator jaringan SMSC.
Jalur SMSC juga dapat mengirim SMS dalam jumlah banyak dalam
waktu yang relatif singkat.
Umumnya layanan ini digunakan jika aplikasi Anda dapat
menghasilkan lalu lintas SMS yang tinggi.
Terdapat alternatif infrastruktur yang lebih sederhana dan
mudah didapatkan, yaitu membuat SMS gateway yang menggunakan ponsel
ataupun modem GSM/CDMA sebagai media pengirim/penerima SMS, dimana
ponsel atau modem GSM/CDMA tersebut terpasang pada sebuah komputer.
Tentu saja SMS tersebut sebenarnya
tetap terkirim melalui SMSC, hanya saja melalui rute yang lebih panjang
karena tidak memiliki koneksi langsung ke SMSC, karena itu kapasitas dan
kecepatan pengirimannya tidak sebaik performa jika langsung menggunakan
jalur SMSC.
Karena relatif lebih mudah untuk
diimplementasikan, SMS gateway dengan menggunakan ponsel atau GSM/CDMA
modem cukup berkembang dan banyak digunakan.
Lalu
apa perbedaannya jika menggunakan ponsel, modem GSM, atau modem CDMA?
Apa pilihan terbaik? Sangat tergantung pada kebutuhan Anda sendiri,
modem GSM/CDMA memang di desain bekerja untuk keperluan SMS gateway,
memiliki performa yang baik dan stabil dibandingkan dengan ponsel biasa.
Tetapi penggunaan ponsel untuk keperluan SMS gateway juga
dapat dipertimbangkan jika sistem SMS gateway yang digunakan tidak
terlalu berat dan masih dapat ditangani melalui ponsel.
Sedangkan modem GSM atau modem CDMA, sesuai dengan namanya,
dibedakan oleh jaringannya, apakah menggunakan GSM atau CDMA. Untuk saat
ini modem GSM lebih banyak digunakan karena jaringan GSM yang lebih
stabil.
Modem CDMA tetap merupakan alternatif menarik yang mungkin
berguna untuk kondisi tertentu. Misalnya jika Anda memiliki perhitungan
biaya pulsa yang lebih murah, atau kalangan penerima SMS dari sistem SMS
gateway Anda mayoritas menggunakan ponsel CDMA.
Cara kerja modem GSM/CDMA mirip dengan modem dial-up yang
biasa Anda gunakan untuk koneksi Internet melalui line telpon.
Perbedaannya adalah modem dial-up mengirim dan menerima data
melalui line telpon, sedangkan modem GSM/CDMA mengirim dan menerima data
melalui gelombang radio.
Library SMS Gateway
Kita akan membahas lebih
lanjut mengenai konsep pembuatan SMS gateway, dengan menggunakan ponsel
atau modem GSM.
Inti dari sebuah SMS gateway adalah mesin atau engine
pengiriman dan penerima SMS, sehingga developer dapat menggunakan
function-function yang telah disediakan engine tersebut dan
menyesuaikannya dengan kebutuhan dan database.
Salah satu komponen ActiveX yang dapat digunakan untuk
keperluan SMS gateway adalah FBUS yang dapat digunakan oleh programer
Visual Basic ataupun bahasa pemrograman lain yang mendukung control
ActiveX.
Yang paling menarik, adalah untuk versi FBUS Lite dapat
didownload secara gratis, pada saat ini tidak mudah mendapatkan komponen
SMS gateway yang gratis dan berkualitas, terutama untuk platform
Windows.
Library/komponen lain yang dapat Anda pergunakan adalah
Boomerang GSM yang dibuat dengan bahasa pemrograman Delphi, tetapi juga
disediakan library ActiveX yang dapat digunakan oleh Visual Basic.
Untuk versi Lite juga dapat diperoleh secara gratis, walaupun
Anda memerlukan registrasi melalui website Boomerang pada saat
menggunakannya di komputer Anda.
Library ini cukup dapat diandalkan dan kompatibel dengan
cukup banyak jenis ponsel maupun modem GSM.
Untuk library atau software SMS gateway komersial, Anda tidak
akan mengalami kesulitan mencarinya melalui Internet, terdapat banyak
sekali pilihan yang tersedia. Misalnya Oxygen, WinSMS, Ozeki, dan masih
banyak lagi.
Untuk lingkungan platform keluarga Linux, salah satu pilihan
yang populer adalah Kannel. Selain SMS gateway, Kannel juga merupakan
WAP gateway. Pilihan populer lainnya dalam lingkungan Linux adalah
Gnokii.
MSComm dan AT Command
Anda juga dapat membuat sendiri library/komponen SMS gateway,
dengan menggunakan control/komponen standard yang ada pada bahasa
pemrograman seperti Visual Basic atau Delphi. Control/komponen yang
dimaksud adalah MSComm.
MSComm menyediakan komunikasi data melalui serial port (juga
mendukung USB dan infrared) dari aplikasi Anda. Sehingga Anda dapat
berkomunikasi dengan ponsel atau modem GSM yang terpasang pada serial
port komputer Anda.
AT
command dapat digunakan antara lain untuk menginstruksikan
perintah-perintah sebagai berikut:
- Mengirim dan menerima pesan SMS, atau fax.
- Mendapatkan
informasi mengenai device, misalnya nama manufaktur, nomor IMEI, dan
lain-lain.
- Mendapatkan
status device, misalnya status aktifitas, status registrasi network,
kekuatan sinyal, ataupun status baterai.
- Penulisan
dan pencarian phonebook.
- Dari
sisi keamanan, Anda dapat mengaktifkan fasilitas lock dan mengubah
password.
- Menyimpan
dan mengembalikan konfigurasi.
Tidak
semua device mengimplementasikan seluruh AT command, pada umumnya modem
GSM lebih mendukung banyak AT command dibandingkan ponsel biasa.
Dengan AT command Anda juga dapat mengirim SMS melalui GPRS
jika modem atau ponsel Anda mendukung fitur GPRS.
Untuk mencoba AT command melalui komputer
Anda, Anda dapat menggunakan HyperTerminal yang disediakan oleh
Microsoft Windows yang terletak pada menu All Programs – Accessories,
Communications – HyperTerminal.
Pastikan Anda telah menginstall driver yang diperlukan agar
sistem operasi mengenali device yang Anda gunakan, lalu Anda dapat
memasukkan kartu GSM pada ponsel atau modem GSM. Koneksikan pada port
komputer, pastikan komputer Anda telah mengenalinya, lalu Anda dapat
memanggil program HyperTerminal.
Untuk melakukan test koneksi dengan ponsel/modem GSM, cukup
ketikkan perintah AT diikuti dengan penekanan tombol
enter, yang akan direspon dengan OK jika tidak terdapat masalah.
Berikut adalah contoh rentetan AT command untuk mengirimkan
SMS:
AT
AT+CMGF=1
AT+CMGS=08xxxxxxx
>
testing kirim
Mengirim
SMS Melalui HyperTerminal
Perintah AT+CMGF=1 memberikan
instruksi untuk beroperasi pada format text (akan dijelaskan
kemudian), AT+CMGS= diikuti dengan nomor ponsel tujuan,
sedangkan tulisan “testing kirim” merupakan isi pesan yang ingin
dikirim.
Setiap
baris pada contoh perintah diatas diakhiri dengan penekanan tombol
enter, kecuali untuk baris pengirisan pesan, yang diakhiri dengan CTRL +
Z.
AT command umumnya ditulis dengan huruf besar, tetapi banyak
modem GSM dan ponsel yang mengijinkan penulisan AT command dalam huruf
besar maupun huruf kecil.
Setelah Anda berhasil menjalankan AT command pada
HyperTerminal, maka Anda telah siap untuk melangkah lebih lanjut, yaitu
menuliskan kode program pada bahasa pemrograman favorit Anda untuk
membangun sebuah SMS gateway.
Kode program yang membangun SMS gateway pada intinya
menuliskan AT command didalam aplikasi Anda, sebagaimana yang dilakukan
dalam HyperTerminal.
Tentunya peranan AT command sangat penting jika Anda
mengembangkan sendiri aplikasi SMS gateway. Untuk memudahkan pemahaman,
Anda dapat mengkategorikan AT command kedalam beberapa kategori.
AT command yang bersifat umum:
AT Command
|
Fungsi
|
AT+CGMI
|
Mengambil informasi
manufaktur
|
AT+CGMM
|
Mengambil informasi
model
|
AT+CGMR
|
Mengambil informasi
revisi
|
AT+CGSN
|
Mengambil informasi
serial number device
|
AT+CSCS
|
Memilih set karakter
|
AT Command
|
Fungsi
|
ATD
|
Melakukan dial
|
ATH
|
Hang up panggilan
yang masuk
|
ATA
|
Menjawab panggilan
yang masuk
|
AT command untuk
layanan jaringan:
AT Command
|
Fungsi
|
AT+CNUM
|
Nomor subscriber
|
AT+CREG
|
Registrasi jaringan
|
AT+COPS
|
Pemilihan operator
|
AT+CLCK
|
Fasilitas lock
|
AT+CPWD
|
Penggantian password
|
AT+CCWA
|
Call waiting
|
AT command untuk SMS:
AT Command
|
Fungsi
|
AT+CPMS
|
Menentukan
penyimpanan pesan
|
AT+CMGF
|
Format pesan
|
AT+CSCA
|
Nomor service center
|
AT+CNMI
|
Pengaktifan indikasi
pesan baru
|
AT+CMGL
|
Daftar pesan
|
AT+CMGR
|
Membaca pesan
|
AT+CMGS
|
Mengirim pesan
|
AT+CMGD
|
Menghapus pesan
|
AT+CMMS
|
Mengirimkan lebih
banyak pesan
|
+CMTI
|
Notifikasi delivery
pesan
|
+CDSI
|
Notifikasi status
report
|
Jika Anda tidak memiliki dokumentasi yang
cukup mengenai AT command yang didukung oleh device yang Anda gunakan,
Anda dapat mencoba AT command tersebut melalui HyperTerminal.
Saat sebuah AT command tidak menampilkan pesan kesalahan,
Anda perlu mencoba lebih jauh dengan mengetikkan parameter-parameter
yang mungkin Anda gunakan dalam aplikasi.
Anda telah mencoba mengirimkan SMS melalui AT command dengan
format text, cukup mudah bukan? Jika Anda berhasil melakukannya, Anda
perlu berterima kasih pada ponsel atau modem GSM Anda, karena device
yang Anda gunakan mendukung format text, yang diaktifkan melalui
perintahAT+CMGF=1.
Tetapi tidak
semua device mendukung format text, untuk device yang hanya mendukung
format PDU, Anda harus mengirimkan SMS dalam format PDU.
Format PDU dituliskan dengan
heksadesimal, terbagi atas 8 header, yaitu:
- Nomor SMS Center.
Terdiri lagi dari 3 subheader yang memiliki
aturan sendiri, sebagai contoh SMS Center Telkomsel dengan format text
biasa adalah 0811000000, tetapi didalam format PDU dituliskan menjadi
06818011000000. Contoh lain SMS Center Indosat-M3 adalah0855000000 dalam format text, dituliskan menjadi
06818055000000 dalam format PDU.
- Tipe SMS.
- Nomor
Referensi SMS.
- Nomor
Ponsel Penerima, dengan cara penulisan yang mirip dengan header 1,
yaitu pengisian nomor SMS Center.
- Bentuk
SMS.
- Skema
Encoding Data I/O.
- Jangka
Waktu Sebelum Expired.
- Isi SMS, terbagi lagi menjadi dua subheader dan isi pesan dalam heksadesimal.
8
header ini kemudian digabungkan menjadi sebuah paket PDU yang lengkap.
Jika Anda menggunakan format PDU, Anda memerlukan function/tools yang
dapat membantu Anda melakukan konversi format PDU ke text dan
sebaliknya.
Persiapan Development
Anda dapat memilih
bahasa pemrograman yang Anda sukai untuk mengembangkan aplikasi SMS
gateway, selama bahasa pemrograman tersebut mendukung komunikasi device
dengan menggunakan AT command, maka Anda dapat membangun SMS gateway
dengan menggunakan bahasa pemrograman tersebut.
Hal lain yang perlu
dipersiapkan adalah database, Anda dapat menyusun table-table dalam
database sebagaimana layaknya SMS dikirim dan disimpan pada ponsel Anda,
dimana terdapat table Inbox untuk menerima SMS, table Outbox untuk
mengirim SMS, dan table Sent Items untuk SMS yang telah terkirim.
Database
Apa kelebihan sebuah SMS gateway dibandingkan dengan
pengiriman ataupun penerimaan dengan ponsel biasa? Kelebihan yang paling
nyata tentunya adalah SMS gateway merupakan aplikasi komputer, artinya
dapat melakukan otomatisasi dan meringankan pekerjaan manual.
Umumnya sebuah SMS gateway akan memindahkan data SMS pada
device kedalam sebuah database agar dapat diproses lebih lanjut,
sehingga device GSM modem/ponsel hanya bersifat sebagai media pengirim
dan penerima SMS.
Karena itu sebuah aplikasi SMS gateway juga memerlukan
database, table-table utama yang perlu dipersiapkan pada sebuah SMS
gateway adalah sebagai berikut:
- Inbox.
Merupakan table yang berfungsi untuk menampung
SMS yang diterima. Field-field penting yang diperlukan antara lain
field pengirim (berisi nomor pengirim), pesan (berisi text SMS), dan
waktu (berisi tanggal dan jam).
Jika Anda hanya
menggunakan 1 device, Anda tidak memerlukan field nomor penerima, karena
semua SMS yang masuk inbox tentunya ditujukan untuk sebuah nomor saja,
yaitu nomor GSM yang terpasang pada device Anda.
- Outbox.
Table Outbox merupakan table yang menyimpan
SMS yang akan dikirimkan. Field-field yang penting adalah field tujuan
(nomor penerima SMS), dan pesan (berisi text SMS).
- Sent
Item.
Saat SMS pada Outbox telah terkirim, maka data
tersebut akan masuk kedalam table Sent Item. Jadi table Sent Item
adalah table yang menyimpan SMS yang telah terkirim.
Karena itu pada
intinya isi dari Sent Item adalah record yang tadinya terdapat pada
table Outbox, ditambah dengan field-field seperti waktu (berisi tanggal
dan jam), serta status delivery yang menunjukkan indikasi apakah sebuah
SMS telah diterima atau tidak.
Inisialisasi
Aplikasi SMS gateway memindahkan proses tersebut kedalam
bahasa pemrograman.
Dalam artikel ini, kita akan menggunakan bahasa pemrograman
Visual Basic untuk membuat SMS gateway, kita juga akan menggunakan AT
command yang kompatibel dengan jenis GSM modem Itegno 3000.
Sebagai catatan tambahan, AT command bisa saja berbeda-beda
antara device satu dengan device lainnya. Ada baiknya Anda memiliki
dokumentasi AT command yang didukung oleh device yang Anda gunakan.
Pada Visual Basic, Anda dapat menggunakan control MSComm,
yang berfungsi seperti layaknya HyperTerminal.
MSComm berfungsi sebagai media komunikasi program Anda dengan
device, tentunya sebelum dapat “bercakap-cakap” dengan device, Anda
perlu melakukan inisialisasi device terlebih dahulu.
Proses inisialisasi berarti Anda harus
menentukan terlebih dahulu port dan baud rate, parity, dan konfigurasi
lain yang digunakan oleh device Anda. Didalam bahasa Visual Basic,
kurang lebih kode programnya akan seperti dibawah ini:
MSComm1.CommPort = 3
MSComm1.Settings
= "115200,N,8,1"
MSComm1..PortOpen
= True
Kode program diatas
memberikan nilai pada property-property MSComm untuk melakukan
inisialisasi dan mengaktifkan port, asumsi kode program diatas adalah,
device Anda terpasang pada port 3, diatur menggunakan baud rate 115200,
parity = N, databit = 8, dan stop bit =1.
Property Output digunakan
untuk memberikan command/perintah kepada device, sedangkan property Input menghasilkan
data dari buffer penerima.
Jangan menjadi rancu antara output dan
input, property Output pada MSComm berarti merupakan
transmit data yang dikirimkan pada device, response dari device akan
diterima oleh property Input.
Sebagai
contoh, jika Anda ingin memberikan perintah AT command sederhana,
misalnya AT, maka Anda menuliskannya pada property Output.
Jika komunikasi berjalan dengan baik, maka device akan menjawab OK yang
diterima oleh property Input.
Kita akan melanjutkan potongan program diatas, dengan contoh
untuk mengirimkan dua perintah AT command dibawah ini:
MSComm.Output = "AT" & Chr$(13)
MSComm..Output
= "AT+CMGF=1" & Chr$(13)
Baris pertama
mengirimkan command AT yang berfungsi untuk testing
komunikasi, sedangkan baris kedua mengirimkan command AT+CMGF=1yang
berfungsi untuk memberikan perintah pada device untuk berada dalam mode
text.
Chr$(13) merupakan karakter enter yang digunakan untuk mengakhiri
perintah. Jika komunikasi berjalan dengan baik dan device GSM
modem/ponsel Anda mendukung penggunaan mode text, maka propertyMSComm.Input akan
berisi nilai OK.
Property MSComm.Input akan
mengembalikan nilai ERROR jika terjadi kesalahan sintaks
atau komunikasi tidak berjalan sebagaimana mestinya.
Inisialisasi
berikutnya yang diperlukan adalah menentukan nomor service center yang
digunakan. Nomor service center berbeda-beda tergantung pada operator
GSM yang Anda gunakan.
Untuk menentukan nomor
service center, digunakan AT commandAT+CSCA=xxx, dimana xxx adalah
nomor service center operator GSM yang Anda gunakan.
Mengirim
SMS
Jika pada edisi
sebelumnya Anda telah berhasil mengirimkan SMS melalui HyperTerminal,
maka seharusnya Anda juga dapat melakukannya melalui control MSComm
didalam Visual Basic ini.
sTujuan
= “081xxxxx”
sPesan = “Selamat Pagi”
MSComm.Output
= "AT+CMGS=" & sTujuan & Chr$(13)
MSComm.Output
= sPesan & Chr$(26)
Variabel sTujuan berisi
dengan nomor ponsel tujuan, sedangkan variabelsPesan berisi
dengan pesan SMS yang diinginkan.
Aplikasi SMS gateway Anda kemudian membaca table Outbox, dan
melakukan pengiriman untuk masing-masing record yang dibaca. Menarik,
bukan? Anda kini telah dapat membuat sebuah aplikasi yang dapat
mengirimkan SMS dalam jumlah banyak ke berbagai tujuan.
Bayangkan jika hal itu dilakukan
secara manual, pastinya akan cukup merepotkan.
Record pada table Outbox yang telah
terkirim, dapat Anda pindahkan kedalam table Sent Item sehingga Anda
memiliki arsip SMS yang telah dikirim.
Menerima
SMS
Untuk menangani SMS
yang masuk, aplikasi SMS harus dalam keadaan menunggu, informasi SMS
yang masuk akan ditampung pada propertyMSComm.Input.
Terdapat event MSComm_OnComm yang
dapat Anda gunakan untuk melakukan pengecekan input yang masuk. Event
ini akan dijalankan setiap kali terdapat data yang diterima melalui port
komunikasi yang terpasang.
Private
Sub MSComm_OnComm()
Dim stComChar As String * 1
Do
Loop
Until MSComm.InBufferCount > 0
Do
While MSComm.InBufferCount > 0
stComChar
= MSComm.Input
tempBuffer =
tempBuffer + stComChar
Loop
Debug.Print
tempBuffer
End Sub
Kesalahan
Yang Umum Terjadi
Beberapa kode kesalahan yang umum adalah
sebagai berikut:
Kode Kesalahan
|
Arti
|
300
|
Kesalahan pada ME
(Mobile Equipment) / device yang digunakan.
|
302
|
Operasi yang
dilakukan AT command tidak diijinkan
|
303
|
Operasi yang
dilakukan AT command tidak disupport
|
304
|
Invalid parameter
pada AT command (mode PDU)
|
305
|
Invalid parameter
pada AT command (mode text)
|
310
|
SIM card tidak
terpasang
|
311
|
SIM Card memerlukan
PIN
|
321
|
Index pada
memory/storage invalid
|
322
|
Memory/storage penuh
|
330
|
SMS Center tidak
dikenal
|
331
|
Network tidak
available
|
332
|
Network time out
|
Hal lain yang perlu
diingat adalah kecepatan pengiriman SMS dengan menggunakan device
GSM/CDMA modem/ponsel relatif cukup lama, terutama jika dibandingkan
dengan pengiriman langsung dari SMS Center.
+CMGL: 10,"REC
UNREAD","+628129618870",,"08/01/10,03:10:58+28"
hai, apa kabar?
String berisi nomor
pengirim, isi pesan, dan seterusnya, dipisahkan karakter koma. Jika Anda
menggunakan function Split untuk memilah string,perhitungkan
bahwa isi pesan dapat mengandung karakter koma yang tidak tentu
jumlahnya, jadi pastikan function Anda dapat memilah data dengan benar.
Penggunaan SMS Gateway
Lebih Lanjut
Jika Anda telah
berhasil membuat function/rutin untuk mengirim dan menerima SMS, maka
Anda telah menyelesaikan sebuah engine yang dapat dipasang pada sebuah
komputer server.
Tidak ada komentar:
Posting Komentar