Saya ingin sekedar share mengenai Mini SMS Gateway, maksudnya adalah
handphone Anda sendiri pun bisa memiliki sms gateway sendiri. Fungsinya
adalah menerima sms, kemudian akan mem-parsing sms yang diterima untuk
diproses setelah itu mengirimkan sms balasan otomatis kepada sang
pengirim. Sebelumnya harus pasang terlebih dahulu SDK untuk windows
mobile dengan mendownloadnya pada
http://www.microsoft.com/DownLoads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en
Setelah didownload dan kemudian diinstal, maka akan didapat juga
Celullar Emulator untuk mengetes sms tanpa harus keluar pulsa.
Sebelumnya baca terlebih dahulu artikel yang saya dapat di
http://netindonesia.net/blogs/meidianto/archive/2009/04/23/menggunakan-cellular-emulator-pada-windows-mobile-6-sdk.aspx yang disumbangkan oleh Mas Ferry dan PDF yang saya dapat di
http://mti.ugm.ac.id/~ridi/self/MOBDEV-WM6-0208-Published.pdf
Library yg perlu di-add ke reference adalah Microsoft.WindowsMobile.
PocketOutlook;
Headernya jadi cukup seperti ini:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;
using Microsoft.WindowsMobile.PocketOutlook;
Untuk menerima sms adalah menggunakan kelas Message Interceptor, jadi pada saat form di-load jangan lupa sertakan kode berikut:
MessageInterceptor msgInterceptor = new MessageInterceptor(
InterceptionAction.Notify,
true); //pada option ini pesan yg diterima tidak dihapus, selain notify
juga ada yang langsung delete message begitu diterima
msgInterceptor.MessageReceived += new MessageInterceptorEventHandler(msgInterceptor_MessageReceived);
}
Method event handlernya:
void msgInterceptor_MessageReceived(object sender, MessageInterceptorEventArgs e)
{
if (e.Message is SmsMessage)
{
SmsMessage pesansms = (SmsMessage)e.Message;
processSMS(pesansms);
}
}
Nah
setelah itu method processSMS-nya yang tinggal dimainkan saja, bisa
menggunakan regular expression atau fungsi string split biasa. Perintah
sms itu biasanya dipisahkan oleh spasi, tetapi ada juga yang
menggunakan pagar (#). Fungsi sendSMS cukup sederhana dengan seperti
ini saja:
private void sendSMS(String kepada, String pesan)
{
try {
SmsMessage sms = new SmsMessage(kepada, pesan);
sms.Send();
}
catch (Exception ex) {
MessageBox.Show("Error sending sms: "+ex.Message);
}
}
private void processSMS(SmsMessage pesansms)
{
String smsbody = pesansms.Body;
String perintah[] = smsbody.Split(' '); //perintah sms dipisahkan oleh spasi
if (perintah.Length<2) //periksa apakah parameter kurang dari 2
sendSMS(pesansms.From.Address.ToString(), "Maaf parameter kurang, HELP: angka1 angka2");
else
{
try {
int op1 = Conver.toInt32(perintah[1]);
int op2 = Conver.toInt32(perintah[2]);
int hasil=op1+op2;
sendSMS(pesansms.From.Address.ToString(), "Hasil jumlah: " + hasil.toString());
}
catch (Exception ex)
{
sendSMS(pesansms.From.Address.ToString(), "Tipe data harus integer");
}
}
}
Setelah program dijalankan, maka program akan menunggu sms. Jika sms yg masuk adalah
1 2
maka sms balasan yang diterima
Hasil jumlah: 3
Tetapi jika parameter kurang akan mengeluarkan pesan:
Maaf parameter kurang, HELP: angka1 angka2
Jika parameter tidak kurang tetapi input tidak sesuai tipe datanya:
Tipe data harus integer
Sebenarnya
cukup simple konsep programnya, selanjutnya tinggal dikembangkan
sendiri sesuai kebutuhan. Mungkin bisa saja jika iseng2 ingin
menambahkan voting lewat sms dengan penyimpanan menggunakan teks atau
sms autoreply. Yang perlu diubah adalah di bagian processSMS saja.