received.js 1.16 KB
const winston = require('winston');

const config = require('komodo-sdk/config');
const messagingClient = require('komodo-center-messaging-client-lib');

const mailparser = require('../mailparser-wrapper');


const logger = winston.createLogger({
    transports: [
        new winston.transports.Console(),
    ],
});


module.exports = async (msg) => {
    const parsedMsg = await mailparser(msg);

    if (!parsedMsg || !parsedMsg.headers) {
        logger.warn('Invalid message');
        return;
    }

    const from = parsedMsg.headers.get('from').text;
    const imsi = parsedMsg.headers.get('imsi');
    const { text } = parsedMsg;

    logger.info('Message parsed', {
        from, imsi, text,
    });

    if (!from || !imsi || !text) {
        return;
    }

    const doNotForwardToCore = (from.search(/(\+)*62/) !== 0) || (from.length <= 8);

    messagingClient.onIncomingMessage({
        me: imsi,
        partner: `${from}${config.number_suffix || ''}`,
        partner_raw: from,
        msg: text,
        origin_label: imsi || 'UNKNOWN',
        origin_transport: 'SMS',
        origin_partner: from,
        do_not_forward_to_core: doNotForwardToCore,
    });
};