Compare View
Commits (4)
Changes
Showing 5 changed files 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'), |
lib/partner-last-seen.js
... | ... | @@ -3,14 +3,10 @@ |
3 | 3 | const REDIS_TTL_SECS = 3600 * 24 * 31; |
4 | 4 | |
5 | 5 | const config = require('komodo-sdk/config'); |
6 | -// const logger = require('komodo-sdk/logger'); | |
7 | 6 | |
8 | 7 | const redis = require('redis'); |
9 | 8 | const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' }); |
10 | 9 | |
11 | -const _caches = {}; | |
12 | - | |
13 | - | |
14 | 10 | function _composeKeyword(partner) { |
15 | 11 | return `POCHINKI_PARTNER_LAST_SEEN_${ partner }`; |
16 | 12 | } |
... | ... | @@ -23,12 +19,8 @@ function get(partnerNumber) { |
23 | 19 | if (!partnerNumber) { |
24 | 20 | resolve(null); |
25 | 21 | } |
26 | - else if (_caches[partnerNumber]) { | |
27 | - resolve(_caches[partnerNumber]); | |
28 | - } | |
29 | 22 | else { |
30 | 23 | const keyword = _composeKeyword(partnerNumber); |
31 | - // logger.verbose(`REDIS-DEBUG: GET`, {keyword}); | |
32 | 24 | |
33 | 25 | redisClient.get(keyword, function(err, reply) { |
34 | 26 | if (err) { |
... | ... | @@ -36,7 +28,6 @@ function get(partnerNumber) { |
36 | 28 | } |
37 | 29 | else if (reply) { |
38 | 30 | resolve(Number(reply)); |
39 | - _caches[partnerNumber] = Number(reply); | |
40 | 31 | } |
41 | 32 | else { |
42 | 33 | resolve(null); |
... | ... | @@ -46,18 +37,15 @@ function get(partnerNumber) { |
46 | 37 | }) |
47 | 38 | } |
48 | 39 | |
49 | -function set(partnerNumber, modemName) { | |
40 | +function set(partnerNumber, value) { | |
50 | 41 | partnerNumber = (partnerNumber || '').replace(/^\+/, ''); |
51 | 42 | |
52 | - if (!partnerNumber || !modemName) { | |
43 | + if (!partnerNumber || !value) { | |
53 | 44 | return; |
54 | 45 | } |
55 | 46 | |
56 | - _caches[partnerNumber] = modemName; | |
57 | - | |
58 | 47 | const keyword = _composeKeyword(partnerNumber); |
59 | - // logger.verbose('REDIS-DEBUG: SET', { keyword }) | |
60 | - redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS); | |
48 | + redisClient.set(keyword, value, 'EX', REDIS_TTL_SECS); | |
61 | 49 | } |
62 | 50 | |
63 | 51 | exports.get = get; |
lib/transport.js
... | ... | @@ -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 |
package-lock.json