mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-20 08:40:38 +00:00
Fix/dynamic apps (#499)
* refactor utilization jambonz app for queue and user * refactor utilization jambonz app for queue and user * refactor utilization jambonz app for queue and user * refactor utilization jambonz app for queue and user * refactor utilization jambonz app for queue and user
This commit is contained in:
54
lib/dynamic-apps.js
Normal file
54
lib/dynamic-apps.js
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
const appsMap = {
|
||||||
|
queue: {
|
||||||
|
// Dummy hook to follow later feature server logic.
|
||||||
|
call_hook: {
|
||||||
|
url: 'https://jambonz.org',
|
||||||
|
method: 'GET'
|
||||||
|
},
|
||||||
|
account_sid: '',
|
||||||
|
app_json: [{
|
||||||
|
verb: 'dequeue',
|
||||||
|
name: '',
|
||||||
|
timeout: 5
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
user: {
|
||||||
|
// Dummy hook to follow later feature server logic.
|
||||||
|
call_hook: {
|
||||||
|
url: 'https://jambonz.org',
|
||||||
|
method: 'GET'
|
||||||
|
},
|
||||||
|
account_sid: '',
|
||||||
|
app_json: [{
|
||||||
|
verb: 'dial',
|
||||||
|
callerId: '',
|
||||||
|
answerOnBridge: true,
|
||||||
|
target: [
|
||||||
|
{
|
||||||
|
type: 'user',
|
||||||
|
name: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const createJambonzApp = (type, {account_sid, name, caller_id}) => {
|
||||||
|
const app = {...appsMap[type]};
|
||||||
|
app.account_sid = account_sid;
|
||||||
|
switch (type) {
|
||||||
|
case 'queue':
|
||||||
|
app.app_json[0].name = name;
|
||||||
|
break;
|
||||||
|
case 'user':
|
||||||
|
app.app_json[0].callerId = caller_id;
|
||||||
|
app.app_json[0].target[0].name = name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
app.app_json = JSON.stringify(app.app_json);
|
||||||
|
return app;
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
createJambonzApp
|
||||||
|
};
|
||||||
@@ -13,6 +13,7 @@ const listTaskNames = require('./utils/summarize-tasks');
|
|||||||
const {
|
const {
|
||||||
JAMBONES_MYSQL_REFRESH_TTL
|
JAMBONES_MYSQL_REFRESH_TTL
|
||||||
} = require('./config');
|
} = require('./config');
|
||||||
|
const { createJambonzApp } = require('./dynamic-apps');
|
||||||
|
|
||||||
module.exports = function(srf, logger) {
|
module.exports = function(srf, logger) {
|
||||||
const {
|
const {
|
||||||
@@ -215,44 +216,11 @@ module.exports = function(srf, logger) {
|
|||||||
let app;
|
let app;
|
||||||
if (req.locals.queue_name) {
|
if (req.locals.queue_name) {
|
||||||
logger.debug(`calling to queue ${req.locals.queue_name}, generating queue app`);
|
logger.debug(`calling to queue ${req.locals.queue_name}, generating queue app`);
|
||||||
app = {
|
app = createJambonzApp('queue', {account_sid, name: req.locals.queue_name});
|
||||||
// Dummy hook to follow later feature server logic.
|
|
||||||
call_hook: {
|
|
||||||
url: 'https://jambonz.org',
|
|
||||||
method: 'GET'
|
|
||||||
},
|
|
||||||
account_sid,
|
|
||||||
app_json: JSON.stringify(
|
|
||||||
[{
|
|
||||||
verb: 'dequeue',
|
|
||||||
name: req.locals.queue_name,
|
|
||||||
timeout: 5
|
|
||||||
}]
|
|
||||||
)
|
|
||||||
};
|
|
||||||
} else if (req.locals.called_user) {
|
} else if (req.locals.called_user) {
|
||||||
logger.debug(`calling to registered user ${req.locals.called_user}, generating dial app`);
|
logger.debug(`calling to registered user ${req.locals.called_user}, generating dial app`);
|
||||||
app = {
|
app = createJambonzApp('user',
|
||||||
// Dummy hook to follow later feature server logic.
|
{account_sid, name: req.locals.called_user, caller_id: req.locals.callingNumber});
|
||||||
call_hook: {
|
|
||||||
url: 'https://jambonz.org',
|
|
||||||
method: 'GET'
|
|
||||||
},
|
|
||||||
account_sid,
|
|
||||||
app_json: JSON.stringify(
|
|
||||||
[{
|
|
||||||
verb: 'dial',
|
|
||||||
callerId: req.locals.callingNumber,
|
|
||||||
answerOnBridge: true,
|
|
||||||
target: [
|
|
||||||
{
|
|
||||||
type: 'user',
|
|
||||||
name: req.locals.called_user
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
)
|
|
||||||
};
|
|
||||||
} else if (req.locals.application_sid) {
|
} else if (req.locals.application_sid) {
|
||||||
app = await lookupAppBySid(req.locals.application_sid);
|
app = await lookupAppBySid(req.locals.application_sid);
|
||||||
} else if (req.locals.originatingUser) {
|
} else if (req.locals.originatingUser) {
|
||||||
|
|||||||
Reference in New Issue
Block a user