Commit 70431f3a447d24ec1ee379ffc68b8472923984ad
1 parent
b6d23624ab
Exists in
master
Default modem.reportPathSms
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 | pathname: modem.reportPathSms, | 58 | pathname: modem.reportPathSms || '/sms', |
59 | }), | 59 | }), |
60 | qs: { | 60 | qs: { |
61 | msg: msg, | 61 | msg: msg, |
62 | number: destinationNumber, | 62 | number: destinationNumber, |
63 | reqid: reqId, | 63 | reqid: reqId, |
64 | apikey: modem.reportApikey, | 64 | apikey: modem.reportApikey, |
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName }); | 68 | logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName }); |
69 | request(requestOptions, function(err, res, body) { | 69 | request(requestOptions, function(err, res, body) { |
70 | if (err) { | 70 | if (err) { |
71 | logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName }); | 71 | logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName }); |
72 | 72 | ||
73 | } | 73 | } |
74 | else if (res.statusCode != 200) { | 74 | 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 }); | 75 | logger.warn('Modem handler not responding with HTTP status code 200.', { http_status_code: res.statusCode, req_id: reqId, handler_name: handlerName }); |
76 | } | 76 | } |
77 | else { | 77 | else { |
78 | logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body }); | 78 | logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body }); |
79 | } | 79 | } |
80 | }) | 80 | }) |
81 | 81 | ||
82 | } | 82 | } |
83 | 83 | ||
84 | async function send(partner, msg) { | 84 | async function send(partner, msg) { |
85 | if (!partner) return; | 85 | if (!partner) return; |
86 | 86 | ||
87 | if (typeof msg !== 'string') { | 87 | if (typeof msg !== 'string') { |
88 | logger.warn('Message to send is not a string, ignoring message'); | 88 | logger.warn('Message to send is not a string, ignoring message'); |
89 | return; | 89 | return; |
90 | } | 90 | } |
91 | 91 | ||
92 | msg = msg.trim(); | 92 | msg = msg.trim(); |
93 | if (!msg) return; | 93 | if (!msg) return; |
94 | 94 | ||
95 | const destinationNumber = modemSelect.removeSuffixFromNumber(partner, config); | 95 | const destinationNumber = modemSelect.removeSuffixFromNumber(partner, config); |
96 | 96 | ||
97 | // logger.verbose('Choosing handler name', { partner, destinationNumber, msg, origin }); | 97 | // logger.verbose('Choosing handler name', { partner, destinationNumber, msg, origin }); |
98 | let handlerName = await partnerLastSeen.get(destinationNumber) ; | 98 | let handlerName = await partnerLastSeen.get(destinationNumber) ; |
99 | 99 | ||
100 | if (!handlerName) { | 100 | if (!handlerName) { |
101 | logger.warn(`Unknown handler for sending message to partner`, { partner, destinationNumber }); | 101 | logger.warn(`Unknown handler for sending message to partner`, { partner, destinationNumber }); |
102 | return; | 102 | return; |
103 | } | 103 | } |
104 | 104 | ||
105 | _send(destinationNumber, msg, handlerName); | 105 | _send(destinationNumber, msg, handlerName); |
106 | } | 106 | } |
107 | 107 | ||
108 | exports.send = send; | 108 | exports.send = send; |