cce-service
Version:
HydraExpress microservice for Cisco Contact Center Enterprise APIs
102 lines (92 loc) • 2.91 kB
JavaScript
const hydraExpress = require('hydra-express')
const env = require('node-env-file')
const pkg = require('./package.json')
const util = require('util')
const UnifiedConfig = require('cce-unified-config')
// load environment file
env('./.env')
// init CCE API connector
const cce = new UnifiedConfig({
fqdn: process.env.cce_fqdn,
username: process.env.cce_username,
password: process.env.cce_password
})
// set up hydra
const hydra = hydraExpress.getHydra()
// load environment file
env(__dirname + '/.env')
// set up hydra and redis config
const hydraConfig = {
hydra: {
serviceName: pkg.name,
serviceIP: process.env.hydra_service_ip || '',
servicePort: process.env.hydra_service_port || 0,
serviceType: process.env.hydra_service_type || '',
serviceDescription: pkg.description,
redis: {
url: process.env.redis_url,
port: process.env.redis_port,
db: process.env.redis_db
}
}
}
// define routes
function onRegisterRoutes() {
var express = hydraExpress.getExpress()
var api = express.Router()
api.post('/agents/:agent/modify', async function(req, res) {
// example body
// req.body = {
// action: 'disable',
// setting: 'auto_answer',
// agent: '41377',
// user: 'ccondry@cisco.com'
// }
const action = req.body.action
const agent = req.params.agent
const setting = req.body.setting
const user = req.body.user
console.log(`request received from user ${user} to modify agent ${agent}`)
try {
let data
if (setting === 'auto_answer') {
// change auto answer desk settings
if (action === 'disable') {
data = await cce.changeDeskSetting(agent, process.env.default_no_auto_answer)
console.log(`successfully modified agent ${req.body.agent} for user ${req.body.user}`)
res.status(200).send({data})
} else if (action === 'enable') {
data = await cce.changeDeskSetting(agent, process.env.default_auto_answer)
console.log(`successfully modified agent ${req.body.agent} for user ${req.body.user}`)
res.status(200).send({data})
} else {
const err = 'invalid action for auto_answer: ' + action
console.log(err)
return res.status(422).send({err})
}
} else {
const err = 'unknown setting ' + setting
console.log(err)
return res.status(422).send({err})
}
} catch (error) {
// ... error checks
console.log(error)
if (error.status) {
return res.status(error.status).send(error)
} else {
return res.status(500).send({error})
}
}
})
hydraExpress.registerRoutes({
'': api
})
}
// start up
hydraExpress.init(hydraConfig, onRegisterRoutes)
.then(serviceInfo => {
console.log('serviceInfo', serviceInfo)
// return 0
})
.catch(err => console.log('err', err))