sonny210183

See also: Other Geeks@INDC

August 2009 - Posts

Mini SMS Gateway on Your Windows Mobile Phone
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.
Share this post: | | | |