Friday, July 20, 2012

Membangun Aplikasi SMS Gateway untuk Perguruan Tinggi

Penerapan TI, dalam membantu layanan dan operasional sehari-hari sudah bukan barang baru. Hampir semua perusahaan dan instansi pemerintah sudah menggunakan teknologi informasi ini untuk mempermudah dan meningkatkan pelayanan, tidak terkecuali juga di dunia pendidikan.
Perkembangan perguruan tinggi di Indonesia sekarang ini tidak terlepas dari peran teknologi informasi dalam membantu memajukannya, karena dengan adanya TI akan dapat mempercepat proses, mengurangi biaya, dan meningkatkan efisiensi dan efektifitas.
Disamping perkembangan computer yang sudah memasuki era laptop/notebook, perkembangan handphone pun tidak kalah pesatnya. Hampir bisa dipastikan setiap mahasiswa, orang tua, dosen dan manajemen universitas memiliki handphone, karena HP sekarang ini sudah bukan barang mewah lagi, tukang becakpun memiliki HP.

Penggunaan HP yang semakin meluas maka akan mendukung perkembangan TI ke depan. Kombinasi antara computer dan HP menjadi hal yang sangat menarik untuk di terapkan, apalagi sekarang ini koneksifitas antara HP dan computer semakin mudah, dapat melalui kabel data, USB, Infrared, Bluetooth, dll. Kombinasi keduanya aka melahirkan sebuah layanan yang spektakuler. Bagaimana tidak setiap informasi yang ada diperguruan tinggi dapat didapat hanya dari layar HP, misalkan nilai, IPK, KHS, Informasi kuliah, Absensi, dll. Dengan adanya combine dua teknologi ini maka akan meningkatkan layanan dan kemudahan user dalam mengakses informasi di perguruan tinggi.
Bagaimana prinsip kerjanya ?
SMS Gateway merupakan perpaduan antara layanan telepon seluler dengan computer, dimana computer akan merespon secara otomatis setiap ada request perintah yang didapat via SMS, dan computer akan mengirim jawaban dari request via SMS. Namun disini perlu diperhatikan mengenai aturan dalam mengirim SMS agar computer dapat menterjemahkan apa yang di request.
Bayangkan dengan penerapan teknologi ini maka computer akan dapat menggantikan seorang customer service atau layanan akademik dengan kerja yang lebih cepat dan standby 24 jam non stop (kecuali kalau servernya mati atau pulsanya habis ).

Untuk mengembangkannya anda cukup punya satu komputer sebagai server, satu modem GSM atau HP yang memiliki modem. Cukup mudah bukan untuk membuatnya.
Apalagi sekarang sudah banyak aplikasi-aplikasi yang opensource untuk melakukannya seperti dengan Gammu, sehingga hal ini semakin mempermudah dalam melakukannya.

Source :  http://andi.staff.uii.ac.id/




Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari SMS Gateway PHP di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.

Membuat SMS Gateway

Saat ini fungsi sms tidak sekedar untuk berkirim pesan kepada kerabat saja, tapi sudah beralih ke fungsi yang lain misalnya quiz sms, polling sms, layanan Info On Demand, dan sebagainya
Semua aplikasi tersebut membutuhkan suatu aplikasi yang disebut sms gateway.
Aplikasi SMS gateway bisa diterapkan pada Café, Toko, Rumah sakit, Sekolah, maupun instansi pemerintah

Contoh aplikasi Info On Demand untuk Sekolah misalnya:
•Info nilai ujian siswa.
cara kerja : client mengirim no.induk siswa diikuti mata pelajaran ke nomor server lalu server akan mengirim nilai ujian secara otomatis
•Info jadwal ujian, pendaftaran siswa baru dsb.

Sebenarnya untuk membuat SMS gateway tidak terlalu sulit. Bahkan bagi yang awam coding sekalipun. Cukup sedikit pengetahuan tentang Visual Basic dan mysql, anda bisa membuat apikasi SMS Gateway sendiri.
Yang diperlukan untuk membuat aplikasi SMS Gateway:

Hardware
• Computer
• GSM Modem atau HP Nokia series sebagai sms gateway
• Kabel Data USB /serial

Software
•Visual Basic
•Oxygen SMS Activex sebagai komponen Visual Basic yang bisa di download di http://www.oxygen-software.com.
•Mysql sebagai database

Tampilan SMS Activex dari Oxygen adalah sebagai berikut


Dengan SMS Activex, kita sudah bisa menerima sms, membaca inbox, maupun mengirim sms melalui PC.
Lalu gimana caranya agar kita bisa membuat sms gateway yang bisa memberikan layanan Info On demand?
Berikut langkah-langkahnya
1. Koneksikan database mysql dengan Visual Basic
2. Isi database mysql dengan database siswa
3. Memodifikasi script dari smsactivex. Sehingga setiap ada pesan masuk, program akan membalas secara otomatis.

Cara memodifikasi script akan dibahas lain waktu..:) 


Source :  http://ellymufidah.blogspot.com/




Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari SMS Gateway PHP di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.

Mengirim dan menerima SMS menggunakan HyperTerminal melalui Modem GSM Serial

Pada kesempatan ini akan saya berikan sedikit contoh bagaimana mengirim dan menerima sms menggunakan hyperterminal melalui modem GSM serial. Seperti kita sudah ketahui, bahwa program bawaan Windows® adalah sebuah program yang sangat familiar bagi orang yang hobby ataupun seorang teknisi yang sering berhubungan dengan interfacing. Hyperterminal merupakan software yang universal dan mudah penggunaannya.

Dengan menggunakan hyperterminal kita bisa mengatur setting serial port sesuai dengan hardware yang akan kita gunakan. Seperti seting baud rate, stop bit, parity, data bit, dan flow control.
Bagaimanakah cara membuat sebuah koneksi interface dengan hyperterminal? Berikut langkah-langkah yang bisa dilakukan:
1.       Buka Hyperterminal

2.       Selanjutnya akan muncul dialog box berikut, pilih Cancel






3.       Kemudian pilih Yes





4.      Pilih OK




5.       Pada Connection Description berikut, berilah nama SMS



6.       Kemudian pilihlah Serial Port yang akan digunakan dengan memilih dari combo box Connect using. Kemudian klik OK.



7.       Selanjutnya kita tentukan Port setting seperti berikut. Kemudian pilih OK




8.       Tampilan dibawah ini adalah workspace hyperterminal yang akan kita gunakan untuk berkomunikasi dengan modem









Untuk melakukan komunikasi dengan modem GSM serial, kita menggunakan AT+Command. AT+Command adalah kumpulan perintah yang diawali dengan AT untuk berkomunikasi dengan modem. Modem yang saya gunakan adalah Wavecom® Fastrack yang murah dan mudah dibeli. Modem yang saya gunakan memiliki sekumpulan AT+Command yang terangkum pada panduan yang dapat dilihat disini. Pada dasarnya modem yang dapat digunakan adalah modem yang support dengan AT+Command, walaupun pada beberapa merk modem mungkin memiliki beberapa perintah yang berbeda tergantung dari vendor pembuatnya.
Selanjutnya saya akan mencoba mengakses modem dengan perintah AT+Command. Diantaranya, informasi yang dapat saya ambil adalah: Manufacturer identification, Request model identification, Request revision identification, Product Serial Number, Request IMSI, Card Identification, Capabilities list, dan lain-lain. Lebih lengkapnya dapat dilihat pada wavecom command.
Saya akan mendapatkan informasi diatas dari modem yang saya gunakan.
  • Manufacturer identification
Pada hyperterminal ketik AT+CGMI kemudian diikuti Enter. Perintah ini akan memberikan identitas/nama pembuat modem GSM.
Hyperterminal –> Modem AT+CGMI Mendapatkan nama pembuat
Modem à Hyperteminal WAVECOM MODEMOK Perintah valid, Wavecom modem










  • Request model identification
Pada hyperterminal ketik AT+CGMM kemudian diikuti Enter. Perintah ini akan mendapatkan band (GSM 900, DCS 1800 atau PCS 1900) yang support dengan modem yang digunakan. Jawaban dari modem dapat kombinsi dari ketiganya.
Hyperterminal –> Modem AT+CGMM Mendapatkan versi hardware
Modem à Hyperteminal MULTIBAND 900E 1800OK




  • Request revision identification
Pada hyperterminal ketik AT+CGMR kemudian diikuti Enter. Perintah ini akan mendapatkan versi software.
Hyperterminal à Modem AT+CGMR Mendapatkan versi software
Modem à Hyperteminal 641b09gg.Q2403A 1320676 061804 14:38OK




  • Product Serial Number
Pada hyperterminal ketik AT+CGSN kemudian diikuti Enter. Perintah ini akan mendapatkan IMEI dari modem yang digunakan.
Hyperterminal –> Modem AT+CGSN Mendapatkan IMEI
Modem à Hyperteminal 352129002454434OK IMEI yang ada di EEPROM
Hyperterminal à Modem AT+CGSN Meminta IMEI
Modem à Hyperteminal +CME ERROR: 22 IMEI tidak ditemukan di EEPROM





Dan untuk informasi lainnya dapat merujuk pada AT+Command yang ada.
Selanjutnya kita akan mencoba menggunakan hyperterminal untuk mengirim dan menerima SMS melalui Modem GSM serial. Perintah-perintah yang digunakan adalah: AT+CMGF, AT+CSCA, AT+CMGS, AT+CNMI, AT+CMGR, AT+CMGD.
Mengirim SMS
Tes koneksi hyperterminal dengan Modem GSM menggunakan perintah AT diikuti Enter. Jika koneksi terhubung maka  akan muncul OK. Selanjutnya kita ketik berikut:
AT                                 balasan “OK” jika modem berfungsi
AT+CMGF=1                 mengatur mode Teks
AT+CSCA= ”+XXXX”   nomer SMS Center, tergantung SIM Card yang digunakan
Untuk mengirim pesan:
AT+CMGS= ”+NNNN” <Enter>                 nomer handphone yang akan dituju
Pesan_yang_akan_kita_kirim <Ctrl+Z>




Menerima SMS
Kemudian bagaimanakan jika kita ingin menerima pesan?  Modem GSM dapat disetting dengan dua cara, pertama Immediate, dan kedua Notification. Berikut langkah yang dapat dilakukan.
Tes koneksi hyperterminal dengan Modem GSM menggunakan perintah AT diikuti Enter. Jika koneksi terhubung maka  akan muncul OK. Selanjutnya kita ketik berikut:
a.       Immediate, ketika kita ingin hyperterminal menerima pesan yang masuk secara detil. GSM modem akan langsung mengirim pesan ke komputer dengan perintah +CMT.
AT+CMGF=1
AT+CNMI=1,2,0,0,0              mengatur agar modem mengirim pesan ke computer saat diterima
Saat pesan diterima, maka computer akan menerima
+CMT: “+nnnn”,,”10/12/06,06:04:10+28”
Pesan_balasan_dari_handphone



Computer akan memantau port serial secara kontinyu dan menampilkan pesan jika telah diterima.
b.       Notification, ketika pesan diterima, maka GSM akan mengirim notifikasi ke computer menggunakan perintah +CMTI diikuti nomer memori pesan tersimpan.
AT+CMGF=1
AT+CNMI=1,1,0,0,0
mengatur agar modem mengirim notifikasi  ke computer saat diterima
Saat pesan diterima, maka computer akan menerima
+CMTI: “SM”,9                                 pesan tersimpan pada memori nomer 9



Ketik AT+CMGR=9                            untuk membaca pesan dari memori nomer 9



Balasan dari modem:
+CMGR: “REC UNREAD”,”+nnnnn”,”10/12/06,06:13:06+28”
Pesan_balasan
OK
Kemudian ketik AT+CMGD=9                          menghapus pesan pada nomer memori 9


 
Demikian langkah-langkah untuk mengirim dan menerima sms menggunakan hyperterminal. Pada dasarnya untuk mengirim dan menerima SMS dapat menggunakan program-program yang lain, misalnya: Visual Basic 6.0, Visual Basic .NET, C++, Delphi atau pun yang lainnya dengan prinsip yang sama.
SMS dapat digunakan untuk pengukura jarak jauh (telemetri), pengendalian jarak jauh (telecommand), SMS gateway, dan lainnya.
Semoga bermanfaat.

Source : http://rohmadi.com/


Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari SMS Gateway PHP di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.

Mengirim SMS dengan Visual Basic .NET



Pada kesempatan ini, Anda akan mempelajari bagaimana mengirim pesan singkat melalui Visual Basic .NET menggunakan Modem GSM Wavecom. Modem Wavecom memiliki beberapa perintah AT Command yang berhubungan dengan SMS, diantara untuk mengirim, menghapus, membaca, dan lainnya. Komunikasi antara modem GSM dengan VB .NET melalui port serial. Sehingga Anda akan mudah melakukannya karena pada VB .NET sudah tersedia tool untuk
komunikasi melalui port serial.
Mengirim SMS


Untuk mengirim SMS melalui modem, lakukan langkah-langkah berikut ini:
1. AT
balasan “OK” jika modem berfungsi
2. AT+CMGF=1
mengatur mode Teks
3. AT+CSCA= ”+XXXX”
nomer SMS Center, tergantung SIM Card yang digunakan
Untuk mengirim pesan:
4. AT+CMGS= ”+NNNN” <Enter>
nomer handphone yang akan dituju
5. Pesan_yang_akan_kita_kirim <Ctrl+Z>
Kemudian, bagaimanakah jika menggunakan VB .NET?
Langkah-langkahnya sama dengan diatas.
1. SerialPort1.WriteLine(“AT”)
mengirim perintah AT ke port serial
2. SerialPort1.WriteLine(“AT+CMGF=1″ & vbCrLf)
mengirim perintah AT+CMGF=1 dan Enter, yaitu kita mengatur modem agar bekerja dalam mode teks.
3. SerialPort1.WriteLine(“AT+CSCA=” & Chr(34) & txtCenter.Text & Chr(34) & vbCrLf)
mengirim perintah AT+CSCA diikuti nomer SMS Center dan Enter. Nomer SMS Center di sini tergantung dari operator SIM card yang dipakai, sehingga bisa disesuaikan
4. SerialPort1.WriteLine(“AT+CMGS=” & Chr(34) & txtNotujuan.Text & Chr(34) & vbCrLf)
mengirim perintah AT+CMGS diikuti nomer tujuan SMS dan enter. Nomer tujuan bisa semua operator.
5. SerialPort1.WriteLine(txtPesan.Text & Chr(26)) ‘SMS sending
mengirim isi pesan diikuti Ctrl+z


dengan demikian isi SMS akan terkirim sukses.
Untuk lebih jelasnya, silakan pelajari pada code VB .NET yang disertakan. Semoga bermanfaat

 Source :  http://rohmadi.com/


Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari SMS Gateway PHP di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.

Membuat SMS Gateway dengan Visual Basic 6.0 (1)

 


Kirim *Reg#Jawaban A# ke nomer 0899763412xx, mungkin kita tidak asing dengan iklan ataupun ajakan dari presenter di sebuah televisi sekarang ini. Ataupun bentuk yang lain semisal, ya ini adalah sebuah bentuk aplikasi dari layanan SMS. Inilah yang disebut dengan SMS gateway secara sederhana. Konsep SMS gateway adalah sederhana. Yaitu, menerima SMS, mengolah pesan masuk sesuai syntax yang ditentukan, dan menghubungkan ke database, baik itu mencari database, menyimpan ataupun yang lainnya.
Hampir semua bank sekarang menyediakan layanan SMS banking, yang memberikan layanan dengan mengirimkan SMS dengan format syntax yang telah ditentukan.
Pada kali ini, Anda akan belajar bagaimana mengolah pesan masuk (SMS inbox), menjadi keyword yang dapat digunakan dalam pengolahan data database. Misalnya aplikasu SMS gateway untuk layanan akademik di sekolah.
Dicontohkan, syntax SMS untuk meminta data nilai suatu pelajaran adalah:
*Nilai#MataPelajaran#Kelas#Semester#
Dengan contoh dalam SMS client adalah, *Nilai#Matematika#VII#02#
Dari syntax di atas, Anda bisa mendapatkan empat keyword (kata kunci) yang selanjutnya dapat digunakan dalam pemrosesan data base, yaitu Nilai, Matematika, VII, 02.
Algoritma yang digunakan adalah:
-         temukan posisi karakter bintang ‘*’ dari pesan
-         temukan posisi karakter pagar ‘#’ pertama dari pesan
-         ambil keyword pertama yang posisinya adalah posisi_bintang+1 sampai posisi_pagarpertama-1
-         temukan posisi karakter pagar ‘#’ kedua dari pesan
-         ambil keyword kedua yang posisinya adalah posisi_pagarpertama+1 sampai posisi_pagarkedua-1
-         temukan posisi karakter pagar ‘#’ ketiga dari pesan
-         ambil keyword ketiga yang posisinya adalah posisi_pagarkedua+1 sampai posisi_pagarketiga-1
-         temukan posisi karakter pagar ‘#’ keempat dari pesan
-         ambil keyword keempat yang posisinya adalah posisi_pagarketiga+1 sampai posisi_pagarkeempat-1
bagaimanakah implementasi tiap langkah di atas dalam syntax VB 6?
Mari kita pelajari langkah-demi langkah.
-         untuk mencari posisi sebuah karakter dalam sebuah string, VB sudah menyediakan library. Kita bisa menggunakan syntax
InStr(Teks, KarakterDicari)
Dari contoh dapat dilakukan dengan
posBintang=InStr(Text1.Text, “*”)
posPagar1 = InStr(Text1, “#”)
dari sini Anda mendapat posisi karakter bintang dan karakter pagar1
-         untuk mengambil string dari sebuah string lain dengan posisi awal sampai sejumlah karakter dapat digunakan dengan syntax
Mid(Teks,PosAwal,PanjangKar)



Dari contoh di atas Anda bisa mendapatkan string keyword dengan code:
Text2 = Mid(Text1, posBintang + 1, posPagar1 – posBintang – 1)
-         kemudian untuk mencari keyword kedua adalah mengetahui posisi pagar kedua pada sisa string dan mengambil posisinya dalam string tersebut.



Setelah posisi pagar kedua diketahui, ambil string dengan posisi awal adalah posisi pagar pertama sejumlah selisih posisi pagar kedua dan pagar pertama.
code yang digunakan adalah:
‘keyword 2
temp = Right(Text1, Len(Text1) – posPagar1)
posPagar2 = InStr(temp, “#”)
Text3 = Mid(temp, 1, posPagar2 – 1)

-         untuk mencari keyword ketiga adalah mengetahui posisi pagar ketiga pada sisa string dan mengambil posisinya dalam string tersebut.



Setelah posisi pagar ketiga diketahui, ambil string dengan posisi awal adalah posisi pagar kedua sejumlah selisih posisi pagar ketiga dan pagar kedua.
code yang digunakan adalah:
‘keyword 3
temp1 = Right(temp, Len(temp) – posPagar2)
posPagar3 = InStr(temp1, “#”)
Text4 = Mid(temp1, 1, posPagar3 – 1)
-         untuk mencari keyword ketiga adalah mengetahui posisi pagar ketiga pada sisa string dan mengambil posisinya dalam string tersebut.



Setelah posisi pagar keempat diketahui, ambil string dengan posisi awal adalah posisi pagar ketiga sejumlah selisih posisi pagar keempat dan pagar ketiga.
code yang digunakan adalah:
‘keyword 4
temp = Right(temp1, Len(temp1) – posPagar3)
posPagar4 = InStr(temp, “#”)
Text5 = Mid(temp, 1, posPagar4 – 1)
-         Untuk lebih lengkapnya, code diatas adalah:
Dim posBintang As Integer, posPagar1 As Integer, posPagar2 As Integer, posPagar3 As Integer, posPagar4 As Integer
Dim temp As String, temp1 As String

‘keyword 1
posBintang = InStr(Text1, “*”)
posPagar1 = InStr(Text1, “#”)
Text2 = Mid(Text1, posBintang + 1, posPagar1 – posBintang – 1)

‘keyword 2
temp = Right(Text1, Len(Text1) – posPagar1)
posPagar2 = InStr(temp, “#”)
Text3 = Mid(temp, 1, posPagar2 – 1)

‘keyword 3
temp1 = Right(temp, Len(temp) – posPagar2)
posPagar3 = InStr(temp1, “#”)
Text4 = Mid(temp1, 1, posPagar3 – 1)

‘keyword 4
temp = Right(temp1, Len(temp1) – posPagar3)
posPagar4 = InStr(temp, “#”)
Text5 = Mid(temp, 1, posPagar4 – 1)
Dengan demikian Anda sudah bisa mendapatkan empat keyword yang ada dalam pesan, untuk selanjutnya dapat digunakan sebagai parameter dalam pengolahan database.
Demikian semoga bermanfaat.

Source :  http://rohmadi.com/


Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari SMS Gateway PHP di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.

Thursday, July 19, 2012

Membuat SMS Gateway dengan Mudah

Oke jadi kasusnya apa nih, kita ambil aja sample sederhana yaitu “pembuatan sms gateway untuk request nilai siswa” dan untuk menyederhanakan pembahasan keywordnya kita batasi saja yaitu request nilai tugas dan ulangan.
Apa yang harus di persiapkan, pertama kita rancang dulu databasenya dan berhubung artikel saya yang membahas tentang database SQLite masih hangat jadi untuk databasenya kita menggunakan SQLite saja.

SQLite adalah database standalone yang kecil, mungil dan gratis. Bagaimana cara membuat database di SQLite sudah saya bahas disini kemudian bagaimana mengaksesnya dari aplikasi juga sudah saya bahasa disini.
Berikut adalah rancangan sederhana database sms yang akan kita buat :

Ada banyak cara untuk membaca sms masuk dan membalasanya, salah satunya adalah menggunakan perintah AT COMMAND dan Microsoft sendiri sudah menyediakan komponen yang bisa mengeksekusi perintah-perintah tersebut.
Tentunya cara ini (menggunakan AT COMMAND) bukan cara yang favorit dikalangan programmer instan seperti Anda dan Saya :D , jadi diartikel ini saya menggunakan komponen pihak ketiga.
Ingat komponen ini adalah shareware, segala resiko (kemudahan dalam membuat aplikasi sms gateway) ditanggung sendiri :D , saya disini hanya share dan tidak terikat kerja sama dengan pihak ketiga tersebut.
Halah pernyataan ngawur :D
Berikut adalah cuplikan source code untuk membaca dan mengirim sms menggunakan komponen ActiveXpert SMS
1. Membaca SMS Masuk
01Private Sub cmdBacaSMS_Click()
02    Dim objGsmIn        As ASmsCtrl.GsmIn
03 
04    Set objGsmIn = New ASmsCtrl.GsmIn
05    With objGsmIn
06        .Activate "XXX-XXXX-XXXX-XXXXX"  'diisi serial number yg Anda dapatkan secara ilegal
07        .Device = "COM1" 'disesuaikan dengan port COM yang digunakan
08        .DeviceSpeed = 19200 'default = 0
09 
10        .Storage = 2 '0=sim 1=device 2=any
11        .DeleteAfterReceive = True
12        .Receive
13 
14        If .LastError = 0 Or .LastError = 23140 Then ' Success
15            .GetFirstMessage
16 
17            While .LastError = 0
18                Debug.Print "Pengirim : " & .MessageSender
19                Debug.Print "Isi SMS : " & .MessageData
20 
21                'TODO : INSERT KE TABEL SMS_IN
22 
23                .GetNextMessage
24            Wend
25        End If
26    End With
27    Set objGsmIn = Nothing
28End Sub
2. Mengirim sms
01Private Sub cmdKirimSMS_Click()
02    Dim objGsmOut       As ASmsCtrl.GsmOut
03    Dim objConstants    As ASmsCtrl.Constants
04 
05    Set objGsmOut = New ASmsCtrl.GsmOut
06    Set objConstants = New ASmsCtrl.Constants
07 
08    With objGsmOut
09        .Activate "XXX-XXXX-XXXX-XXXXX"  'diisi serial number yg Anda dapatkan secara ilegal
10        .Device = "COM1" 'disesuaikan dengan port COM yang digunakan
11        .DeviceSpeed = 19200 'default = 0
12        .RequestStatusReport = False
13 
14        .MessageType = objConstants.asMESSAGETYPE_TEXT 'mengirim pesan maksimal 160 karakter
15        '.MessageType = objConstants.asMESSAGETYPE_TEXT_MULTIPART 'jika lebih dari 160 karakter gunakan opsi ini
16 
17        .MessageRecipient = "nomor tujuan" 'biasanya menggunakan prefix +62
18        .MessageData = "isi pesan"
19        .Send 'kirim
20    End With
21 
22    Set objConstants = Nothing
23    Set objGsmOut = Nothing
24End Sub
Jadi cukup dengan bermodalkan 2 cuplikan kode diatas kita akan menyelesaikan aplikasi yg dibahas pada artikel kali ini.
Adapun untuk keyword yang akan digunakan sebagai berikut :
1. Request nilai tugas
keyword : tgs#nis
contoh :
tgs#9941224165
balasan :
Nilai tugas (NAMA SISWA) : BI=95, IPA=75, IPS=80, MTK=85
2. Request nilai ulangan harian
keyword : uh#nis
contoh :
uh#9941224165
balasan :
Nilai ulangan (NAMA SISWA) : BI=95, IPA=75, IPS=80, MTK=85
Berikut penjelasan ringkas beberapa cuplikan source code yang digunakan dalam pembuatan aplikasi sms gateway ini.
01Private Function connectToDevice(ByVal device As String) As Boolean
02    Dim objGsm      As ASmsCtrl.GsmOut
03    Dim manufaktur  As String
04 
05    On Error GoTo errHandle
06 
07    Set objGsm = New ASmsCtrl.GsmOut
08    With objGsm
09        .Activate SERIAL_NUMBER
10        .device = device
11 
12        manufaktur = .SendCommand("AT+CGMI", 500)  'menampilkan informasi manufactur
13        manufaktur = Replace$(manufaktur, vbCrLf, "")
14        manufaktur = Replace$(manufaktur, "OK", "")
15        manufaktur = Replace$(manufaktur, "ERROR", "")
16        manufaktur = Replace$(manufaktur, "AT+CGMI", "")
17    End With
18    Set objGsm = Nothing
19 
20    If Len(manufaktur) > 0 Then
21        txtModem.Text = manufaktur
22        connectToDevice = True
23    End If
24 
25    Exit Function
26errHandle:
27    connectToDevice = False
28End Function
Sesuai namanya fungsi connectToDevice digunakan untuk mengecek status modem sms yang terpasang, salah satu caranya adalah dengan mengirimkan AT COMMAND “AT+CGM”, AT COMMAND ini berfungsi untuk mendapatkan informasi manufaktur.
Sebagai contoh jika modem sms yg digunakan adalah hp siemens maka nilai yg dihasilkan dari perintah ini adalah “SIEMENS” dan tentunya hp yg bersangkutan juga harus mendukung AT COMMAND.
01Private Sub readSMS()
02    Dim objGsmIn        As ASmsCtrl.GsmIn
03    Dim objConstants    As ASmsCtrl.Constants
04    Dim cmd             As cCommand
05 
06    Dim keyword         As String
07    Dim phoneNumber     As String
08    Dim i               As Integer
09 
10    On Error GoTo errHandle
11 
12    Screen.MousePointer = vbHourglass
13    cmdStop.Enabled = False
14    tmrReceiveSms.Enabled = False
15 
16    DoEvents
17 
18    Set objGsmIn = New ASmsCtrl.GsmIn
19    Set objConstants = New ASmsCtrl.Constants
20 
21    With objGsmIn
22        .Activate SERIAL_NUMBER
23        .device = cmbPORT.Text
24        .DeviceSpeed = 0
25 
26        .Storage = cmbStorage.ItemData(cmbStorage.ListIndex)
27        .DeleteAfterReceive = True 'hapus sms jika sudah dibaca
28        .Receive
29 
30        If .LastError = 0 Or .LastError = 23140 Then 'baca sms sukses
31            .GetFirstMessage
32 
33            strSql = "INSERT INTO sms_in (phone_number, sms_keyword, date_in, time_in) VALUES (?, ?, ?, ?)"
34            Set cmd = conn.CreateCommand(strSql)
35            conn.BeginTrans
36 
37            i = 1
38            While .LastError = 0
39                phoneNumber = rep0to62(.MessageSender)
40                keyword = .MessageData
41 
42                cmd.SetText 1, phoneNumber
43                cmd.SetText 2, keyword
44                cmd.SetDate 3, Format(Now, "yyyy/MM/dd")
45                cmd.SetTime 4, Format(Now, "hh:mm:ss")
46 
47                cmd.Execute
48 
49                If i Mod 10 = 0 Then
50                    conn.CommitTrans
51                    DoEvents
52 
53                    conn.BeginTrans
54                End If
55 
56                i = i + 1
57 
58                .GetNextMessage
59            Wend
60 
61            conn.CommitTrans
62            Set cmd = Nothing
63 
64        End If
65    End With
66    Set objGsmIn = Nothing
67 
68    If cekSMSIn Then
69        Call sendSMS
70    Else
71        Call Wait(5000)
72    End If
73 
74    cmdStop.Enabled = True
75    Screen.MousePointer = vbDefault
76 
77    tmrReceiveSms.Enabled = True
78 
79    Exit Sub
80errHandle:
81    tmrReceiveSms.Enabled = True
82End Sub
Prosedur readSMS digunakan untuk membaca sms masuk dan menyimpannya ke tabel sms_in, berhubung komponen ActiveXpert SMS tidak mempunyai event yg menandai adanya sms masuk maka sebagai gantinya kita menggunakan timer untuk memanggil prosedur readSMS.
Salah satu properties penting yang dimiliki oleh ActiveXpert SMS adalah DeleteAfterReceive, jika nilainya diset true maka sms yg masuk akan otomatis dihapus dan tentunya setelah smsnya dibaca.
1Private Function cekSMSIn() As Boolean
2    Dim ret As Integer
3 
4    strSql = "SELECT COUNT(*) FROM sms_in WHERE status = 0" 'jika status = 0 berarti sms masuk belum di proses
5    ret = CInt(dbGetValue(strSql, 0))
6    If ret > 0 Then 'ada sms yg belum diproses
7        cekSMSIn = True
8    End If
9End Function
Prosedur cekSMSIn dibutuhkan oleh prosedur readSMS, jadi dengan adanya prosedur cekSMSIn ini program akan mengetahui kapan waktu yg tepat untuk memanggil prosedur sendSMS.
01Private Sub sendSMS()
02    Dim rsSend          As cRecordset
03    Dim cmd             As cCommand
04 
05    Dim objGsmOut       As ASmsCtrl.GsmOut
06    Dim objConstants    As ASmsCtrl.Constants
07 
08    Dim phoneNumber     As String
09    Dim keyword         As String
10    Dim smsBalasan      As String
11 
12    On Error GoTo errHandle
13 
14    'cek sms yang belum di proses, ditandai dg status = 0
15    strSql = "SELECT id, phone_number, sms_keyword " & _
16             "FROM sms_in " & _
17             "WHERE status = 0 " & _
18             "ORDER BY id"
19    Set rsSend = conn.OpenRecordset(strSql)
20    If Not rsSend.EOF Then
21        Set objGsmOut = New ASmsCtrl.GsmOut
22        Set objConstants = New ASmsCtrl.Constants
23 
24        objGsmOut.Activate SERIAL_NUMBER
25        objGsmOut.device = cmbPORT.Text
26        objGsmOut.DeviceSpeed = 0
27        objGsmOut.RequestStatusReport = False
28        objGsmOut.MessageType = objConstants.asMESSAGETYPE_TEXT_MULTIPART
29 
30        Do While Not rsSend.EOF
31            'ganti prefix nomor hp 0 -> +62
32            phoneNumber = rep0to62("" & rsSend("phone_number").Value)
33            keyword = rsSend("sms_keyword").Value
34 
35            smsBalasan = getBalasanSms(keyword, phoneNumber)
36 
37            objGsmOut.MessageRecipient = phoneNumber
38            objGsmOut.MessageData = smsBalasan
39            objGsmOut.Send
40 
41            If objGsmOut.LastError = 0 Or objGsmOut.LastError = 23140 Then 'sms sukses dikirim
42                'update status sms -> 1
43                strSql = "UPDATE sms_in SET status = ?, no_ref = ? " & _
44                         "WHERE id = ?"
45                Set cmd = conn.CreateCommand(strSql)
46                With cmd
47                    .SetInt32 1, 1
48                    .SetInt32 2, objGsmOut.MessageReference
49                    .SetInt32 3, rsSend("id").Value
50 
51                    .Execute
52                End With
53                Set cmd = Nothing
54 
55                'insert ke tabel sms_out, untuk histori sms keluar
56                strSql = "INSERT INTO sms_out (phone_number, replay_msg, date_out, time_out) VALUES (?, ?, ?, ?)"
57                Set cmd = conn.CreateCommand(strSql)
58                With cmd
59                    .SetText 1, phoneNumber
60                    .SetText 2, smsBalasan
61                    .SetDate 3, Format(Now, "yyyy/MM/dd")
62                    .SetTime 4, Format(Now, "hh:mm:ss")
63 
64                    .Execute
65                End With
66                Set cmd = Nothing
67 
68            Else 'sms gagal dikirim
69                'update status sms -> 1
70 
71                'ini masih bisa dikembangkan lagi dengan menambah kolom max_jumlah_kirim di tabel sms_in
72                'jadi bisa diberi aturan sms yg gagal dikirim > 3x baru status smsnya diupdate menjadi 1
73                strSql = "UPDATE sms_in SET status = ?, no_ref = ? " & _
74                         "WHERE id = ?"
75                Set cmd = conn.CreateCommand(strSql)
76                With cmd
77                    .SetInt32 1, 1
78                    .SetInt32 2, objGsmOut.MessageReference
79                    .SetInt32 3, rsSend("id").Value
80 
81                    .Execute
82                End With
83                Set cmd = Nothing
84            End If
85 
86            Call Wait(5000)
87 
88            rsSend.MoveNext
89        Loop
90        Set objConstants = Nothing
91        Set objGsmOut = Nothing
92    End If
93 
94    Exit Sub
95errHandle:
96    Resume Next
97End Sub
Prosedur sendSMS akan mengolah sms masuk yg belum di proses (ditandai dengan status = 0), mengupdate statusnya menjadi 1 jika berhasil mengirimkan sms, kemudian menyimpannya ke tabel sms_out sebagai histori pengiriman sms.
1Public Function rep0to62(ByVal phoneNumber As String) As String
2    'fungsi untuk mengganti prefix 0 -> +62
3 
4    rep0to62 = phoneNumber
5    If Left(phoneNumber, 1) = "0" Then rep0to62 = "+62" & Right(phoneNumber, Len(phoneNumber) - 1)
6End Function
Sesuai namanya fungsi ini berguna untuk mengganti prefix nomor hp 0 menjadi +62 (kode indonesia).
Terakhir fungsi untuk memproses keyword sms yang masuk dan sekaligus sebagai balasan untuk sms keluar.
001Public Function getBalasanSms(ByVal keywordSms As String, ByVal phoneNumber As String) As String
002    Dim rs              As cRecordset
003    Dim param1          As String
004    Dim arrKeyword()    As String
005 
006    Dim prefix          As String
007    Dim nilai           As String
008    Dim nama            As String
009 
010    Dim tha             As String
011    Dim semester        As String
012 
013    If Len(keywordSms) > 0 Then
014        If InStr(1, keywordSms, "#") > 0 Then 'karakter # -> separator keyword
015            arrKeyword = Split(keywordSms, "#")
016            If Not (Len(arrKeyword(0)) > 0) Then
017                getBalasanSms = "Keyword sms salah"
018                Exit Function
019 
020            Else
021                'do nothing
022            End If
023 
024        Else
025            ReDim arrKeyword(0)
026            arrKeyword(0) = keywordSms
027        End If
028 
029    Else
030        getBalasanSms = "Keyword sms salah"
031        Exit Function
032    End If
033 
034    prefix = arrKeyword(0)
035    prefix = UCase$(prefix)
036 
037    If UBound(arrKeyword) > 0 Then param1 = arrKeyword(1) 'untuk contoh disini param1 bernilai nomor induk siswa
038 
039    'untuk pengembangan lebih lanjut tahun ajaran dan semester dibuat settingan tersendiri
040    tha = "2009/2010"
041    semester = 2
042 
043    Select Case prefix
044        Case "TGS"
045            'validasi nis siswa
046            If Not isValidNIS(param1) Then getBalasanSms = Replace(NIS_SALAH, "<nis>", param1): Exit Function
047 
048            'validasi no hp siswa
049            'nama sekolah sebaiknya disimpan didalam variabel
050            If Not isValidHPSiswa(param1, phoneNumber) Then
051                getBalasanSms = Replace(HP_UNREG, "<nama_sekolah>", "SMA Negeri Yogyakarta")
052                getBalasanSms = Replace(getBalasanSms, "<no_hp>", phoneNumber): Exit Function
053            End If
054 
055            strSql = "SELECT UPPER(nama) FROM siswa WHERE nis = '" & param1 & "'"
056            nama = CStr(dbGetValue(strSql, ""))
057 
058            'mulai proses pencarian nilai
059            strSql = "SELECT matapelajaran_kode, nilai " & _
060                     "FROM nilai_tugas " & _
061                     "WHERE siswa_nis = '" & param1 & "' AND tahun_ajaran = '" & tha & "' AND semester = " & semester & " " & _
062                     "ORDER BY matapelajaran_kode"
063            Set rs = conn.OpenRecordset(strSql)
064            If Not rs.EOF Then
065                Do While Not rs.EOF
066                    nilai = nilai & rs("matapelajaran_kode").Value & "=" & rs("nilai").Value & ", "
067                    rs.MoveNext
068                Loop
069            End If
070 
071            If Len(nilai) > 0 Then
072                nilai = Left(nilai, Len(nilai) - 2)
073                getBalasanSms = "Nilai tugas (" & nama & ") : " & nilai
074 
075            Else
076                getBalasanSms = "Nilai tugas (" & nama & ") sedang dalam proses pendataan"
077            End If
078 
079        Case "UH"
080            'validasi nis siswa
081            If Not isValidNIS(param1) Then getBalasanSms = Replace(NIS_SALAH, "<nis>", param1): Exit Function
082 
083            'validasi no hp siswa
084            'nama sekolah sebaiknya disimpan didalam variabel
085            If Not isValidHPSiswa(param1, phoneNumber) Then
086                getBalasanSms = Replace(HP_UNREG, "<nama_sekolah>", "SMA Negeri Yogyakarta")
087                getBalasanSms = Replace(getBalasanSms, "<no_hp>", phoneNumber): Exit Function
088            End If
089 
090            strSql = "SELECT UPPER(nama) FROM siswa WHERE nis = '" & param1 & "'"
091            nama = CStr(dbGetValue(strSql, ""))
092 
093            'mulai proses pencarian nilai
094            strSql = "SELECT matapelajaran_kode, nilai " & _
095                     "FROM nilai_ulangan " & _
096                     "WHERE siswa_nis = '" & param1 & "' AND tahun_ajaran = '" & tha & "' AND semester = " & semester & " " & _
097                     "ORDER BY matapelajaran_kode"
098            Set rs = conn.OpenRecordset(strSql)
099            If Not rs.EOF Then
100                Do While Not rs.EOF
101                    nilai = nilai & rs("matapelajaran_kode").Value & "=" & rs("nilai").Value & ", "
102                    rs.MoveNext
103                Loop
104            End If
105 
106            If Len(nilai) > 0 Then
107                nilai = Left(nilai, Len(nilai) - 2)
108                getBalasanSms = "Nilai ulangan (" & nama & ") : " & nilai
109 
110            Else
111                getBalasanSms = "Nilai ulangan (" & nama & ") sedang dalam proses pendataan"
112            End If
113 
114        Case Else
115            getBalasanSms = "Keyword sms salah"
116    End Select
117End Function

Untuk mengetahui daftar hp/modem apa saja yang didukung, jangan sungkan dan malu-malu untuk mengklik link ini.

Source :  http://coding4ever.wordpress.com/


Anda ingin mencari refrensi dan contoh program lengkap ? Kami ada. Sekarang Anda bisa mencari SMS Gateway PHP di situs ini : http://www.bunafitkomputer.com. Koleksi program lengkap di sana, proyek PHP dan MySQL, juga jQuery dan Framework. Bukunya juga ada.