Jumat, 01 April 2016

Integrasi iDempiere ERP dengan Kalkun SMS Server

Salah satu keunggulan opensource ERP adalah Flexibilitas untuk dapat diintegrasikan dengan aplikasi lain dengan menggunakan protocol standar.
Kalkun SMS Manager adalah aplikasi open source berbasis web yang ditulis dalam Bahasa pemrograman PHP untuk manajemen teks singkat yang dikirimkan/diterima di telepon bergerak (mobile phone) yang lebih dikenal dengan istilah SMS (Short message service) dengan memanfaatkan Gammu SMS Daemon (http://wammu.eu/smsd).
Proses yang terjadi didalam kalkun dapat digambarkan sebagai berikut.

Kalkun <--> Database <--> Gammu-SMSD <--> Phone/Modem




Kalkun dapat didownload di website ini http://kalkun.sourceforge.net/, dan manual instalasinya dapat dibaca disini https://github.com/back2arie/Kalkun/wiki
Integrasi iDempiere dan kalkun dilakukan dengan mengutilisasi API (Application Programming Interface) yang menggunakan protocol SOAP. Lebih lanjut dengan kalkun API dapat dibaca disini https://github.com/back2arie/Kalkun/wiki/API.
Kemudian kita buat sebuah class di iDempiere plugin dengan kode sebagai berikut,

/**
* Fungsi untuk mengirimkan pesan singkat dari iDempiere ke Kalkun    
* Server dengan menggunakan SOAP API
     * @param mobileNo
     * @param textMessage
     * @throws SOAPException
     */
public void sendSMS(String mobileNo,String textMessage)  throws SOAPException  {
 
        //definisi SOAP API Kalkun Server
Private String kalkun = http_alamat_soap_api_kalkun
         
        //variable untuk menangkap hasil dari SOAP API
        Boolean soapResult;
 
        SOAPMessage message = MessageFactory.newInstance().createMessage();
        SOAPHeader header = message.getSOAPHeader();
        header.detachNode();
 
        SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
        envelope.setAttribute("namespace","namespaceUrl");
 
        SOAPBody body = message.getSOAPBody();
        QName bodyName = new QName("sendMessage");
        SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
 
        //Nomor handphone tujuan
 
        SOAPElement destNumber = bodyElement.addChildElement("destinationNumber");
        destNumber.addTextNode(mobileNo);
         
        // isi SMS yang akan dikirim
     
        SOAPElement txtMessage = bodyElement.addChildElement("message");
        txtMessage.addTextNode(textMessage);
 
        //Koneksi ke SOAP API Kalkun Server
 
        SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection();
        SOAPMessage response = connection.call(message, kalkun);
        connection.close();
 
        SOAPBody responseBody = response.getSOAPBody();
        SOAPBodyElement responseElement = (SOAPBodyElement)responseBody.getChildElements().next();
        SOAPElement returnElement = (SOAPElement)responseElement.getChildElements().next();
 
        try {
 
            if(responseBody.getFault()!=null){
 
                 
            log.warning (“SMS Gagal dikirim”);
 
            } else {
 
             
            log.warning(“SMS terkirim”)
 
            }
 
        } 
 
        catch (IOException e) {
            log.warning( e.getMessage());
        }
 
         
//Hasil pengiriman gagal atau tidak dicatat didalam log iDempiere
 
if (log.isLoggable(Level.WARNING))log.log(Level.WARNING, "SMS Soap response" + getXmlFromSOAPMessage(message) + getXmlFromSOAPMessage(response));
     
    } // End of fungsi  sendSMS

Sekarang fungsi untuk menjembatani antara iDempiere dengan kalkun SMS Server dengan menggunakan SOAP API yang ada di kalkun sudah dapat digunakan.

Kelemahan dari SOAP API kalkun adalah sms dapat dikirim tanpa harus login ke kalkun, ini sangat berbahaya, untuk mengakalinya koneksi ke kalkun server dapat diproteksi dengan firewall yang hanya memperbolehkan koneksi dari IP iDempiere Server.
Semoga bermanfaat.

Tidak ada komentar:

Posting Komentar