[Sms Gateway] Membaca Sms Pada Modem (Smslib)
Ok, ini lanjutan dari seri SMS Gateway. SMS Gateway tidak terlepas adanya acara mendapatkan dan mengirimkan SMS. Nah untuk memahami cara aplikasi dalam membaca SMS pada aplikasi SMS Gateway, berikut ini saya menyebarkan sebuah project java untuk mendapatkan SMS.
Lakukan pengaturan library menyerupai pada tutorial Pengaturan Java Library untuk SMS Gateway memakai SMSLib, atau kalau tidak mau repot mendownload library-library nya , silahkan download arahan sumbernya terlebih dahulu (ada dibagian bawah tutorial).
Dalam project saya sudah sertakan library penunjang.
File-file jarnya, dipakai sebagai library pada project, dan yang lainnya silahkan copykan sesuai dengan foldernya.
Dalam project hanya terdapat 1 Class, berikut arahan yang terdapat didalammnya:
package javadanphp.smsgateway; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.smslib.AGateway; import org.smslib.AGateway.GatewayStatuses; import org.smslib.AGateway.Protocols; import org.smslib.ICallNotification; import org.smslib.IGatewayStatusNotification; import org.smslib.IInboundMessageNotification; import org.smslib.IOrphanedMessageNotification; import org.smslib.InboundMessage; import org.smslib.InboundMessage.MessageClasses; import org.smslib.Message.MessageTypes; import org.smslib.SMSLibException; import org.smslib.Service; import org.smslib.modem.SerialModemGateway; public class ReadMessage { public void mulaiService() throws Exception { ListmsgList; //Setting notifikasi/pemberitahuan pesan //jika ada pesan masuk maka class/fungsi ini akan dijalankan InboundNotification inboundNotification = new InboundNotification(); //Setting notifikasi/pemberitahuan panggilan //jika ada panggilan masuk maka class/fungsi ini akan dijalankan CallNotification callNotification = new CallNotification(); //Setting notifikasi/pemberitahuan perubahan status gateway //Jika status gateway berubah, sanggup jadi berhenti, eroor dll, maka class ini akan dijalankan GatewayStatusNotification statusNotification = new GatewayStatusNotification(); OrphanedMessageNotification orphanedMessageNotification = new OrphanedMessageNotification(); //menjalankan service try { System.out.println("APLIKASI: Membaca pesan dari modem."); System.out.println("-----------------------------------"); // Inisialisasi Gateway/Pengaturan modem GSM modem. SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM8", 115200, "Wavecom", "Fastrack"); gateway.setProtocol(Protocols.PDU); // memakai modem sebagai akseptor pesan gateway.setInbound(true); // memakai modem sebagai pengirim pesan gateway.setOutbound(true); // mengatur sim Pin (jika sim memakai pin, kalau tidak masukan 0000) gateway.setSimPin("0000"); // Setting notifikasi yang telah di inisialisasi sebelumnya kedalam gateway Service.getInstance().setInboundMessageNotification(inboundNotification); Service.getInstance().setCallNotification(callNotification); Service.getInstance().setGatewayStatusNotification(statusNotification); Service.getInstance().setOrphanedMessageNotification(orphanedMessageNotification); // Menambahkan gateway ke service Service.getInstance().addGateway(gateway); // Memulai Servce Service.getInstance().startService(); // Mengambil beberap informasi penting dari modem System.out.println(); System.out.println("Detail Informasi Modem:"); System.out.println(" Pembuat: " + gateway.getManufacturer()); System.out.println(" Model: " + gateway.getModel()); System.out.println(" Serial No: " + gateway.getSerialNo()); System.out.println(" SIM IMSI: " + gateway.getImsi()); System.out.println(" Signal: " + gateway.getSignalLevel() + " dBm"); System.out.println(" Baterai: " + gateway.getBatteryLevel() + "%"); System.out.println(); //Mulai Membaca pesan msgList = new ArrayList<>(); Service.getInstance().readMessages(msgList, MessageClasses.ALL); if(msgList.isEmpty()){ for (InboundMessage msg : msgList) { System.out.println(msg); } }else{ System.out.println("Saat ini, tidak ada pesan dalam modem"); } //Jika pesan sudah dibaca dan ditampilkan semuanya, service akan masuk pada mode tunggu System.out.println("---------------------------------------------"); System.out.println(); System.out.println("Mode Tunggu - tekan untuk menghentikan service."); System.in.read(); } catch (SMSLibException | IOException | InterruptedException e) { System.out.println("ERROR: " + e.getMessage()); } finally { Service.getInstance().stopService(); } } public class InboundNotification implements IInboundMessageNotification { @Override public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg) { if (msgType == MessageTypes.INBOUND) { System.out.println(">>>Pesan masuk pada gateway/modem: " + gateway.getGatewayId()); } else if (msgType == MessageTypes.STATUSREPORT) { System.out.println(">>>Laporan pengiriman pesan dari gateway: " + gateway.getGatewayId()); } System.out.println("PESAN:"); System.out.println(msg); } } public class CallNotification implements ICallNotification { @Override public void process(AGateway gateway, String callerId) { System.out.println(">>>Ada panggilan masuk: " + gateway.getGatewayId() + " : " + callerId); } } public class GatewayStatusNotification implements IGatewayStatusNotification { @Override public void process(AGateway gateway, GatewayStatuses oldStatus, GatewayStatuses newStatus) { System.out.println(">>>Perubahan status gateway " + gateway.getGatewayId() + ", dari: " + oldStatus + " menjadi: " + newStatus); } } public class OrphanedMessageNotification implements IOrphanedMessageNotification { @Override public boolean process(AGateway gateway, InboundMessage msg) { System.out.println(">>>Pesan Orphaned diterima dari gateway: " + gateway.getGatewayId()); System.out.println(msg); // Masih dalam tahap test (keterangan dari SMSLIB) System.out.println("PESAN:"); return false; } } public static void main(String args[]) { ReadMessage app = new ReadMessage(); try { app.mulaiService(); } catch (Exception e) { System.out.println("ERROR: " + e.getMessage()); } } }
Nah berikut hasil running arahan diatas:
Tampilan aplikasi dikala dirunning dan berjalan dengan baik |
Tampilan aplikasi dikala ada telepon masuk (telepon akan otomatis di tutup oleh aplikasi) |
Tampilan aplikasi dikala ada SMS masuk |
Download projectnya:
Silahkan berikan feedback kalau ada yang kurang dimengerti.
Terima kasih sudah meluangkan waktu untuk mengunjungi blog ini.
Belum ada Komentar untuk "[Sms Gateway] Membaca Sms Pada Modem (Smslib)"
Posting Komentar