diff --git a/lib/apiserver/index.js b/lib/apiserver/index.js index 6a2d9b5..d35e14a 100644 --- a/lib/apiserver/index.js +++ b/lib/apiserver/index.js @@ -39,7 +39,7 @@ function onIncomingSms(req, res) { const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || ''); - partnerLastSeen.set(req.query.number, req.query.modem); + partnerLastSeen.set(req.query.number, req.query.modem_imsi); history.push({ ts: req.query.ts || moment().format('YYYY-MM-DD HH:mm:ss'), diff --git a/lib/transport.js b/lib/transport.js index 6f3b271..d5bb638 100644 --- a/lib/transport.js +++ b/lib/transport.js @@ -13,23 +13,25 @@ const modems = require('./modems2'); const partnerLastSeen = require('./partner-last-seen'); const history = require('./history'); -function _send(destinationNumber, msg, handlerName) { +function _send(destinationNumber, msg, handlerIMSI) { if (msg.length > 160) { + logger.info('Splitting message'); + const newMsg = msg.slice(0, 160); const remainingMsg = msg.slice(160); - _send(destinationNumber, newMsg, handlerName); + _send(destinationNumber, newMsg, handlerIMSI); setTimeout(() => { - _send(destinationNumber, remainingMsg, handlerName); - }, 2000); + _send(destinationNumber, remainingMsg, handlerIMSI); + }, 1000); return; } - const modem = modems.get('name', handlerName); + const modem = modems.get('imsi', handlerIMSI); if (!modem) { - logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, handler_name: handlerName }); + logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, modem_imsi: handlerIMSI }); return; } @@ -43,7 +45,9 @@ function _send(destinationNumber, msg, handlerName) { history.push({ ts: moment().format('YYYY-MM-DD HH:mm:ss'), modem: { - name: handlerName, + name: modem.name, + imsi: modem.imsi, + msisdn: modem.msisdn, }, direction: 'OUTGOING', partner: destinationNumber, @@ -65,17 +69,17 @@ function _send(destinationNumber, msg, handlerName) { } } - logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName }); + logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, modem_name: modem.name, modem_imsi: modem.imsi }); request(requestOptions, function(err, res, body) { if (err) { - logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName }); + logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, modem_name: modem.name, modem_imsi: modem.imsi }); } else if (res.statusCode != 200) { - logger.warn('Modem handler not responding with HTTP status code 200.', { http_status_code: res.statusCode, req_id: reqId, handler_name: handlerName }); + logger.warn('Modem handler not responding with HTTP status code 200.', { http_status_code: res.statusCode, req_id: reqId, modem_name: modem.name, modem_imsi: modem.imsi }); } else { - logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body }); + logger.verbose('Message sent to handler', { req_id: reqId, modem_name: modem.name, modem_imsi: modem.imsi, response_body: body }); } }) @@ -95,14 +99,14 @@ async function send(partner, msg) { const destinationNumber = modemSelect.removeSuffixFromNumber(partner, config); // logger.verbose('Choosing handler name', { partner, destinationNumber, msg, origin }); - let handlerName = await partnerLastSeen.get(destinationNumber) ; + const handlerIMSI = await partnerLastSeen.get(destinationNumber) ; - if (!handlerName) { + if (!handlerIMSI) { logger.warn(`Unknown handler for sending message to partner`, { partner, destinationNumber }); return; } - _send(destinationNumber, msg, handlerName); + _send(destinationNumber, msg, handlerIMSI); } exports.send = send; \ No newline at end of file