Senin, 23 Maret 2009

KONSEP PEMBUATAN SMS GATEWAY

SMS (SHORT MESSAGE SERVICE) bukan hal baru pada teknologimobile, tetapi penggunaannya seolah sudah menjadi bagian tak terpisahkan dari kehidupan masyarakat kota.
Tidak surut oleh kemajuan teknologi mobile seperti EMS, MMS, ringtone, gambar, ataupun video conference, cara bertukar informasi ala SMS dengan menggunakan teks sederhana masih tetap menjadi pilihan utama.
Tidak terbatas hanya untuk sarana komunikasi pengganti percakapan lisan di antara dua orang, SMS saat ini juga ramai digunakan untuk voting, kuis, lelang, banking, order barang, promosi, undangan, dan masih banyak lagi.
Apa Kelebihan SMS?

SMS dapat menjadi popular tentunya karena memiliki kelebihan, dan kelebihan SMS justru terletak pada kesederhanaannya, sehingga mudah diaplikasikan.
Semua ponsel memiliki fitur SMS, tidak peduli apakah ponsel tersebut mendukung 3G dengan fasilitas touch screen ataupun ponsel tempo dulu yang hanya memiliki satu baris layar sederhana seperti kalkulator. SMS juga tetap dapat dikirim walaupun ponsel penerima tidak dalam keadaan aktif dalam limit waktu tertentu, karena SMS memiliki validity period.
Penyampaian SMS umumnya juga cepat dan tidak mengganggu. Biaya yang relatif murah juga menjadi salah satu alasan mengapa SMS digunakan secara luas.
SMS Gateway
SMS gateway merupakan sistem aplikasi untuk mengirim dan/atau menerima SMS, terutama digunakan dalam aplikasi bisnis, baik untuk kepentingan promosi, servis kepada kustomer, pengadaan content produk atau jasa, dan seterusnya.
Karena merupakan sebuah aplikasi, maka fitur-fitur yang terdapat di dalam SMS gateway dapat dimodifi kasi sesuai dengan kebutuhan.
Beberapa fitur yang umum dikembangkan dalam aplikasi SMS gateway adalah:
1. Auto-reply.
SMS gateway secara otomatis akan membalas SMS yang masuk. Contohnya untuk keperluan permintaan informasi tertentu (misalnya kurs mata uang atau jadwal perjalanan), di mana pengirim mengirimkan SMS dengan format tertentu yang dikenali aplikasi, kemudian aplikasi dapat melakukan auto-reply dengan membalas SMS tersebut, berisi informasi yang dibutuhkan.
2. Pengiriman massal.
Disebut juga dengan istilah SMS broadcast, bertujuan untuk mengirimkan SMS ke banyak tujuan sekaligus. Misalnya, untuk informasi produk terbaru kepada pelanggan.3. 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 telepon 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.
Hanya saja, untuk membuat SMS gateway dengan menggunakan jalur SMSC, Anda harus memiliki jalur koneksi ke operator selular, dan ini bukan hal yang mudah untuk pelaku bisnis dalam skala kecil ataupun individu.
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, di mana 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 dialup yang biasa Anda gunakan untuk koneksi Internet melalui line telepon.
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.
FBUS kompatibel dengan kebanyakan ponsel Nokia, dengan panduan contoh program demo yang ikut disertakan dalam paket download-nya dan referensi dari website, Anda dapat mengembangkan sebuah SMS gateway sederhana.
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 popular lainnya dalam lingkungan Linux adalah Gnokii.
MSComm dan AT Command
Anda juga dapat membuat sendiri library/komponen SMS gateway, dengan menggunakan control/komponen standar 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.
Bahasa yang dikenali oleh ponsel/modem GSM disebut dengan AT command. AT merupakan kependekan dari Attention.
AT command dapat digunakan antara lain untuk menginstruksikan perintah-perintah sebagai berikut:
1. Mengirim dan menerima pesan SMS atau faks.
2. Mendapatkan informasi mengenai device, misalnya nama manufaktur, nomor IMEI, dan lain-lain.
3. Mendapatkan status device, misalnya status aktivitas, status registrasi network, kekuatan sinyal, ataupun status baterai.
4. Penulisan dan pencarian phonebook.
5. Dari sisi keamanan, Anda dapat mengaktifkan fasilitas lock dan mengubah password.
6. Menyimpan dan mengembalikan konfi gurasi.
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 menginstal driver yang diperlukan agar operating system mengenali device yang Anda gunakan, lalu Anda dapat memasukkan kartu GSM pada ponsel atau modem GSM. Koneksikan pada port komputer, pastikan computer Anda telah mengenalinya, lalu Anda dapat memanggil program HyperTerminal.
Untuk melakukan tes 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
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 di atas 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 mengizinkan penulisan AT command dalam huruf besar maupun huruf kecil.
Setelah 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 di dalam 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 mengategorikan AT command ke dalam 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 UNTUK KONTROL
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 Notifi kasi delivery pesan
+CDSI Notifi kasi status report
Masih banyak lagi AT command yang tersedia, akan sangat bagus jika Anda memiliki dokumentasi AT command yang didukung oleh device yang Anda gunakan, sehingga Anda dapat memaksimalkan kemampuan device yang digunakan pada SMS gateway Anda.
Untuk AT command yang berawalan dengan AT (misalnya: AT+CMGS, AT+CMGD) diketikkan dengan diikuti parameter-parameter yang dibutuhkan, sedangkan command tanpa awalan
AT (seperti +CMTI,+CDSI) merupakan result yang dikeluarkan oleh device.
Jika Anda tidak memiliki dokumentasi yang cukup mengenai AT command yang didukung oleh device yang digunakan, Anda dapat mencoba AT command tersebut melalui HyperTerminal.
HyperTerminal akan mengembalikan pesan kesalahan jika ATcommand yang Anda ketikkan tidak dimengerti oleh device. Saat sebuah AT command tidak menampilkan pesan kesalahan, Anda perlu mencoba lebih jauh dengan mengetikkan parameter-parameter yang mungkin digunakan dalam aplikasi.
Hal ini penting mengingat AT command juga bisa berbeda parameter antara device satu dengan device lainnya.
Terdapat dua tipe AT command, yaitu basic command dan extended command. Basic command adalah AT command yang tidak menggunakan tanda +, misalnya ATD, ATH, dan ATA.
Sebaliknya, AT command yang menggunakan tanda + merupakan extended command. Setiap extended command memiliki parameter/perintah test yaitu =?, yang akan mengembalikan informasi mengenai command tersebut.
Contohnya Anda dapat mengetikkan AT+CMGF=?, AT+CMGI=?, dan seterusnya.
Format PDU dan Text
Format SMS yang digunakan oleh ponsel/modem GSM adalah format PDU (Protocol Description Unit), tetapi pada contoh di atas dengan menggunakan HyperTerminal, Anda menggunakan format ASCII text, yang memang lebih mudah digunakan.
Tetapi proses yang terjadi adalah format ASCII text yang Anda ketikkan akan di-convert ke dalam format PDU, pada saat SMS diterima nomor tujuan, ponsel/modem GSM akan mengubah kembali SMS format PDU tersebut menjadi format ASCII text agar dapat terbaca dengan mudah oleh pengguna.
Anda telah mencoba mengirimkan SMS melalui AT command dengan format text, cukup mudah bukan? Jika berhasil melakukannya, Anda perlu berterima kasih pada ponsel atau modem GSM Anda, karena device yang Anda gunakan mendukung format text, yang diaktifkan melalui perintah AT+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:
1. Nomor SMS Center.
Terdiri lagi dari 3 subheader yang memiliki aturan sendiri, sebagai contoh SMS Center Telkomsel dengan format text biasa adalah 0811000000, tetapi di dalam format PDU dituliskan menjadi 06818011000000. Contoh lain SMS Center Indosat-M3 adalah 0855000000 dalam format text, dituliskan menjadi 06818055000000 dalam format PDU.
2. Tipe SMS.
3. Nomor Referensi SMS.
4. Nomor Ponsel Penerima, dengan cara penulisan yang mirip dengan header 1, yaitu pengisian nomor SMS Center.
5. Bentuk SMS.
6. Skema Encoding Data I/O.
7. Jangka Waktu Sebelum Expired.
8. Isi SMS, terbagi lagi menjadi dua subheader dan isi pesan dalam heksadesimal.
Delapan header ini kemudian digabungkan menjadi sebuah paket PDU yang lengkap. Jika 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 disukai 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.
Pada kesempatan mendatang, kita akan mempelajari konsep pembuatan beberapa fitur standar SMS gateway dengan menggunakan komponen MSComm dan bahasa pemrograman Visual Basic.
Hal lain yang perlu dipersiapkan adalah database. Anda dapat menyusun tabel-tabel dalam database sebagaimana layaknya SMS dikirim dan disimpan pada ponsel Anda, di mana terdapat tabel Inbox untuk menerima SMS, table Outbox untuk mengirim SMS, dan table Sent Items untuk SMS yang telah terkirim.

kita telah membahas mengenai AT Command yang merupakan inti dari pemrograman SMS gateway dengan menggunakan GSM modem/ponsel.
Karena itu, Anda harus terlebih dahulu memahami AT Command. Anda dapat mencobanya secara langsung tanpa pemrograman melalui HyperTerminal yang disediakan Win-
dows.
Kita juga telah membahas dua format SMS yang digunakan device GSM modem/ponsel, yaitu format PDU dan format Text. Kebanyakan device telah mendukung format text yang lebih mudah dan user friendly, tetapi jika device Anda tidak mendukung format text, Anda harus menggunakan format PDU yang lebih rumit.
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.
Selain itu, suatu aplikasi juga dapat menyimpan data dalam jumlah yang banyak. Berapa SMS yang dapat ditampung oleh inbox dan sent item pada ponsel Anda? Tentunya tidak sebanyak data yang dapat disimpan pada harddisk komputer.
Umumnya, sebuah SMS gateway akan memindahkan data SMS pada device ke dalam sebuah database agar dapat di-proses 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:
1. 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 satu 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.
2. 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).
3. 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
Pada edisi yang lalu, Anda telah mencoba menjalankan AT command melalui HyperTerminal. AT command diketikkan pada HyperTerminal dan Anda dapat langsung melihat hasilnya ataupun response yang diterima oleh device pada tampilan HyperTerminal.
Aplikasi SMS gateway memindahkan proses tersebut ke dalam 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. Di dalam bahasa Visual Basic, kurang lebih kode programnya akan seperti di bawah ini:
MSComm1.CommPort = 3
MSComm1.Settings = “115200,N,8,1”
MSComm1..PortOpen = True
Kode program di atas memberikan nilai pada property-property MSComm untuk melakukan inisialisasi dan mengaktifkan port, asumsi kode program di atas adalah device Anda terpasang pada port 3, diatur menggunakan baud rate 115200, parity = N, databit = 8, dan stop bit =1.
Jika pada program HyperTerminal Anda dapat mengetikkan perintah-perintah AT command dan melihat responsenya, demikian juga pada control MSComm, dengan menggunakan property Output dan Input.
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 di atas, dengan contoh untuk mengirimkan dua perintah AT command di bawah 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=1 yang 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 property MSComm.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 command AT+CSCA=xxx, di mana 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.
Untuk mengirim SMS, digunakan AT command AT+CMGS. Potongan kode program dalam Visual Basic untuk mengirim SMS adalah sebagai berikut:
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 variabel sPesan berisi dengan pesan SMS yang diinginkan.
Perhatikan pada baris MSComm.Output = sPesan & Chr$(26), apakah arti dari Chr$(26)? Chr$(26) merupakan karakter CTRL + Z yang berfungsi untuk mengakhiri isi pesan yang ingin dikirim.
Salah satu keuntungan menggunakan database dalam aplikasi SMS gateway adalah Anda dapat menyimpan daftar SMS yang ingin dikirimkan sebanyak yang Anda inginkan.
Anda cukup mengisi atau membuat program entry table Outbox yang telah Anda persiapkan, sehingga akan terdapat record-record yang berisi tujuan dan pesan yang siap dikirimkan melalui SMS gateway.
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
SMS gateway dapat membantu Anda menjadi penerima SMS yang baik, tanpa Anda perlu 24 jam sehari memantau SMS yang masuk. Bahkan kalau diperlukan, aplikasi SMS gateway dapat diatur agar dapat membalas secara otomatis.
Untuk menangani SMS yang masuk, aplikasi SMS harus dalam keadaan menunggu, informasi SMS yang masuk akan ditampung pada property MSComm.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.
Anda dapat mencoba menuliskan program sederhana seperti di bawah ini:
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
Jika tidak terdapat masalah, maka setiap kali SMS masuk (ataupun terjadi event lainnya seperti telpon masuk), maka event ini akan dijalankan dan program akan menuliskan isi dari data yang diterima.
Anda dapat membuat rutin untuk memeriksa isi dari data yang diterima tersebut, untuk kebutuhan SMS masuk, MSComm akan mengembalikan kode nilai +CMT atau +CMTI sebagai indikasi bahwa ada SMS yang masuk.
+CMT akan diikuti dengan informasi nomor pengirim, tanggal dan waktu, serta isi SMS yang diterima, semua informasi ini akan tersimpan dalam variabel tempBuffer di atas.
Yang perlu Anda lakukan selanjutnya adalah membuat rutin untuk melakukan parsing data dan memilah-milah antara nomor pengirim, tanggal, dan isi SMS sehingga dapat disimpan tapi di dalam table Inbox.
+CMTI tidak disertai dengan informasi lengkap seperti pada +CMT, tetapi Anda dapat menjalankanAT command AT+CMGL=”REC UNREAD”. Setelah dijalankan, AT command ini akan menghasilkan daftar SMS yang belum terbaca (unread), lengkap dengan informasi nomor pengirim, tanggal dan waktu, serta isi SMS.
Langkah Anda selanjutnya adalah melakukan parsing data dan menyimpan informasi SMS masuk tersebut ke dalam table Inbox.
Perhatikan jika Anda menjalankan lagi perintah AT+CMGL=”REC UNREAD” untuk kedua kalinya, maka hasilnya tidak sama de ngan saat pertama kali dijalankan, karena status record unread telah menjadi read (terbaca) saat AT+CMGL=”REC UNREAD” dijalankankali pertama.
Hal penting di sini adalah rutin parsing data, agar rutin tersebut mampu memilah data dengan benar.
Anda juga mungkin perlu mengetahui cara untuk menghapus SMS yang tersimpan dalam memory SIM card, gunakan AT command AT+CMGD untuk keperluan tersebut. Karena Anda harus menghindari memory SIM card penuh oleh SMS yang masuk.
Anda dapat menghapus SMS secara terjadwal ataupun setiap kali selesai membaca dan memindahkan SMS tersebut ke database.
Jika aplikasi SMS gateway Anda ditujukan untuk membalas SMS secara otomatis, maka biasanya tidak semua SMS harus dibalas. Terdapat kesepakatan format SMS yang valid untuk diproses lebih lanjut, hal seperti ini sering ditemui misalnya pada aplikasi SMS premium yang iklannya sering kita lihat di televisi, contoh ketik LELANG, RAMAL, dan kata lainnya diikuti dengan parameter yang dibutuhkan.
Kata LELANG, RAMAL, dan lain sebagainya merupakan format yang valid bagi aplikasi SMS tersebut melakukan proses selanjutnya, misalnya mengolah data yang dikirimkan lebih lanjut, dan melakukan reply SMS yang semuanya dikerjakan oleh aplikasi, Anda tentunya tidak berpikir Deddy Corbuzier bergadang semalam suntuk untuk membalas SMS Anda, bukan?
Kesalahan yang Umum Terjadi
Inti dari SMS gateway adalah proses mengirim dan menerima SMS seperti di atas, tetapi perjalanan Anda membuat SMS gateway yang baik mungkin masih harus melewati perjalanan yang cukup panjang, mungkin Anda akan menemui pelbagai error dan bugs yang memang sudah merupakan makanan sehari-hari programmer.
Kesalahan yang Anda temui pada saat development tentunya beragam. Salah satu contoh kesalahan yang mungkin terjadi adalah SMS gateway tidak berfungsi karena SIM card Anda menggunakan PIN. Untuk masalah ini Anda harus menggunakan AT command untuk mendefi nisikan PIN, yaitu AT+CPIN.
Anda juga dapat menganalisis kesalahan dari pesan error yang dihasilkan. Salah satu format pesan error yang dapat terjadi adalah +CMS Error: kode_error, di mana kode_error
Beberapa kode kesalahan yang umum adalah seperti pada
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.
Bisa jadi device yang Anda gunakan tidak stabil karena satu dan lain hal sehingga menyebabkan error yang sulit dilacak, ada baiknya Anda memberikan jedah waktu dalam setiap pengiriman SMS.
Kesulitan lain yang mungkin ditemui adalah saat melakukan parsing data yang masuk, contoh data yang diterima adalah seperti berikut:
+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.
Yang patut diingat adalah SMS gateway dengan menggunakan media modem/ponsel kurang cocok untuk informasi yang memerlukan ketepatan waktu yang tinggi sekaligus mengharuskan pengiriman SMS dalam jumlah banyak.
Penggunaan SMS Gateway Lebih Lanjut
Jika telah berhasil membuat function/rutin untuk mengirim dan menerima SMS, maka Anda telah menyelesaikan sebuah engine yang dapat dipasang pada sebuah komputer server.
Jika diperlukan user interface untuk user dapat mengirim SMS dan melihat SMS yang masuk, maka Anda dapat membuat aplikasi database yang mengakses table-table utama yang telah kita buat, yaitu Inbox, Outbox, dan Sent Item.
Lebih jauh lagi, Anda dapat membuat server SMS Anda menjadi web server agar user yang menggunakan aplikasi tersebut dapat mengaksesnya melalui HTTP.
Dengan demikian, aplikasi SMS gateway juga dapat menjadi aplikasi web dengan berbagai macam kemungkinan pengembangannya.
Tidak hanya terbatas untuk mengirim dan menerima SMS pada saat ini, aplikasi Anda juga dapat diperluas agar dapat mengirimkan SMS terjadwal. Misalnya dengan mengirimkan SMS yang telah diatur akan dikirim pada event tertentu seperti ulang tahun, perkawinan, dan seterusnya. Akhir kata, tentunya tidak semua hal yang mengangkut SMS gateway dapat dibahas dalam artikel yang terbatas ini, tetapi tentunya diharapkan artikel ini dapat memberikan gambaran dasar mengenai pembuatan SMS gateway.[1]

SMS (SHORT MESSAGE SERVICE) bukan hal baru pada teknologimobile, tetapi penggunaannya seolah sudah menjadi bagian tak terpisahkan dari kehidupan masyarakat kota.
Tidak surut oleh kemajuan teknologi mobile seperti EMS, MMS, ringtone, gambar, ataupun video conference, cara bertukar informasi ala SMS dengan menggunakan teks sederhana masih tetap menjadi pilihan utama.
Tidak terbatas hanya untuk sarana komunikasi pengganti percakapan lisan di antara dua orang, SMS saat ini juga ramai digunakan untuk voting, kuis, lelang, banking, order barang, promosi, undangan, dan masih banyak lagi.
Apa Kelebihan SMS?

SMS dapat menjadi popular tentunya karena memiliki kelebihan, dan kelebihan SMS justru terletak pada kesederhanaannya, sehingga mudah diaplikasikan.
Semua ponsel memiliki fitur SMS, tidak peduli apakah ponsel tersebut mendukung 3G dengan fasilitas touch screen ataupun ponsel tempo dulu yang hanya memiliki satu baris layar sederhana seperti kalkulator. SMS juga tetap dapat dikirim walaupun ponsel penerima tidak dalam keadaan aktif dalam limit waktu tertentu, karena SMS memiliki validity period.
Penyampaian SMS umumnya juga cepat dan tidak mengganggu. Biaya yang relatif murah juga menjadi salah satu alasan mengapa SMS digunakan secara luas.
SMS Gateway
SMS gateway merupakan sistem aplikasi untuk mengirim dan/atau menerima SMS, terutama digunakan dalam aplikasi bisnis, baik untuk kepentingan promosi, servis kepada kustomer, pengadaan content produk atau jasa, dan seterusnya.
Karena merupakan sebuah aplikasi, maka fitur-fitur yang terdapat di dalam SMS gateway dapat dimodifi kasi sesuai dengan kebutuhan.
Beberapa fitur yang umum dikembangkan dalam aplikasi SMS gateway adalah:
1. Auto-reply.
SMS gateway secara otomatis akan membalas SMS yang masuk. Contohnya untuk keperluan permintaan informasi tertentu (misalnya kurs mata uang atau jadwal perjalanan), di mana pengirim mengirimkan SMS dengan format tertentu yang dikenali aplikasi, kemudian aplikasi dapat melakukan auto-reply dengan membalas SMS tersebut, berisi informasi yang dibutuhkan.
2. Pengiriman massal.
Disebut juga dengan istilah SMS broadcast, bertujuan untuk mengirimkan SMS ke banyak tujuan sekaligus. Misalnya, untuk informasi produk terbaru kepada pelanggan.3. 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 telepon 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.
Hanya saja, untuk membuat SMS gateway dengan menggunakan jalur SMSC, Anda harus memiliki jalur koneksi ke operator selular, dan ini bukan hal yang mudah untuk pelaku bisnis dalam skala kecil ataupun individu.
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, di mana 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 dialup yang biasa Anda gunakan untuk koneksi Internet melalui line telepon.
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.
FBUS kompatibel dengan kebanyakan ponsel Nokia, dengan panduan contoh program demo yang ikut disertakan dalam paket download-nya dan referensi dari website, Anda dapat mengembangkan sebuah SMS gateway sederhana.
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 popular lainnya dalam lingkungan Linux adalah Gnokii.
MSComm dan AT Command
Anda juga dapat membuat sendiri library/komponen SMS gateway, dengan menggunakan control/komponen standar 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.
Bahasa yang dikenali oleh ponsel/modem GSM disebut dengan AT command. AT merupakan kependekan dari Attention.
AT command dapat digunakan antara lain untuk menginstruksikan perintah-perintah sebagai berikut:
1. Mengirim dan menerima pesan SMS atau faks.
2. Mendapatkan informasi mengenai device, misalnya nama manufaktur, nomor IMEI, dan lain-lain.
3. Mendapatkan status device, misalnya status aktivitas, status registrasi network, kekuatan sinyal, ataupun status baterai.
4. Penulisan dan pencarian phonebook.
5. Dari sisi keamanan, Anda dapat mengaktifkan fasilitas lock dan mengubah password.
6. Menyimpan dan mengembalikan konfi gurasi.
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 menginstal driver yang diperlukan agar operating system mengenali device yang Anda gunakan, lalu Anda dapat memasukkan kartu GSM pada ponsel atau modem GSM. Koneksikan pada port komputer, pastikan computer Anda telah mengenalinya, lalu Anda dapat memanggil program HyperTerminal.
Untuk melakukan tes 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
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 di atas 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 mengizinkan penulisan AT command dalam huruf besar maupun huruf kecil.
Setelah 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 di dalam 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 mengategorikan AT command ke dalam 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 UNTUK KONTROL
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 Notifi kasi delivery pesan
+CDSI Notifi kasi status report
Masih banyak lagi AT command yang tersedia, akan sangat bagus jika Anda memiliki dokumentasi AT command yang didukung oleh device yang Anda gunakan, sehingga Anda dapat memaksimalkan kemampuan device yang digunakan pada SMS gateway Anda.
Untuk AT command yang berawalan dengan AT (misalnya: AT+CMGS, AT+CMGD) diketikkan dengan diikuti parameter-parameter yang dibutuhkan, sedangkan command tanpa awalan
AT (seperti +CMTI,+CDSI) merupakan result yang dikeluarkan oleh device.
Jika Anda tidak memiliki dokumentasi yang cukup mengenai AT command yang didukung oleh device yang digunakan, Anda dapat mencoba AT command tersebut melalui HyperTerminal.
HyperTerminal akan mengembalikan pesan kesalahan jika ATcommand yang Anda ketikkan tidak dimengerti oleh device. Saat sebuah AT command tidak menampilkan pesan kesalahan, Anda perlu mencoba lebih jauh dengan mengetikkan parameter-parameter yang mungkin digunakan dalam aplikasi.
Hal ini penting mengingat AT command juga bisa berbeda parameter antara device satu dengan device lainnya.
Terdapat dua tipe AT command, yaitu basic command dan extended command. Basic command adalah AT command yang tidak menggunakan tanda +, misalnya ATD, ATH, dan ATA.
Sebaliknya, AT command yang menggunakan tanda + merupakan extended command. Setiap extended command memiliki parameter/perintah test yaitu =?, yang akan mengembalikan informasi mengenai command tersebut.
Contohnya Anda dapat mengetikkan AT+CMGF=?, AT+CMGI=?, dan seterusnya.
Format PDU dan Text
Format SMS yang digunakan oleh ponsel/modem GSM adalah format PDU (Protocol Description Unit), tetapi pada contoh di atas dengan menggunakan HyperTerminal, Anda menggunakan format ASCII text, yang memang lebih mudah digunakan.
Tetapi proses yang terjadi adalah format ASCII text yang Anda ketikkan akan di-convert ke dalam format PDU, pada saat SMS diterima nomor tujuan, ponsel/modem GSM akan mengubah kembali SMS format PDU tersebut menjadi format ASCII text agar dapat terbaca dengan mudah oleh pengguna.
Anda telah mencoba mengirimkan SMS melalui AT command dengan format text, cukup mudah bukan? Jika berhasil melakukannya, Anda perlu berterima kasih pada ponsel atau modem GSM Anda, karena device yang Anda gunakan mendukung format text, yang diaktifkan melalui perintah AT+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:
1. Nomor SMS Center.
Terdiri lagi dari 3 subheader yang memiliki aturan sendiri, sebagai contoh SMS Center Telkomsel dengan format text biasa adalah 0811000000, tetapi di dalam format PDU dituliskan menjadi 06818011000000. Contoh lain SMS Center Indosat-M3 adalah 0855000000 dalam format text, dituliskan menjadi 06818055000000 dalam format PDU.
2. Tipe SMS.
3. Nomor Referensi SMS.
4. Nomor Ponsel Penerima, dengan cara penulisan yang mirip dengan header 1, yaitu pengisian nomor SMS Center.
5. Bentuk SMS.
6. Skema Encoding Data I/O.
7. Jangka Waktu Sebelum Expired.
8. Isi SMS, terbagi lagi menjadi dua subheader dan isi pesan dalam heksadesimal.
Delapan header ini kemudian digabungkan menjadi sebuah paket PDU yang lengkap. Jika 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 disukai 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.
Pada kesempatan mendatang, kita akan mempelajari konsep pembuatan beberapa fitur standar SMS gateway dengan menggunakan komponen MSComm dan bahasa pemrograman Visual Basic.
Hal lain yang perlu dipersiapkan adalah database. Anda dapat menyusun tabel-tabel dalam database sebagaimana layaknya SMS dikirim dan disimpan pada ponsel Anda, di mana terdapat tabel Inbox untuk menerima SMS, table Outbox untuk mengirim SMS, dan table Sent Items untuk SMS yang telah terkirim.

kita telah membahas mengenai AT Command yang merupakan inti dari pemrograman SMS gateway dengan menggunakan GSM modem/ponsel.
Karena itu, Anda harus terlebih dahulu memahami AT Command. Anda dapat mencobanya secara langsung tanpa pemrograman melalui HyperTerminal yang disediakan Win-
dows.
Kita juga telah membahas dua format SMS yang digunakan device GSM modem/ponsel, yaitu format PDU dan format Text. Kebanyakan device telah mendukung format text yang lebih mudah dan user friendly, tetapi jika device Anda tidak mendukung format text, Anda harus menggunakan format PDU yang lebih rumit.
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.
Selain itu, suatu aplikasi juga dapat menyimpan data dalam jumlah yang banyak. Berapa SMS yang dapat ditampung oleh inbox dan sent item pada ponsel Anda? Tentunya tidak sebanyak data yang dapat disimpan pada harddisk komputer.
Umumnya, sebuah SMS gateway akan memindahkan data SMS pada device ke dalam sebuah database agar dapat di-proses 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:
1. 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 satu 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.
2. 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).
3. 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
Pada edisi yang lalu, Anda telah mencoba menjalankan AT command melalui HyperTerminal. AT command diketikkan pada HyperTerminal dan Anda dapat langsung melihat hasilnya ataupun response yang diterima oleh device pada tampilan HyperTerminal.
Aplikasi SMS gateway memindahkan proses tersebut ke dalam 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. Di dalam bahasa Visual Basic, kurang lebih kode programnya akan seperti di bawah ini:
MSComm1.CommPort = 3
MSComm1.Settings = “115200,N,8,1”
MSComm1..PortOpen = True
Kode program di atas memberikan nilai pada property-property MSComm untuk melakukan inisialisasi dan mengaktifkan port, asumsi kode program di atas adalah device Anda terpasang pada port 3, diatur menggunakan baud rate 115200, parity = N, databit = 8, dan stop bit =1.
Jika pada program HyperTerminal Anda dapat mengetikkan perintah-perintah AT command dan melihat responsenya, demikian juga pada control MSComm, dengan menggunakan property Output dan Input.
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 di atas, dengan contoh untuk mengirimkan dua perintah AT command di bawah 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=1 yang 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 property MSComm.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 command AT+CSCA=xxx, di mana 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.
Untuk mengirim SMS, digunakan AT command AT+CMGS. Potongan kode program dalam Visual Basic untuk mengirim SMS adalah sebagai berikut:
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 variabel sPesan berisi dengan pesan SMS yang diinginkan.
Perhatikan pada baris MSComm.Output = sPesan & Chr$(26), apakah arti dari Chr$(26)? Chr$(26) merupakan karakter CTRL + Z yang berfungsi untuk mengakhiri isi pesan yang ingin dikirim.
Salah satu keuntungan menggunakan database dalam aplikasi SMS gateway adalah Anda dapat menyimpan daftar SMS yang ingin dikirimkan sebanyak yang Anda inginkan.
Anda cukup mengisi atau membuat program entry table Outbox yang telah Anda persiapkan, sehingga akan terdapat record-record yang berisi tujuan dan pesan yang siap dikirimkan melalui SMS gateway.
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
SMS gateway dapat membantu Anda menjadi penerima SMS yang baik, tanpa Anda perlu 24 jam sehari memantau SMS yang masuk. Bahkan kalau diperlukan, aplikasi SMS gateway dapat diatur agar dapat membalas secara otomatis.
Untuk menangani SMS yang masuk, aplikasi SMS harus dalam keadaan menunggu, informasi SMS yang masuk akan ditampung pada property MSComm.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.
Anda dapat mencoba menuliskan program sederhana seperti di bawah ini:
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
Jika tidak terdapat masalah, maka setiap kali SMS masuk (ataupun terjadi event lainnya seperti telpon masuk), maka event ini akan dijalankan dan program akan menuliskan isi dari data yang diterima.
Anda dapat membuat rutin untuk memeriksa isi dari data yang diterima tersebut, untuk kebutuhan SMS masuk, MSComm akan mengembalikan kode nilai +CMT atau +CMTI sebagai indikasi bahwa ada SMS yang masuk.
+CMT akan diikuti dengan informasi nomor pengirim, tanggal dan waktu, serta isi SMS yang diterima, semua informasi ini akan tersimpan dalam variabel tempBuffer di atas.
Yang perlu Anda lakukan selanjutnya adalah membuat rutin untuk melakukan parsing data dan memilah-milah antara nomor pengirim, tanggal, dan isi SMS sehingga dapat disimpan tapi di dalam table Inbox.
+CMTI tidak disertai dengan informasi lengkap seperti pada +CMT, tetapi Anda dapat menjalankanAT command AT+CMGL=”REC UNREAD”. Setelah dijalankan, AT command ini akan menghasilkan daftar SMS yang belum terbaca (unread), lengkap dengan informasi nomor pengirim, tanggal dan waktu, serta isi SMS.
Langkah Anda selanjutnya adalah melakukan parsing data dan menyimpan informasi SMS masuk tersebut ke dalam table Inbox.
Perhatikan jika Anda menjalankan lagi perintah AT+CMGL=”REC UNREAD” untuk kedua kalinya, maka hasilnya tidak sama de ngan saat pertama kali dijalankan, karena status record unread telah menjadi read (terbaca) saat AT+CMGL=”REC UNREAD” dijalankankali pertama.
Hal penting di sini adalah rutin parsing data, agar rutin tersebut mampu memilah data dengan benar.
Anda juga mungkin perlu mengetahui cara untuk menghapus SMS yang tersimpan dalam memory SIM card, gunakan AT command AT+CMGD untuk keperluan tersebut. Karena Anda harus menghindari memory SIM card penuh oleh SMS yang masuk.
Anda dapat menghapus SMS secara terjadwal ataupun setiap kali selesai membaca dan memindahkan SMS tersebut ke database.
Jika aplikasi SMS gateway Anda ditujukan untuk membalas SMS secara otomatis, maka biasanya tidak semua SMS harus dibalas. Terdapat kesepakatan format SMS yang valid untuk diproses lebih lanjut, hal seperti ini sering ditemui misalnya pada aplikasi SMS premium yang iklannya sering kita lihat di televisi, contoh ketik LELANG, RAMAL, dan kata lainnya diikuti dengan parameter yang dibutuhkan.
Kata LELANG, RAMAL, dan lain sebagainya merupakan format yang valid bagi aplikasi SMS tersebut melakukan proses selanjutnya, misalnya mengolah data yang dikirimkan lebih lanjut, dan melakukan reply SMS yang semuanya dikerjakan oleh aplikasi, Anda tentunya tidak berpikir Deddy Corbuzier bergadang semalam suntuk untuk membalas SMS Anda, bukan?
Kesalahan yang Umum Terjadi
Inti dari SMS gateway adalah proses mengirim dan menerima SMS seperti di atas, tetapi perjalanan Anda membuat SMS gateway yang baik mungkin masih harus melewati perjalanan yang cukup panjang, mungkin Anda akan menemui pelbagai error dan bugs yang memang sudah merupakan makanan sehari-hari programmer.
Kesalahan yang Anda temui pada saat development tentunya beragam. Salah satu contoh kesalahan yang mungkin terjadi adalah SMS gateway tidak berfungsi karena SIM card Anda menggunakan PIN. Untuk masalah ini Anda harus menggunakan AT command untuk mendefi nisikan PIN, yaitu AT+CPIN.
Anda juga dapat menganalisis kesalahan dari pesan error yang dihasilkan. Salah satu format pesan error yang dapat terjadi adalah +CMS Error: kode_error, di mana kode_error
Beberapa kode kesalahan yang umum adalah seperti pada
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.
Bisa jadi device yang Anda gunakan tidak stabil karena satu dan lain hal sehingga menyebabkan error yang sulit dilacak, ada baiknya Anda memberikan jedah waktu dalam setiap pengiriman SMS.
Kesulitan lain yang mungkin ditemui adalah saat melakukan parsing data yang masuk, contoh data yang diterima adalah seperti berikut:
+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.
Yang patut diingat adalah SMS gateway dengan menggunakan media modem/ponsel kurang cocok untuk informasi yang memerlukan ketepatan waktu yang tinggi sekaligus mengharuskan pengiriman SMS dalam jumlah banyak.
Penggunaan SMS Gateway Lebih Lanjut
Jika telah berhasil membuat function/rutin untuk mengirim dan menerima SMS, maka Anda telah menyelesaikan sebuah engine yang dapat dipasang pada sebuah komputer server.
Jika diperlukan user interface untuk user dapat mengirim SMS dan melihat SMS yang masuk, maka Anda dapat membuat aplikasi database yang mengakses table-table utama yang telah kita buat, yaitu Inbox, Outbox, dan Sent Item.
Lebih jauh lagi, Anda dapat membuat server SMS Anda menjadi web server agar user yang menggunakan aplikasi tersebut dapat mengaksesnya melalui HTTP.
Dengan demikian, aplikasi SMS gateway juga dapat menjadi aplikasi web dengan berbagai macam kemungkinan pengembangannya.
Tidak hanya terbatas untuk mengirim dan menerima SMS pada saat ini, aplikasi Anda juga dapat diperluas agar dapat mengirimkan SMS terjadwal. Misalnya dengan mengirimkan SMS yang telah diatur akan dikirim pada event tertentu seperti ulang tahun, perkawinan, dan seterusnya. Akhir kata, tentunya tidak semua hal yang mengangkut SMS gateway dapat dibahas dalam artikel yang terbatas ini, tetapi tentunya diharapkan artikel ini dapat memberikan gambaran dasar mengenai pembuatan SMS gateway.[1]

Tidak ada komentar: