Commit b03e7bb2f57a60d7ebeedf0aa409711d33541459

Authored by Adhidarma Hadiwinoto
1 parent 9dcf4a4f47
Exists in master and in 1 other branch webadmin

config.send_on_process_msg

Showing 2 changed files with 2 additions and 1 deletions Inline Diff

1 { 1 {
2 "origin": "EVO-CP", 2 "origin": "EVO-CP",
3 "name": "EVO-CP", 3 "name": "EVO-CP",
4 "messaging_url": "http://localhost:32979/", 4 "messaging_url": "http://localhost:32979/",
5 "apiserver": { 5 "apiserver": {
6 "port": 9183 6 "port": 9183
7 }, 7 },
8 8
9 "max_length": 140, 9 "max_length": 140,
10 "max_message_age_in_secs": 300, 10 "max_message_age_in_secs": 300,
11 "sleep_before_unlock_modem_ms": 1200, 11 "sleep_before_unlock_modem_ms": 1200,
12 "ignore_prefix": false, 12 "ignore_prefix": false,
13 "number_suffix": "", 13 "number_suffix": "",
14 "send_on_process_msg": false,
14 15
15 "sender": { 16 "sender": {
16 "url": "http://192.168.0.181:59194/service/sendsms", 17 "url": "http://192.168.0.181:59194/service/sendsms",
17 "username": "app1", 18 "username": "app1",
18 "password": "1234" 19 "password": "1234"
19 }, 20 },
20 "modems": [ 21 "modems": [
21 { 22 {
22 "name": "SENDER-AS13", 23 "name": "SENDER-AS13",
23 "disabled": true, 24 "disabled": true,
24 "outgoing": true, 25 "outgoing": true,
25 "imsi": null, 26 "imsi": null,
26 "prefix": [] 27 "prefix": []
27 } 28 }
28 ] 29 ]
29 } 30 }
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: Exception on sending message to EVO-CP', {
55 xid, 55 xid,
56 partner, 56 partner,
57 msgHead, 57 msgHead,
58 modem: modem.name, 58 modem: modem.name,
59 e: e.message, 59 e: e.message,
60 }); 60 });
61 } 61 }
62 62
63 messagingClient.onIncomingMessage({ 63 messagingClient.onIncomingMessage({
64 me: modem.imsi || modem.name, 64 me: modem.imsi || modem.name,
65 partner, 65 partner,
66 partner_raw: partner, 66 partner_raw: partner,
67 msg: msgHead, 67 msg: msgHead,
68 origin_label: modem.imsi || modem.name, 68 origin_label: modem.imsi || modem.name,
69 origin_transport: 'SMS', 69 origin_transport: 'SMS',
70 origin_partner: partner, 70 origin_partner: partner,
71 do_not_forward_to_core: true, 71 do_not_forward_to_core: true,
72 is_outgoing: true, 72 is_outgoing: true,
73 }); 73 });
74 74
75 await sleep(config.sleep_before_unlock_modem_ms || 1200); 75 await sleep(config.sleep_before_unlock_modem_ms || 1200);
76 modemLocks.unlock(modem.name); 76 modemLocks.unlock(modem.name);
77 77
78 if (msgTail) { 78 if (msgTail) {
79 await sendToModem(partner, msgTail, modem, part + 1); 79 await sendToModem(partner, msgTail, modem, part + 1);
80 } 80 }
81 } 81 }
82 82
83 exports.send = async (partner, msg) => { 83 exports.send = async (partner, msg) => {
84 if (typeof partner !== 'string' || !partner.trim()) return; 84 if (typeof partner !== 'string' || !partner.trim()) return;
85 if (typeof msg !== 'string' || !msg.trim()) return; 85 if (typeof msg !== 'string' || !msg.trim()) return;
86 86
87 if (msg.trim().search(/PROSES$/) >= 0) return; 87 if (!config.send_on_process_msg && (msg.trim().search(/PROSES$/) >= 0)) return;
88 88
89 const xid = uniqid(); 89 const xid = uniqid();
90 90
91 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', { 91 logger.info('TRANSPORT: Got CORE message to forward to EVO-CP', {
92 xid, 92 xid,
93 partner, 93 partner,
94 msg, 94 msg,
95 }); 95 });
96 96
97 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner); 97 const modem = config.ignore_prefix ? modems.randomModem() : modems.randomModemByPrefix(partner);
98 if (!modem) { 98 if (!modem) {
99 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', { 99 logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', {
100 xid, 100 xid,
101 partner, 101 partner,
102 msg, 102 msg,
103 }); 103 });
104 return; 104 return;
105 } 105 }
106 106
107 const to = removeSuffix(partner, config.number_suffix || ''); 107 const to = removeSuffix(partner, config.number_suffix || '');
108 await sendToModem(to, msg.trim(), modem, xid, 1); 108 await sendToModem(to, msg.trim(), modem, xid, 1);
109 }; 109 };
110 110