mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2026-07-04 19:21:53 +00:00
ed51d8b13f
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;
|