transport.js 1.62 KB
const axios = require('axios');
const moment = require('moment');

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

const modems = require('./modems');

exports.send = async (partner, msg) => {
    if (typeof partner !== 'string' || !partner.trim()) return;
    if (typeof msg !== 'string' || !msg.trim()) return;

    const modem = modems.randomModem();
    if (!modem) {
        logger.warn('TRANSPORT: Not sending message to EVO-CP because of no available modem', {
            partner,
            msg,
        });
        return;
    }

    logger.info('TRANSPORT: Sending message to EVO-CP', {
        partner,
        msg,
        modem: modem.name,
    });

    try {
        await axios.get(config.sender.url, {
            params: {
                to: partner,
                password: config.sender.password,
                ts: moment().format('YYYY-MM-DD HH:mm:ss'),
                text: msg.trim(),
                modem: modem.name,
                username: config.sender.username,
            },
        });
    } catch (e) {
        logger.warn('TRANSPORT: Exception on sending message to EVO-CP', {
            partner,
            msg,
            e: e.message,
        });
    }

    messagingClient.onIncomingMessage({
        me: modem.imsi || modem.name,
        partner,
        partner_raw: partner,
        msg: msg.trim(),
        origin_label: modem.imsi || modem.name,
        origin_transport: 'SMS',
        origin_partner: partner,
        do_not_forward_to_core: true,
        is_outgoing: true,
    });
};