Commit 173e452e529aec2ed4692dfbbccd0b97f3e464eb
1 parent
d9598d0eb7
Exists in
master
and in
1 other branch
Autosplit
Showing 4 changed files with 54 additions and 20 deletions Side-by-side Diff
lib/message-splitter.js
lib/transport.js
1 | 1 | const axios = require('axios'); |
2 | 2 | const moment = require('moment'); |
3 | +const uniqid = require('uniqid'); | |
3 | 4 | |
4 | 5 | const config = require('komodo-sdk/config'); |
5 | 6 | const logger = require('komodo-sdk/logger'); |
6 | 7 | const messagingClient = require('komodo-center-messaging-client-lib'); |
7 | 8 | |
8 | 9 | const modems = require('./modems'); |
10 | +const messageSplitter = require('./message-splitter'); | |
9 | 11 | |
10 | -exports.send = async (partner, msg) => { | |
11 | - if (typeof partner !== 'string' || !partner.trim()) return; | |
12 | - if (typeof msg !== 'string' || !msg.trim()) return; | |
12 | +async function sendToModem(partner, msg, modem, parentXid) { | |
13 | + const xid = parentXid || uniqid(); | |
13 | 14 | |
14 | - const modem = modems.randomModem(); | |
15 | - if (!modem) { | |
16 | - logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', { | |
17 | - partner, | |
18 | - msg, | |
19 | - }); | |
15 | + const [msgHead, msgTail] = messageSplitter(msg.trim(), 160); | |
16 | + if (msgHead) { | |
20 | 17 | return; |
21 | 18 | } |
22 | 19 | |
23 | 20 | logger.info('TRANSPORT: Sending message to EVO-CP', { |
21 | + xid, | |
24 | 22 | partner, |
25 | - msg, | |
23 | + msgHead, | |
26 | 24 | modem: modem.name, |
27 | 25 | }); |
28 | 26 | |
... | ... | @@ -32,15 +30,16 @@ exports.send = async (partner, msg) => { |
32 | 30 | to: partner, |
33 | 31 | password: config.sender.password, |
34 | 32 | ts: moment().format('YYYY-MM-DD HH:mm:ss'), |
35 | - text: msg.trim(), | |
33 | + text: msgHead, | |
36 | 34 | modem: modem.name, |
37 | 35 | username: config.sender.username, |
38 | 36 | }, |
39 | 37 | }); |
40 | 38 | } catch (e) { |
41 | 39 | logger.warn('TRANSPORT: Exception on sending message to EVO-CP', { |
40 | + xid, | |
42 | 41 | partner, |
43 | - msg, | |
42 | + msgHead, | |
44 | 43 | e: e.message, |
45 | 44 | }); |
46 | 45 | } |
... | ... | @@ -49,11 +48,34 @@ exports.send = async (partner, msg) => { |
49 | 48 | me: modem.imsi || modem.name, |
50 | 49 | partner, |
51 | 50 | partner_raw: partner, |
52 | - msg: msg.trim(), | |
51 | + msg: msgHead, | |
53 | 52 | origin_label: modem.imsi || modem.name, |
54 | 53 | origin_transport: 'SMS', |
55 | 54 | origin_partner: partner, |
56 | 55 | do_not_forward_to_core: true, |
57 | 56 | is_outgoing: true, |
58 | 57 | }); |
58 | + | |
59 | + if (msgTail) { | |
60 | + sendToModem(partner, msgTail, modem); | |
61 | + } | |
62 | +} | |
63 | + | |
64 | +exports.send = async (partner, msg) => { | |
65 | + if (typeof partner !== 'string' || !partner.trim()) return; | |
66 | + if (typeof msg !== 'string' || !msg.trim()) return; | |
67 | + | |
68 | + const xid = uniqid(); | |
69 | + | |
70 | + const modem = modems.randomModem(); | |
71 | + if (!modem) { | |
72 | + logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', { | |
73 | + xid, | |
74 | + partner, | |
75 | + msg, | |
76 | + }); | |
77 | + return; | |
78 | + } | |
79 | + | |
80 | + sendToModem(partner, msg.trim(), modem, xid); | |
59 | 81 | }; |
package-lock.json
... | ... | @@ -2653,6 +2653,16 @@ |
2653 | 2653 | "winston": "^3.2.1", |
2654 | 2654 | "winston-circular-buffer": "^1.0.0", |
2655 | 2655 | "winston-daily-rotate-file": "^3.10.0" |
2656 | + }, | |
2657 | + "dependencies": { | |
2658 | + "uniqid": { | |
2659 | + "version": "4.1.1", | |
2660 | + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", | |
2661 | + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", | |
2662 | + "requires": { | |
2663 | + "macaddress": "^0.2.8" | |
2664 | + } | |
2665 | + } | |
2656 | 2666 | } |
2657 | 2667 | }, |
2658 | 2668 | "kuler": { |
... | ... | @@ -4547,12 +4557,9 @@ |
4547 | 4557 | } |
4548 | 4558 | }, |
4549 | 4559 | "uniqid": { |
4550 | - "version": "4.1.1", | |
4551 | - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", | |
4552 | - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", | |
4553 | - "requires": { | |
4554 | - "macaddress": "^0.2.8" | |
4555 | - } | |
4560 | + "version": "5.2.0", | |
4561 | + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.2.0.tgz", | |
4562 | + "integrity": "sha512-LH8zsvwJ/GL6YtNfSOmMCrI9piraAUjBfw2MCvleNE6a4pVKJwXjG2+HWhkVeFcSg+nmaPKbMrMOoxwQluZ1Mg==" | |
4556 | 4563 | }, |
4557 | 4564 | "unpipe": { |
4558 | 4565 | "version": "1.0.0", |
package.json
... | ... | @@ -24,7 +24,8 @@ |
24 | 24 | "express": "^4.17.1", |
25 | 25 | "komodo-center-messaging-client-lib": "git+http://gitlab.kodesumber.com/komodo/komodo-center-messaging-client-lib.git", |
26 | 26 | "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git", |
27 | - "moment": "^2.24.0" | |
27 | + "moment": "^2.24.0", | |
28 | + "uniqid": "^5.2.0" | |
28 | 29 | }, |
29 | 30 | "devDependencies": { |
30 | 31 | "eslint": "^6.7.2", |