Commit de56daabdbfbeb411d25994a524cb195ea8679fa

Authored by Adhidarma Hadiwinoto
1 parent efd4c3cf08
Exists in master

Add more metadata on sending exception to evo-cp

Showing 1 changed file with 6 additions and 3 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: 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 modem: modem.name, 58 modemName: modem.name,
59 e: e.message, 59 modemUrl: modem.url,
60 httpStatus: e.response && e.response.status,
61 eCode: e.code,
62 eMessage: e.message,
60 }); 63 });
61 } 64 }
62 65
63 messagingClient.onIncomingMessage({ 66 messagingClient.onIncomingMessage({
64 me: modem.imsi || modem.name, 67 me: modem.imsi || modem.name,
65 partner, 68 partner,
66 partner_raw: partner, 69 partner_raw: partner,
67 msg: msgHead, 70 msg: msgHead,
68 origin_label: modem.imsi || modem.name, 71 origin_label: modem.imsi || modem.name,
69 origin_transport: 'SMS', 72 origin_transport: 'SMS',
70 origin_partner: partner, 73 origin_partner: partner,
71 do_not_forward_to_core: true, 74 do_not_forward_to_core: true,
72 is_outgoing: true, 75 is_outgoing: true,
73 }); 76 });
74 77
75 await sleep(config.sleep_before_unlock_modem_ms || 1200); 78 await sleep(config.sleep_before_unlock_modem_ms || 1200);
76 modemLocks.unlock(modem.name); 79 modemLocks.unlock(modem.name);
77 80
78 if (msgTail) { 81 if (msgTail) {
79 await sendToModem(partner, msgTail, modem, part + 1); 82 await sendToModem(partner, msgTail, modem, part + 1);
80 } 83 }
81 } 84 }
82 85
83 exports.send = async (partner, msg) => { 86 exports.send = async (partner, msg) => {
84 if (typeof partner !== 'string' || !partner.trim()) return; 87 if (typeof partner !== 'string' || !partner.trim()) return;
85 if (typeof msg !== 'string' || !msg.trim()) return; 88 if (typeof msg !== 'string' || !msg.trim()) return;
86 89
87 if ( 90 if (
88 (!config.send_on_process_msg && (msg.trim().search(/PROSES$/) >= 0)) 91 (!config.send_on_process_msg && (msg.trim().search(/PROSES$/) >= 0))
89 ) return; 92 ) return;
90 93
91 const xid = uniqid(); 94 const xid = uniqid();
92 95
93 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', { 96 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', {
94 xid, 97 xid,
95 partner, 98 partner,
96 msg, 99 msg,
97 }); 100 });
98 101
99 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner); 102 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner);
100 if (!modem) { 103 if (!modem) {
101 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', { 104 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', {
102 xid, 105 xid,
103 partner, 106 partner,
104 msg, 107 msg,
105 }); 108 });
106 return; 109 return;
107 } 110 }
108 111
109 const to = removeSuffix(partner, config.number_suffix || ''); 112 const to = removeSuffix(partner, config.number_suffix || '');
110 await sendToModem(to, msg.trim(), modem, xid, 1); 113 await sendToModem(to, msg.trim(), modem, xid, 1);
111 }; 114 };
112 115