diff --git a/lib/modem.js b/lib/modem.js index 3a8d273..f98ad4a 100644 --- a/lib/modem.js +++ b/lib/modem.js @@ -56,9 +56,7 @@ async function readSMS(slot) { const parser = new ParserDelimiter({ delimiter: DELIMITER_WAIT_FOR_OK }); parser.on('data', async (data) => { if (data) { - const smsObject = sms.extract(data.toString().trim()); - // console.log('SMS', smsObject); // eslint-disable-line no-console - reportSender.incomingSMS(smsObject); + reportSender.incomingSMS(sms.extract(data.toString().trim())); } mutex.releaseLockWaitForOK(); }); diff --git a/lib/report-sender.js b/lib/report-sender.js index 6be58c8..c56c057 100644 --- a/lib/report-sender.js +++ b/lib/report-sender.js @@ -12,9 +12,9 @@ function incomingSMS(message) { url: config.report_url.incoming_sms, qs: { modem: config.name, - ts: message.ts, - status: message.status, - number: message.from, + ts: message.metadata.ts, + status: message.metadata.status, + number: message.metadata.from, msg: message.message, }, }; diff --git a/lib/sms.js b/lib/sms.js index 819cd10..1d0fa93 100644 --- a/lib/sms.js +++ b/lib/sms.js @@ -7,22 +7,27 @@ function extract(raw) { const lines = raw.trim().split(/[\n\r]+/m); if (!lines) return null; - const metadata = lines[0].split(',').map(el => el.replace(/"/g, '')) || []; - - const tsFromRaw = `${metadata[3]} ${metadata[4].replace(/\+\d+/, '')}`; - const ts = moment(tsFromRaw, 'YY/MM/DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss'); - const result = { metadata: { - status: metadata[0].replace(/^.+: /, ''), - from: metadata[1].replace(/^\+/, ''), - ts, - raw: lines[0], + status: null, + from: null, + ts: null, + raw: null, }, - message: lines.slice(1).join('\n').trim(), + message: null, raw, }; + const metadata = lines[0].split(',').map(el => el.replace(/"/g, '')) || []; + + [result.metadata.raw] = lines; + result.metadata.status = typeof metadata[0] === 'string' ? metadata[0].replace(/^.+: /, '') : ''; + result.metadata.from = typeof metadata[1] === 'string' ? metadata[1].replace(/^\+/, '') : ''; + + const tsFromRaw = `${metadata[3]} ${(metadata[4] || '').replace(/\+\d+/, '')}`; + result.metadata.ts = moment(tsFromRaw, 'YY/MM/DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss'); + + result.message = lines.slice(1).join('\n').trim(); return result; }