Commit 03f73469d9d7d21b16664e680138449d2f9bc98c

Authored by Adhidarma Hadiwinoto
1 parent c6c4d8d275
Exists in master

Partner last seen by IMSI

Showing 2 changed files with 19 additions and 15 deletions Side-by-side Diff

lib/apiserver/index.js
... ... @@ -39,7 +39,7 @@ function onIncomingSms(req, res) {
39 39  
40 40 const numberWithSuffix = req.query.number.replace(/^\+/, '') + (config.number_suffix || '');
41 41  
42   - partnerLastSeen.set(req.query.number, req.query.modem);
  42 + partnerLastSeen.set(req.query.number, req.query.modem_imsi);
43 43  
44 44 history.push({
45 45 ts: req.query.ts || moment().format('YYYY-MM-DD HH:mm:ss'),
... ... @@ -13,23 +13,25 @@ const modems = require('./modems2');
13 13 const partnerLastSeen = require('./partner-last-seen');
14 14 const history = require('./history');
15 15  
16   -function _send(destinationNumber, msg, handlerName) {
  16 +function _send(destinationNumber, msg, handlerIMSI) {
17 17  
18 18 if (msg.length > 160) {
  19 + logger.info('Splitting message');
  20 +
19 21 const newMsg = msg.slice(0, 160);
20 22 const remainingMsg = msg.slice(160);
21 23  
22   - _send(destinationNumber, newMsg, handlerName);
  24 + _send(destinationNumber, newMsg, handlerIMSI);
23 25 setTimeout(() => {
24   - _send(destinationNumber, remainingMsg, handlerName);
25   - }, 2000);
  26 + _send(destinationNumber, remainingMsg, handlerIMSI);
  27 + }, 1000);
26 28  
27 29 return;
28 30 }
29 31  
30   - const modem = modems.get('name', handlerName);
  32 + const modem = modems.get('imsi', handlerIMSI);
31 33 if (!modem) {
32   - logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, handler_name: handlerName });
  34 + logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, modem_imsi: handlerIMSI });
33 35 return;
34 36 }
35 37  
... ... @@ -43,7 +45,9 @@ function _send(destinationNumber, msg, handlerName) {
43 45 history.push({
44 46 ts: moment().format('YYYY-MM-DD HH:mm:ss'),
45 47 modem: {
46   - name: handlerName,
  48 + name: modem.name,
  49 + imsi: modem.imsi,
  50 + msisdn: modem.msisdn,
47 51 },
48 52 direction: 'OUTGOING',
49 53 partner: destinationNumber,
... ... @@ -65,17 +69,17 @@ function _send(destinationNumber, msg, handlerName) {
65 69 }
66 70 }
67 71  
68   - logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName });
  72 + 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 });
69 73 request(requestOptions, function(err, res, body) {
70 74 if (err) {
71   - logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName });
  75 + logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, modem_name: modem.name, modem_imsi: modem.imsi });
72 76  
73 77 }
74 78 else if (res.statusCode != 200) {
75   - logger.warn('Modem handler not responding with HTTP status code 200.', { http_status_code: res.statusCode, req_id: reqId, handler_name: handlerName });
  79 + 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 });
76 80 }
77 81 else {
78   - logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body });
  82 + logger.verbose('Message sent to handler', { req_id: reqId, modem_name: modem.name, modem_imsi: modem.imsi, response_body: body });
79 83 }
80 84 })
81 85  
... ... @@ -95,14 +99,14 @@ async function send(partner, msg) {
95 99 const destinationNumber = modemSelect.removeSuffixFromNumber(partner, config);
96 100  
97 101 // logger.verbose('Choosing handler name', { partner, destinationNumber, msg, origin });
98   - let handlerName = await partnerLastSeen.get(destinationNumber) ;
  102 + const handlerIMSI = await partnerLastSeen.get(destinationNumber) ;
99 103  
100   - if (!handlerName) {
  104 + if (!handlerIMSI) {
101 105 logger.warn(`Unknown handler for sending message to partner`, { partner, destinationNumber });
102 106 return;
103 107 }
104 108  
105   - _send(destinationNumber, msg, handlerName);
  109 + _send(destinationNumber, msg, handlerIMSI);
106 110 }
107 111  
108 112 exports.send = send;
109 113 \ No newline at end of file