Commit bb93eeb0b83a98d118ada89b3b15f676690746bc

Authored by Adhidarma Hadiwinoto
1 parent 9894d4203b
Exists in master

push history on sent

Showing 2 changed files with 53 additions and 0 deletions Side-by-side Diff

bin/smstools-eventhandler.js
... ... @@ -9,6 +9,7 @@ const { argv } = require('yargs');
9 9 const logger = require('komodo-sdk/logger');
10 10  
11 11 const handlerReceived = require('../lib/smstools-handler/received');
  12 +const handlerSent = require('../lib/smstools-handler/sent');
12 13  
13 14 async function main() {
14 15 const eventType = (argv._ && argv._[0]) || null;
... ... @@ -20,6 +21,8 @@ async function main() {
20 21  
21 22 if (eventType === 'RECEIVED') {
22 23 handlerReceived(msgFilename);
  24 + } else if (eventType === 'SENT') {
  25 + handlerSent(msgFilename);
23 26 }
24 27 }
25 28  
lib/smstools-handler/sent.js
... ... @@ -0,0 +1,50 @@
  1 +const fs = require('fs');
  2 +const logger = require('komodo-sdk/logger');
  3 +
  4 +const config = require('komodo-sdk/config');
  5 +const messagingClient = require('komodo-center-messaging-client-lib');
  6 +const transport = require('../transport');
  7 +
  8 +messagingClient.setTransport(transport);
  9 +
  10 +const mailparser = require('../mailparser-wrapper');
  11 +
  12 +module.exports = async (msgFilename) => {
  13 + const msg = await fs.promises.readFile(msgFilename);
  14 +
  15 + if (!msg) {
  16 + logger.warn('Can not read message file', { msgFile: msgFilename });
  17 + return;
  18 + }
  19 +
  20 + const parsedMsg = await mailparser(msg);
  21 +
  22 + if (!parsedMsg || !parsedMsg.headers) {
  23 + logger.warn('Invalid message');
  24 + return;
  25 + }
  26 +
  27 + const from = parsedMsg.headers.get('from').text;
  28 + const imsi = parsedMsg.headers.get('imsi');
  29 + const { text } = parsedMsg;
  30 +
  31 + logger.info('Message parsed', {
  32 + from, imsi, text,
  33 + });
  34 +
  35 + if (!from || !imsi || !text) {
  36 + return;
  37 + }
  38 +
  39 + messagingClient.onIncomingMessage({
  40 + me: imsi,
  41 + partner: `${from}${config.number_suffix || ''}`,
  42 + partner_raw: from,
  43 + msg: text,
  44 + origin_label: imsi || 'UNKNOWN',
  45 + origin_transport: 'SMS',
  46 + origin_partner: from,
  47 + do_not_forward_to_core: true,
  48 + is_outgoing: true,
  49 + });
  50 +};