Sms integration fix (#130)
* Twilio integration error handling improvement * Mock-sms error triggering added
This commit is contained in:
parent
9d6f3e6d9b
commit
dd7e447e73
3 changed files with 31 additions and 19 deletions
|
|
@ -1,29 +1,30 @@
|
||||||
require('es6-promise').polyfill()
|
require('es6-promise').polyfill()
|
||||||
|
|
||||||
var config = require('../lib/config')
|
var config = require('../lib/settings-loader')
|
||||||
var plugins = require('../lib/plugins')
|
var sms = require('../lib/sms')
|
||||||
|
|
||||||
var rand = Math.floor(Math.random() * 1e6)
|
var rand = Math.floor(Math.random() * 1e6)
|
||||||
|
var db = config.connection
|
||||||
var rec = {
|
var rec = {
|
||||||
email: {
|
email: {
|
||||||
subject: 'Test email ' + rand,
|
subject: 'Test email ' + rand,
|
||||||
body: 'This is a test email from lamassu-server'
|
body: 'This is a test email from lamassu-server'
|
||||||
},
|
},
|
||||||
sms: {
|
sms: {
|
||||||
|
toNumber: '666',
|
||||||
body: '[Lamassu] This is a test sms ' + rand
|
body: '[Lamassu] This is a test sms ' + rand
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var db = config.connection
|
config.loadLatest(db)
|
||||||
config.loadConfig(db)
|
|
||||||
.then(function (config) {
|
.then(function (config) {
|
||||||
plugins.configure(config)
|
sms.sendMessage(config, rec)
|
||||||
plugins.sendMessage(rec)
|
|
||||||
.then(function () {
|
.then(function () {
|
||||||
console.log('Success.')
|
console.log('Success.')
|
||||||
|
process.exit(0)
|
||||||
})
|
})
|
||||||
.catch(function (err) {
|
.catch(function (err) {
|
||||||
console.log(err.stack)
|
console.log(err.stack)
|
||||||
|
process.exit(1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
|
const _ = require('lodash/fp')
|
||||||
|
|
||||||
exports.NAME = 'MockSMS'
|
exports.NAME = 'MockSMS'
|
||||||
|
|
||||||
exports.sendMessage = function sendMessage (account, rec) {
|
exports.sendMessage = function sendMessage (account, rec) {
|
||||||
console.log('Sending SMS: %j', rec)
|
console.log('Sending SMS: %j', rec)
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve, reject) => {
|
||||||
|
if (_.endsWith('666', _.getOr(false, 'sms.toNumber', rec))) {
|
||||||
|
reject(new Error(`${exports.NAME} mocked error!`))
|
||||||
|
} else {
|
||||||
setTimeout(resolve, 10)
|
setTimeout(resolve, 10)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@ const BAD_NUMBER_CODES = [21201, 21202, 21211, 21214, 21216, 21217, 21219, 21408
|
||||||
21610, 21612, 21614, 21608]
|
21610, 21612, 21614, 21608]
|
||||||
|
|
||||||
function sendMessage (account, rec) {
|
function sendMessage (account, rec) {
|
||||||
|
return Promise.resolve()
|
||||||
|
.then(() => {
|
||||||
|
// to catch configuration errors like
|
||||||
|
// "Error: username is required"
|
||||||
const client = twilio(account.accountSid, account.authToken)
|
const client = twilio(account.accountSid, account.authToken)
|
||||||
const body = rec.sms.body
|
const body = rec.sms.body
|
||||||
const _toNumber = rec.sms.toNumber || account.toNumber
|
const _toNumber = rec.sms.toNumber || account.toNumber
|
||||||
|
|
@ -18,6 +22,7 @@ function sendMessage (account, rec) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return client.messages.create(opts)
|
return client.messages.create(opts)
|
||||||
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
if (_.includes(err.code, BAD_NUMBER_CODES)) {
|
if (_.includes(err.code, BAD_NUMBER_CODES)) {
|
||||||
const badNumberError = new Error(err.message)
|
const badNumberError = new Error(err.message)
|
||||||
|
|
@ -25,7 +30,7 @@ function sendMessage (account, rec) {
|
||||||
throw badNumberError
|
throw badNumberError
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error(err.message)
|
throw new Error(`Twilio error: ${err.message}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue