Commit 70431f3a447d24ec1ee379ffc68b8472923984ad

Authored by Adhidarma Hadiwinoto
1 parent b6d23624ab
Exists in master

Default modem.reportPathSms

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

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;