Commit 077f3b0aa21c030039f0ef39eac0749f88c8bc0d
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
lib/transport.js
... | ... | @@ -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 |