Posts Tagged SMS
AplikasiSMS – Mengirim USSD dengan SMSLib
Posted by Achmad Lutfi in Java, Netbeans, SMSLib on April 26, 2015
Posting kali ini adalah pembahasan terakhir dari pembuatan AplikasiSMS, yaitu tentang mengirim USSD menggunakan smslib.
Untuk mengirim ussd dengan smslib sebenernya sudah disediakan method tersendiri, yaitu sendUssdCommand(). Tetapi dalam praktiknya, method tersebut tidak berfungsi normal saat menggunakan hp merk Sony Ericson seperti K310, W200. Jika modem yang digunakan adalah modem wavecom, dengan method ini sudah berjalan normal. Agar AplikasiSMS ini dapat berjalan lebih banyak modem, maka pengiriman ussd menggunakan method sendCustomATCommand().
/** * Method untuk mengirim USSD * @param tujuan * @param ussd * @return * @throws Exception */ public String sendUssd(String tujuan, String ussd) throws Exception{ if(service.getServiceStatus()==Service.ServiceStatus.STARTED){ if(!sendUssdManual.trim().isEmpty()){ sendUssdManual=""; } lblStatus.setText("PROSES"); tulisLayar(3, "["+tujuan+"]", ussd, calendar.getTime(), "USSD SENT"); try{ tempString3 = gateway.sendCustomATCommand("at+cusd=1,\""+ussd+"\",15\r"); tempString3 = tempString3.trim(); }catch(Exception exception){ exception.printStackTrace(); } if(tempString3==null || tempString3.isEmpty()){ tempString3 = "ERROR1"; } }else{ tempString3 = "ERROR2"; } return tempString3; }
Untuk menangkap pesan dari proses ussd, kita akan memanfaatkan fasilitas callback dari smslib. Berikut inner class yang digunakan.
/** * Class yang akan dijalankan saat aplikasi menerima pesan USSD dari USSD yang telah dikirim */ class USSDInboundNotification implements IUSSDNotification{ @Override public void process(AGateway ag, USSDResponse ussdr) { System.out.println(ussdr); if(ussdr.getContent()!=null){ if(trxDial!=null && !trxDial.isEmpty()){ tulisLayar(2, "["+trxDial+"]", ussdr.getContent(), calendar.getTime(), "USSD INBOUND READ"); trxDial=""; }else{ tulisLayar(2, "[-]", ussdr.getContent(), calendar.getTime(), "USSD INBOUND READ"); } }else{ tulisLayar(2, "[-]", ussdr.getSessionStatus().toString(), calendar.getTime(), "USSD INBOUND ERROR"); } if(ussdr.getSessionStatus().equals(USSDSessionStatus.FURTHER_ACTION_REQUIRED)){ try{ Thread.sleep(1000); System.out.println("Hasil AT1 : "+gateway.sendCustomATCommand("at\r")); System.out.println("Hasil AT2 : "+gateway.sendCustomATCommand("at+cusd=2\r")); }catch(Exception ex){ ex.printStackTrace(); } } } }
Pesan ussd yang diterima akan ditampilkan dalam layar aplikasi dengan memanfaatkan method tulisLayar(). Didalam aplikasi ini tidak mendukung ussd yang interaktif, jadi setelah menerima pesan sesi ussd akan dihapus.
AplikasiSMS – Membaca SMS dengan SMSLib
Posted by Achmad Lutfi in Java, Netbeans, SMSLib on April 24, 2015
Kali ini kita masih membahas bagian dari AplikasiSMS, yaitu bagian yang digunakan untuk membaca sms yang masuk dan menghapus sms tersebut.
Didalam AplikasiSMS, digunakan dua cara dalam melakukan pembacaan sms. Yang pertama, sms dibaca saat smslib pertama kali berjalan dengan menggunakan cara synchronous dan yang kedua saat ada sms yang masuk dengan memanfaatkan kelas callback smslib (asynchronous).
Pembacaan sms secara synchronous menggunakan method readMessage(), source codenya seperti berikut.
/** * Method untuk membaca pesan yang masuk kemudian menghapusnya secara otomatis * @param sleep * @throws Exception */ public void readMessage(int sleep) throws Exception{ if(service.getServiceStatus()==Service.ServiceStatus.STARTED){ inboudMessageList = new ArrayList<InboundMessage>(); service.readMessages(inboudMessageList, MessageClasses.ALL); if(inboudMessageList.size()>0){ for (InboundMessage msg : inboudMessageList){ //tulis dilayar tulisLayar(0, HPUtil.cekHP(msg.getOriginator()), msg.getText(), msg.getDate(), "MESSAGE READ"); service.deleteMessage(msg); } Thread.sleep(sleep); } } }
Dengan method diatas, semua pesan yang masuk akan dibaca dengan memanfaatkan ArrayList. Setelah itu sms akan ditampilkan dilayar aplikasi pesan yang ada di modem akan langsung dihapus.
Jika smslib sudah berjalan, pembacaan sms memanfaatkan fasilitas callback yang terdapat di smslib. Inner class yang digunakan adalah sebagai berikut.
/** * Class yang akan dijalankan saat aplikasi menerima pesan baru */ class InboundNotification implements IInboundMessageNotification{ @Override public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg){ if (msgType == MessageTypes.INBOUND){ try { if(msg.getText()!=null && msg.getOriginator()!=null){ tulisLayar(0, HPUtil.cekHP(msg.getOriginator()), msg.getText(), msg.getDate(), "MESSAGE READ"); } service.deleteMessage(msg); } catch (Exception ex) { onWarning("Terjadi Kesalahan saat memproses pesan yang masuk !!\n"+ex.getMessage()); Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex); } } } }
Ketika sms masuk, smslib akan memanggil class InboundNotification dan menjalankan method process(). Didalam method tersebut, sms akan ditampilkan dilayar dan sms yang ada dimodem akan dihapus.
Dengan memanfaatkan fasilitas callback, kita tidak perlu membuat sebuah method yang digunakan untuk membaca sms yang masuk. Jadi source code menjadi lebih ringkas.
AplikasiSMS – Mengirim SMS dengan SMSLIB
Posted by Achmad Lutfi in Java, Netbeans, SMSLib on April 19, 2015
Pada posting kali ini, kita akan mencoba membahas source code mengirim sms dengan smslib dalam AplikasiSMS. Didalam AplikasiSMS, pengiriman sms dilakukan dengan cara asynchronous. Dengan cara ini proses pengiriman akan diatur oleh smslib dengan cara memasukkan dalam sebuah antrian.
Dengan menggunakan cara pengiriman asynchronous, maka proses pengiriman akan dilakukan di background, setelah proses pengiriman selesai dikerjakan maka smslib akan menjalankan class callback yang kita buat.
/** * Method untuk mengirim pesan menggunakan metode async * @param tujuan * @param message * @throws Exception */ public void sendMessage(String tujuan, String message) throws Exception{ tujuan = HPUtil.cekHP(tujuan); if(service.getServiceStatus()==Service.ServiceStatus.STARTED){ outboundMessage = new OutboundMessage(tujuan, message); service.queueMessage(outboundMessage); } }
Source code diatas adalah source code yang digunakan untuk mengirim sms. Method yang digunakan untuk mengirim secara asynchronous adalah queueMessage().
Ketika proses pengiriman sms selesai dikerjakan, maka source code class yang dipanggil adalah sebagai berikut :
/** * Class yang akan dijalankan setelah proses pengiriman pesan selesai dikerjakan oleh SMSLIB */ class OutboundNotification implements IOutboundMessageNotification{ @Override public void process(AGateway arg0, OutboundMessage arg1) { // sms yang sudah terkirim, ditampilkan pada layar tulisLayar(1, HPUtil.cekHP(arg1.getRecipient()), arg1.getText(), arg1.getDate(), arg1.getMessageStatus().toString()); } }
Dari class tersebut, kita dapat mengetahui status sms yang kita kirim, apakah berhasil terkirim atau gagal.
Kita akan bahas cara membaca sms dengan smslib dilain waktu. 😀
Java – Menjalankan AplikasiSMS dengan SMSLIB
Posted by Achmad Lutfi in Java, SMSLib on April 11, 2015
Kali ini, kita akan coba menjalankan AplikasiSMS yang ada bagian project. Aplikasi tersebut dibuat menggunakan bahasa pemrograman java, dan library yang digunakan adalah SMSLib versi 3.5.4 dan RXTX untuk komunikasi dengan serial port.
Sebelum menjalankan aplikasi, buat terlebih dahulu file “terminal.conf” jika file tersebut belum ada. Kalo sudah ada, langsung saja di edit, disesuaikan dengan COM PORT dan BAUDRATE modem. Karena AplikasiSMS menggunakan RXTX, maka kita tidak bisa langsung menjalankan file jar nya, kita perlu menambahkan VMOPTION terlebih dulu seperti berikut : Read the rest of this entry »
Java SMS Gateway dengan SMSLib 3.5.1
Posted by Achmad Lutfi in Java, Netbeans, SMSLib on September 21, 2011
Abis lebaran, bukannya tambah semangat nulis malah jadi agak males. Abis berjuang melawan kemalesan, akhirnya menang juga dan bisa nulis lagi. hehehe
Udah 2 mingguan ini berkutat dengan SMS Gateway, awalnya sih berkutat dengan GAMMU tapi sekarang berkutat dengan SMSLib. Sebenere GAMMU enak banget konfigurasi dan pemakaiannya, hanya saja pengene agar lebih mudah integrasi dengan Java makanya dengan agak terpaksa pindah deh ke SMSLib.
SMSLib sendiri merupakan Library java yang digunakan untuk mempermudah mengirim dan menerima SMS tanpa harus menggunakan AT Command secara langsung. SMSLib murni menggunakan Java, hanya saja SMSLib membutuhkan JavaComm atau RXTX buat komunikasi dengan Hardware.
Awalnya sih, agak bingung juga make SMSLib. Setelah coba sana sini akhirnya seneng juga makenya. Hehehe
Recent Comments