fix: app_json is used for outbound call (#358)

* fix: app_json is used for outbound call

* fix jslint

* fix: app_json setter in rest:dial task
This commit is contained in:
Hoan Luu Huu
2023-06-01 19:52:53 +07:00
committed by GitHub
parent 210bbcbdbf
commit bb852600c0
3 changed files with 71 additions and 1 deletions

View File

@@ -19,7 +19,12 @@ router.post('/', async(req, res) => {
logger.debug({body: req.body}, 'got createCall request');
try {
let uri, cs, to;
// app_json is creaeted by only api-server.
// if it available, take it and delete before creating task
const app_json = req.body.app_json;
delete req.body.app_json;
const restDial = makeTask(logger, {'rest:dial': req.body});
restDial.appJson = app_json;
const {lookupAccountDetails} = dbUtils(logger, srf);
const {getSBC, getFreeswitch} = srf.locals;
const sbcAddress = getSBC();

View File

@@ -23,6 +23,10 @@ class TaskRestDial extends Task {
get name() { return TaskName.RestDial; }
set appJson(app_json) {
this.app_json = app_json;
}
/**
* INVITE has just been sent at this point
*/
@@ -84,7 +88,12 @@ class TaskRestDial extends Task {
this.logger.info({err}, 'Rest:dial:Call established - Error calling startAmd');
}
}
const tasks = await cs.requestor.request('session:new', this.call_hook, params, httpHeaders);
let tasks;
if (this.app_json) {
tasks = JSON.parse(this.app_json);
} else {
tasks = await cs.requestor.request('session:new', this.call_hook, params, httpHeaders);
}
if (tasks && Array.isArray(tasks)) {
this.logger.debug({tasks: tasks}, `TaskRestDial: replacing application with ${tasks.length} tasks`);
cs.replaceApplication(normalizeJambones(this.logger, tasks).map((tdata) => makeTask(this.logger, tdata)));