const got = require('got'); const isProduction = require('vn-loopback/server/boot/isProduction'); const {models} = require('vn-loopback/server/server'); module.exports = Self => { Self.remoteMethod('send', { description: 'Sends SMS to a destination phone', accessType: 'WRITE', accepts: [ { arg: 'destination', type: 'string', required: true, }, { arg: 'message', type: 'string', required: true, } ], returns: { type: 'object', root: true }, http: { path: `/send`, verb: 'POST' } }); Self.send = async(ctx, destination, message) => { const smsConfig = await models.SmsConfig.findOne(); const userId = ctx.req.accessToken.userId; if (destination.length == 9) { const spainPrefix = '0034'; destination = spainPrefix + destination; } const params = { api_key: smsConfig.apiKey, messages: [{ from: smsConfig.title, to: destination, text: message }] }; let response; try { if (!isProduction(false)) response = {result: [{status: 'ok'}]}; else { const jsonTest = { json: params }; response = await got.post(smsConfig.uri, jsonTest).json(); } } catch (e) { console.error(e); } // return response; const [result] = response.result; const error = result.error_id; const newSms = { senderFk: userId, destination: destination, message: message, status: error }; const sms = await Self.create(newSms); if (error) throw new UserError(`We weren't able to send this SMS`); return sms; }; };