mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2026-01-25 02:08:24 +00:00
major merge of features from the hosted branch that was created temporarily during the initial launch of jambonz.org
45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
const router = require('express').Router();
|
|
const getProvider = require('../../utils/sms-provider');
|
|
const sysError = require('../error');
|
|
|
|
router.post('/', async(req, res) => {
|
|
const { logger } = req.app.locals;
|
|
|
|
try {
|
|
// if provider specified use it, otherwise use first in list
|
|
const arr = getProvider(logger, req.body.provider);
|
|
if (!Array.isArray(arr)) {
|
|
throw new Error('outboundSMS - unable to locate sms provider to use to send message');
|
|
}
|
|
|
|
const providerData = arr[1];
|
|
if (!providerData || !providerData.module) {
|
|
throw new Error(`rejecting outgoingSms request for unknown or badly configured provider ${req.body.provider}`);
|
|
}
|
|
|
|
const provider = arr[0];
|
|
const opts = providerData.options;
|
|
if (!opts || !opts.url) {
|
|
throw new Error(`rejecting outgoingSms request -- no HTTP url for ${req.body.provider}`);
|
|
}
|
|
|
|
// load provider module
|
|
const { sendSms } = require(providerData.module);
|
|
if (!sendSms) {
|
|
throw new Error(`missing sendSms function in module ${providerData.module} for provider ${provider}`);
|
|
}
|
|
|
|
// send the SMS
|
|
const payload = req.body;
|
|
delete payload.provider;
|
|
logger.debug({opts, payload}, `outboundSMS - sending to ${opts.url}`);
|
|
const response = await sendSms(opts, payload);
|
|
logger.info({response, payload: req.body}, `outboundSMS - sent to ${opts.url}`);
|
|
res.status(200).json(response);
|
|
} catch (err) {
|
|
sysError(logger, res, err);
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|