Commit 62e23ff59dffa5732af3859f6d11747a7d9e4a9d
1 parent
f43dbc16a3
Exists in
master
Hapus parameter tdk terpakai
Showing 1 changed file with 1 additions and 1 deletions Inline Diff
lib/transport.js
1 | "use strict"; | 1 | "use strict"; |
2 | 2 | ||
3 | const url = require('url'); | 3 | const url = require('url'); |
4 | const request = require('request'); | 4 | const request = require('request'); |
5 | const uuidv4 = require('uuid/v4'); | 5 | const uuidv4 = require('uuid/v4'); |
6 | const moment = require('moment'); | 6 | const moment = require('moment'); |
7 | 7 | ||
8 | const config = require('komodo-sdk/config'); | 8 | const config = require('komodo-sdk/config'); |
9 | const logger = require('komodo-sdk/logger'); | 9 | const logger = require('komodo-sdk/logger'); |
10 | 10 | ||
11 | const modemSelect = require('./modemSelect'); | 11 | const modemSelect = require('./modemSelect'); |
12 | const modems = require('./modems2'); | 12 | const modems = require('./modems2'); |
13 | const partnerLastSeen = require('./partner-last-seen'); | 13 | const partnerLastSeen = require('./partner-last-seen'); |
14 | const history = require('./history'); | 14 | const history = require('./history'); |
15 | 15 | ||
16 | function _send(destinationNumber, msg, handlerName) { | 16 | function _send(destinationNumber, msg, handlerName) { |
17 | 17 | ||
18 | if (msg.length > 160) { | 18 | if (msg.length > 160) { |
19 | const newMsg = msg.slice(0, 160); | 19 | const newMsg = msg.slice(0, 160); |
20 | const remainingMsg = msg.slice(160); | 20 | const remainingMsg = msg.slice(160); |
21 | 21 | ||
22 | _send(destinationNumber, newMsg, handlerName); | 22 | _send(destinationNumber, newMsg, handlerName); |
23 | setTimeout(() => { | 23 | setTimeout(() => { |
24 | _send(destinationNumber, remainingMsg, handlerName); | 24 | _send(destinationNumber, remainingMsg, handlerName); |
25 | }, 2000); | 25 | }, 2000); |
26 | 26 | ||
27 | return; | 27 | return; |
28 | } | 28 | } |
29 | 29 | ||
30 | const modem = modems.get('name', handlerName); | 30 | const modem = modems.get('name', handlerName); |
31 | if (!modem) { | 31 | if (!modem) { |
32 | logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, handler_name: handlerName }); | 32 | logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, handler_name: handlerName }); |
33 | return; | 33 | return; |
34 | } | 34 | } |
35 | 35 | ||
36 | if (!modem.reportIp || !modem.reportPort || !modem.reportApikey) { | 36 | if (!modem.reportIp || !modem.reportPort || !modem.reportApikey) { |
37 | logger.warn('Invalid modem configuration', { modem }); | 37 | logger.warn('Invalid modem configuration', { modem }); |
38 | return; | 38 | return; |
39 | } | 39 | } |
40 | 40 | ||
41 | const reqId = uuidv4(); | 41 | const reqId = uuidv4(); |
42 | 42 | ||
43 | history.push({ | 43 | history.push({ |
44 | ts: moment().format('YYYY-MM-DD HH:mm:ss'), | 44 | ts: moment().format('YYYY-MM-DD HH:mm:ss'), |
45 | modem: { | 45 | modem: { |
46 | name: handlerName, | 46 | name: handlerName, |
47 | }, | 47 | }, |
48 | direction: 'OUTGOING', | 48 | direction: 'OUTGOING', |
49 | partner: destinationNumber, | 49 | partner: destinationNumber, |
50 | message: msg, | 50 | message: msg, |
51 | }); | 51 | }); |
52 | 52 | ||
53 | const requestOptions = { | 53 | const requestOptions = { |
54 | url: url.format({ | 54 | url: url.format({ |
55 | protocol: 'http', | 55 | protocol: 'http', |
56 | hostname: modem.reportIp, | 56 | hostname: modem.reportIp, |
57 | port: modem.reportPort, | 57 | port: modem.reportPort, |
58 | }), | 58 | }), |
59 | qs: { | 59 | qs: { |
60 | msg: msg, | 60 | msg: msg, |
61 | number: destinationNumber, | 61 | number: destinationNumber, |
62 | reqid: reqId, | 62 | reqid: reqId, |
63 | apikey: modem.reportApikey | 63 | apikey: modem.reportApikey |
64 | } | 64 | } |
65 | } | 65 | } |
66 | 66 | ||
67 | logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName }); | 67 | logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName }); |
68 | request(requestOptions, function(err, res, body) { | 68 | request(requestOptions, function(err, res, body) { |
69 | if (err) { | 69 | if (err) { |
70 | logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName }); | 70 | logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName }); |
71 | 71 | ||
72 | } | 72 | } |
73 | else if (res.statusCode != 200) { | 73 | else if (res.statusCode != 200) { |
74 | logger.warn('Modem handler not responding with HTTP status code 200.', { http_status_code: res.statusCode, req_id: reqId, handler_name: handlerName }); | 74 | logger.warn('Modem handler not responding with HTTP status code 200.', { http_status_code: res.statusCode, req_id: reqId, handler_name: handlerName }); |
75 | } | 75 | } |
76 | else { | 76 | else { |
77 | logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body }); | 77 | logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body }); |
78 | } | 78 | } |
79 | }) | 79 | }) |
80 | 80 | ||
81 | } | 81 | } |
82 | 82 | ||
83 | async function send(partner, msg, origin) { | 83 | async function send(partner, msg) { |
84 | if (!partner) return; | 84 | if (!partner) return; |
85 | 85 | ||
86 | if (typeof msg !== 'string') { | 86 | if (typeof msg !== 'string') { |
87 | logger.warn('Message to send is not a string, ignoring message'); | 87 | logger.warn('Message to send is not a string, ignoring message'); |
88 | return; | 88 | return; |
89 | } | 89 | } |
90 | 90 | ||
91 | msg = msg.trim(); | 91 | msg = msg.trim(); |
92 | if (!msg) return; | 92 | if (!msg) return; |
93 | 93 | ||
94 | const destinationNumber = modemSelect.removeSuffixFromNumber(partner, config); | 94 | const destinationNumber = modemSelect.removeSuffixFromNumber(partner, config); |
95 | 95 | ||
96 | // logger.verbose('Choosing handler name', { partner, destinationNumber, msg, origin }); | 96 | // logger.verbose('Choosing handler name', { partner, destinationNumber, msg, origin }); |
97 | let handlerName = await partnerLastSeen.get(destinationNumber) ; | 97 | let handlerName = await partnerLastSeen.get(destinationNumber) ; |
98 | 98 | ||
99 | if (!handlerName) { | 99 | if (!handlerName) { |
100 | logger.warn(`Unknown handler for sending message to partner`, { partner, destinationNumber }); | 100 | logger.warn(`Unknown handler for sending message to partner`, { partner, destinationNumber }); |
101 | return; | 101 | return; |
102 | } | 102 | } |
103 | 103 | ||
104 | _send(destinationNumber, msg, handlerName); | 104 | _send(destinationNumber, msg, handlerName); |
105 | } | 105 | } |
106 | 106 | ||
107 | exports.send = send; | 107 | exports.send = send; |