transport.js 1.58 KB
const MODULE_NAME = 'TRANSPORT';

const axios = require('axios').default;
const uniqid = require('uniqid');
const urljoin = require('url-join');
const config = require('komodo-sdk/config');
const logger = require('tektrans-logger');

const axiosConfig = {
    headers: {
        'content-type': 'application/json',
    },
    timeout: 60 * 1000,
};

const send = async (partner, msg, callerXid) => {
    const xid = callerXid || uniqid();
    const modemApiServer = config.modem;
    if (!modemApiServer || !modemApiServer.url) {
        logger.warn(`${MODULE_NAME} 4111A9BA: Missing modem`, { xid, partner, msg });
        return;
    }

    const endpointUrl = urljoin(
        modemApiServer.url,
        '/sms/send',
    );

    const payload = {
        destination: partner,
        message: msg,
    };

    logger.verbose(`${MODULE_NAME} 8D4F8A3A: Sending message to modem apiserver`, {
        xid,
        endpointUrl,
        payload,
    });

    try {
        const response = await axios.post(endpointUrl, payload, axiosConfig);

        logger.verbose(`${MODULE_NAME} 6D71CC75: Message sent to modem apiserver`, {
            xid,
            partner,
            msg,
            endpointUrl,
            httpStatus: response.status,
            responseBody: response.data,
        });
    } catch (e) {
        logger.warn(`${MODULE_NAME} C0124404: Exception on send`, {
            xid,
            eCode: e.code,
            eMessage: e.message,
            httpStatus: e.response && e.response.status,
            responseBody: e.response && e.response.data,
        });
    }
};
exports.send = send;