Commit d0b271da07b3ca70fca4d177b992b2e0d700b0ad

Authored by Adhidarma Hadiwinoto
1 parent 5c9de7336a
Exists in master

Add response body log on exception on sending to evo-cp

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

1 const axios = require('axios'); 1 const axios = require('axios');
2 const moment = require('moment'); 2 const moment = require('moment');
3 const uniqid = require('uniqid'); 3 const uniqid = require('uniqid');
4 4
5 const config = require('komodo-sdk/config'); 5 const config = require('komodo-sdk/config');
6 const logger = require('komodo-sdk/logger'); 6 const logger = require('komodo-sdk/logger');
7 const messagingClient = require('komodo-center-messaging-client-lib'); 7 const messagingClient = require('komodo-center-messaging-client-lib');
8 8
9 const modems = require('./modems'); 9 const modems = require('./modems');
10 const messageSplitter = require('./message-splitter'); 10 const messageSplitter = require('./message-splitter');
11 const modemLocks = require('./modem-locks'); 11 const modemLocks = require('./modem-locks');
12 const removeSuffix = require('./remove-suffix'); 12 const removeSuffix = require('./remove-suffix');
13 13
14 async function sleep(ms) { 14 async function sleep(ms) {
15 return new Promise((resolve) => { 15 return new Promise((resolve) => {
16 setTimeout(() => { 16 setTimeout(() => {
17 resolve(); 17 resolve();
18 }, ms); 18 }, ms);
19 }); 19 });
20 } 20 }
21 21
22 async function sendToModem(partner, msg, modem, parentXid, part) { 22 async function sendToModem(partner, msg, modem, parentXid, part) {
23 const xid = parentXid || uniqid(); 23 const xid = parentXid || uniqid();
24 24
25 const [msgHead, msgTail] = messageSplitter(msg.trim(), Number(config.max_length) || 140); 25 const [msgHead, msgTail] = messageSplitter(msg.trim(), Number(config.max_length) || 140);
26 if (!msgHead) { 26 if (!msgHead) {
27 return; 27 return;
28 } 28 }
29 29
30 logger.info('TRANSPORT: Sending message to EVO-CP', { 30 logger.info('TRANSPORT: Sending message to EVO-CP', {
31 xid, 31 xid,
32 partner, 32 partner,
33 msg: msgHead, 33 msg: msgHead,
34 msgLength: msgHead.length, 34 msgLength: msgHead.length,
35 tailLength: msgTail.length, 35 tailLength: msgTail.length,
36 part, 36 part,
37 modem: modem.name, 37 modem: modem.name,
38 }); 38 });
39 39
40 await modemLocks.lock(modem.name); 40 await modemLocks.lock(modem.name);
41 41
42 try { 42 try {
43 await axios.get(modem.url || config.sender.url, { 43 await axios.get(modem.url || config.sender.url, {
44 params: { 44 params: {
45 to: partner, 45 to: partner,
46 password: modem.password || config.sender.password, 46 password: modem.password || config.sender.password,
47 ts: moment().format('YYYY-MM-DD HH:mm:ss'), 47 ts: moment().format('YYYY-MM-DD HH:mm:ss'),
48 text: msgHead, 48 text: msgHead,
49 modem: modem.name, 49 modem: modem.name,
50 username: modem.username || config.sender.username, 50 username: modem.username || config.sender.username,
51 }, 51 },
52 }); 52 });
53 } catch (e) { 53 } catch (e) {
54 logger.warn('TRANSPORT 32E1A559: Exception on sending message to EVO-CP', { 54 logger.warn('TRANSPORT 32E1A559: Exception on sending message to EVO-CP', {
55 xid, 55 xid,
56 partner, 56 partner,
57 msgHead, 57 msgHead,
58 modemName: modem.name, 58 modemName: modem.name,
59 modemUrl: modem.url, 59 modemUrl: modem.url,
60 httpStatus: e.response && e.response.status, 60 httpStatus: e.response && e.response.status,
61 eCode: e.code, 61 eCode: e.code,
62 eMessage: e.message, 62 eMessage: e.message,
63 responseBody: e.response && e.response.data,
63 }); 64 });
64 } 65 }
65 66
66 messagingClient.onIncomingMessage({ 67 messagingClient.onIncomingMessage({
67 me: modem.imsi || modem.name, 68 me: modem.imsi || modem.name,
68 partner, 69 partner,
69 partner_raw: partner, 70 partner_raw: partner,
70 msg: msgHead, 71 msg: msgHead,
71 origin_label: modem.imsi || modem.name, 72 origin_label: modem.imsi || modem.name,
72 origin_transport: 'SMS', 73 origin_transport: 'SMS',
73 origin_partner: partner, 74 origin_partner: partner,
74 do_not_forward_to_core: true, 75 do_not_forward_to_core: true,
75 is_outgoing: true, 76 is_outgoing: true,
76 }); 77 });
77 78
78 await sleep(config.sleep_before_unlock_modem_ms || 1200); 79 await sleep(config.sleep_before_unlock_modem_ms || 1200);
79 modemLocks.unlock(modem.name); 80 modemLocks.unlock(modem.name);
80 81
81 if (msgTail) { 82 if (msgTail) {
82 await sendToModem(partner, msgTail, modem, part + 1); 83 await sendToModem(partner, msgTail, modem, part + 1);
83 } 84 }
84 } 85 }
85 86
86 exports.send = async (partner, msg) => { 87 exports.send = async (partner, msg) => {
87 if (typeof partner !== 'string' || !partner.trim()) return; 88 if (typeof partner !== 'string' || !partner.trim()) return;
88 if (typeof msg !== 'string' || !msg.trim()) return; 89 if (typeof msg !== 'string' || !msg.trim()) return;
89 90
90 if ( 91 if (
91 (!config.send_on_process_msg && (msg.trim().search(/PROSES$/) >= 0)) 92 (!config.send_on_process_msg && (msg.trim().search(/PROSES$/) >= 0))
92 ) return; 93 ) return;
93 94
94 const xid = uniqid(); 95 const xid = uniqid();
95 96
96 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', { 97 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', {
97 xid, 98 xid,
98 partner, 99 partner,
99 msg, 100 msg,
100 }); 101 });
101 102
102 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner); 103 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner);
103 if (!modem) { 104 if (!modem) {
104 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', { 105 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', {
105 xid, 106 xid,
106 partner, 107 partner,
107 msg, 108 msg,
108 }); 109 });
109 return; 110 return;
110 } 111 }
111 112
112 const to = removeSuffix(partner, config.number_suffix || ''); 113 const to = removeSuffix(partner, config.number_suffix || '');
113 await sendToModem(to, msg.trim(), modem, xid, 1); 114 await sendToModem(to, msg.trim(), modem, xid, 1);
114 }; 115 };
115 116