Commit 173e452e529aec2ed4692dfbbccd0b97f3e464eb

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

Autosplit

Showing 4 changed files with 54 additions and 20 deletions Side-by-side Diff

lib/message-splitter.js
... ... @@ -0,0 +1,4 @@
  1 +module.exports = (msg, maxLength) => [
  2 + msg.trim().slice(0, maxLength).trim(),
  3 + msg.trim().slice(maxLength).trim(),
  4 +];
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 };
... ... @@ -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",
... ... @@ -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",