index.js 1.86 KB
var request = require('request');
var http = require('http');
var url = require('url');
var fs = require('fs');
var ini = require('ini');
var xmpp = require('simple-xmpp');

var config = ini.parse(fs.readFileSync('./config.ini', 'utf-8'));

function createHttpListener() {

    var httpServer = http.createServer(function(request,response){
    
    var qs = url.parse(request.url, true).query;
        console.log('Incoming message from SMSIN server:');
        console.log(qs);
        response.end('OK');
        
        sendMessage(qs.PhoneNumber, qs.text);
    });
    
    httpServer.listen(config.globals.listen_port, function(){
        console.log("listening on " + config.globals.listen_port);
    })
}

function sendMessage(destination, message) {
    xmpp.send(destination, message);
}

function reportToSMSIN(from, message) {
    var opts = {
        url: config.globals.smsin,
        qs: {
            PhoneNumber: from,
            Text: message,
            Res_Port: config.globals.listen_port,
            SMSCID: config.globals.smscid
        }
    }
    
    request(opts, function(err, response, body) {
        if (err) {
            console.log('Error reporting to SMSIN: ' + err);
            return;
        }
    });
}

xmpp.on('online', function(data) {
    console.log('Online');
    console.log(data);
    console.log('Connected with JID: ' + data.jid.user);
});

xmpp.on('chat', function(from, message) {
    //xmpp.send(from, 'echo: ' + message);
    console.log('Incoming message from ' + from + ': ' + message);
    reportToSMSIN(from, message);
});

xmpp.on('error', function(err) {
    console.error(err);
});

xmpp.on('subscribe', function(from) {
    xmpp.acceptSubscription(from);
});

xmpp.connect({
        jid: config.globals.jid,
        password: config.globals.password,
});

// check for incoming subscription requests
xmpp.getRoster();

createHttpListener();