index.js 2.04 KB
var telegram = require('node-telegram-bot-api');
var logger = require('./logger.js').start();
var evo = require('./evo-im.js');

var config = require('./config.json');

evo.start({
    config: config,
    logger: logger
});

var chat_ids = {};

var options = {
  webHook: {
    port: config.webhook_port,
    key: __dirname+'/key.pem',
    cert: __dirname+'/crt.pem'
  }
};

var bot = new telegram(config.token, options);
bot.setWebHook(config.webhook_prefix + config.token, __dirname+'/crt.pem');

function deleteChatId(from) {
	delete chat_ids[from];
}

function sendMessage(destination, message) {
	logger.info('Sending reply to ' + destination + ': ' + message);
	var chat_id = chat_ids[destination];
	bot.sendMessage(chat_id, message);
}

function createHttpResponseServer(){
	var httpServer = http.createServer(function(request,response){
		var qs = url.parse(request.url, true).query;
		logger.info('Incoming request from SMSIN server:', {qs: qs})
		//logger.info(qs);
		response.end('OK');

		sendMessage(qs.PhoneNumber, qs.text);
	});
	httpServer.listen(config.listen_port, function(){
		logger.info("listening on " + config.listen_port);
	})
}
createHttpResponseServer();

bot.getMe().then(function (me) {
  logger.info('Hi my name is %s!', me.username);
});

bot.on('text', function (msg) {
	logger.info(msg);

    var from = msg.from.username.toUpperCase() + config.msisdn_suffix;

	var now = Math.floor(new Date().getTime()/1000);

	if (now - msg.date > config.message_max_age){
		var message = "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + msg.text;
		logger.info(message, {msg: msg})
		//bot.sendMessage(msg.chat.id, message);
        sendMessage(from, message);
		return;
	}

	chat_ids[from] = msg.chat.id;

    var greeting_prefix = "Pesan anda telah diterima:";
    if (config.greeting_prefix) {
        greeting_prefix = config.greeting_prefix;
    }

	bot.sendMessage(msg.chat.id, greeting_prefix + ' ' + msg.text);
    setTimeout(
        evo.onMessage,
        300,
        from, msg.text, msg.date * 1000, sendMessage
    );
});