feat(salix): refs #6427 #6427 handle Send sms from app
gitea/salix/pipeline/pr-dev This commit looks good
Details
gitea/salix/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
parent
a29ec11652
commit
6e169768db
|
@ -2,30 +2,78 @@ const got = require('got');
|
|||
const isProduction = require('vn-loopback/server/boot/isProduction');
|
||||
const {models} = require('vn-loopback/server/server');
|
||||
|
||||
module.exports = async(destination, message) => {
|
||||
const smsConfig = await models.SmsConfig.findOne();
|
||||
|
||||
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();
|
||||
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'
|
||||
}
|
||||
} catch (e) {
|
||||
response = e;
|
||||
}
|
||||
return response;
|
||||
});
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = Self => {
|
||||
require('../methods/sms/sendSms')(Self);
|
||||
};
|
|
@ -4,7 +4,7 @@
|
|||
"base": "VnModel",
|
||||
"options": {
|
||||
"mysql": {
|
||||
"table": "sms"
|
||||
"table": "vn.sms"
|
||||
}
|
||||
},
|
||||
"properties": {
|
|
@ -1,62 +0,0 @@
|
|||
const UserError = require('vn-loopback/util/user-error');
|
||||
const sendSms = require('../../../../../back/methods/sms/sendSms');
|
||||
|
||||
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 userId = ctx.req.accessToken.userId;
|
||||
|
||||
if (destination.length == 9) {
|
||||
const spainPrefix = '0034';
|
||||
destination = spainPrefix + destination;
|
||||
}
|
||||
|
||||
let response;
|
||||
try {
|
||||
response = await sendSms(destination, message);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
Loading…
Reference in New Issue