Commit 077f3b0aa21c030039f0ef39eac0749f88c8bc0d

Authored by Adhidarma Hadiwinoto
1 parent f53fe083fc
Exists in master

Support long sms (waiting for lock support on modem)

Showing 1 changed file with 37 additions and 17 deletions Side-by-side Diff

... ... @@ -50,32 +50,30 @@ async function _getApproriateHandler(partnerNumber, origin) {
50 50 return handlerToUse;
51 51 }
52 52  
53   -async function send(partner, msg, origin) {
54   - if (!partner) return;
55   -
56   - if (typeof msg !== 'string') {
57   - logger.warn('Message to send is not a string, ignoring message');
58   - return;
59   - }
60   -
61   - msg = msg.trim();
62   - if (!msg) return;
63   -
64   - const reqId = uuidv4();
  53 +function _send(destinationNumber, msg, handlerName) {
65 54  
  55 + /*
66 56 if (msg.length > 160 && !config.do_not_trim_long_sms) {
67 57 logger.verbose('Message trim to 160 chars');
68 58 msg = msg.slice(0, 156) + ' ...';
69 59 }
  60 + */
70 61  
71   - const destinationNumber = modems.removeSuffixFromNumber(partner, config);
  62 + if (msg.length > 160) {
  63 + const newMsg = msg.slice(0, 160);
  64 + const remainingMsg = msg.slice(160);
72 65  
73   - logger.verbose('Choosing handler name', { req_id: reqId, partner: partner, msg: msg, origin: origin });
74   - let handlerName = ( await _getApproriateHandler(destinationNumber) );
  66 + _send(destinationNumber, newMsg, handlerName);
  67 + setTimeout(() => {
  68 + _send(destinationNumber, remainingMsg, handlerName);
  69 + }, 2000);
  70 +
  71 + return;
  72 + }
75 73  
76 74 const modem = modems.getModemConfig(handlerName, config.modems);
77 75 if (!modem) {
78   - logger.warn('Not knowing modem to use. Ignoring message', { partner: partner, msg: msg, origin: origin, handler_name: handlerName });
  76 + logger.warn('Not knowing modem to use. Ignoring message', { destination_number: destinationNumber, msg: msg, handler_name: handlerName });
79 77 return;
80 78 }
81 79  
... ... @@ -84,6 +82,8 @@ async function send(partner, msg, origin) {
84 82 return;
85 83 }
86 84  
  85 + const reqId = uuidv4();
  86 +
87 87 const requestOptions = {
88 88 url: modem.url,
89 89 qs: {
... ... @@ -94,7 +94,7 @@ async function send(partner, msg, origin) {
94 94 }
95 95 }
96 96  
97   - logger.info('Sending message to modem handler', { req_id: reqId, partner: partner, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName });
  97 + logger.info('Sending message to modem handler', { req_id: reqId, destination_number: destinationNumber, msg: msg, msg_length: msg.length, handler_name: handlerName });
98 98 request(requestOptions, function(err, res, body) {
99 99 if (err) {
100 100 logger.warn('Error requesting to modem handler. ' + err.toString(), { req_id: reqId, handler_name: handlerName });
... ... @@ -107,6 +107,26 @@ async function send(partner, msg, origin) {
107 107 logger.verbose('Message sent to handler', { req_id: reqId, handler_name: handlerName, response_body: body });
108 108 }
109 109 })
  110 +
  111 +}
  112 +
  113 +async function send(partner, msg, origin) {
  114 + if (!partner) return;
  115 +
  116 + if (typeof msg !== 'string') {
  117 + logger.warn('Message to send is not a string, ignoring message');
  118 + return;
  119 + }
  120 +
  121 + msg = msg.trim();
  122 + if (!msg) return;
  123 +
  124 + const destinationNumber = modems.removeSuffixFromNumber(partner, config);
  125 +
  126 + logger.verbose('Choosing handler name', { partner: partner, msg: msg, origin: origin });
  127 + let handlerName = ( await _getApproriateHandler(destinationNumber) );
  128 +
  129 + _send(destinationNumber, msg, handlerName);
110 130 }
111 131  
112 132 exports.send = send;
113 133 \ No newline at end of file