Files
jambonz-feature-server/lib/tasks/make_task.js
2021-09-07 13:43:40 -04:00

88 lines
3.2 KiB
JavaScript

const Task = require('./task');
const {TaskName} = require('../utils/constants');
const errBadInstruction = new Error('malformed jambonz application payload');
function makeTask(logger, obj, parent) {
const keys = Object.keys(obj);
if (!keys || keys.length !== 1) {
throw errBadInstruction;
}
const name = keys[0];
const data = obj[name];
if (typeof data !== 'object') {
throw errBadInstruction;
}
Task.validate(name, data);
switch (name) {
case TaskName.SipDecline:
const TaskSipDecline = require('./sip_decline');
return new TaskSipDecline(logger, data, parent);
case TaskName.Conference:
logger.debug({data}, 'Conference verb');
const TaskConference = require('./conference');
return new TaskConference(logger, data, parent);
case TaskName.Dial:
const TaskDial = require('./dial');
return new TaskDial(logger, data, parent);
case TaskName.Dialogflow:
const TaskDialogflow = require('./dialogflow');
return new TaskDialogflow(logger, data, parent);
case TaskName.Dequeue:
const TaskDequeue = require('./dequeue');
return new TaskDequeue(logger, data, parent);
case TaskName.Dtmf:
const TaskDtmf = require('./dtmf');
return new TaskDtmf(logger, data, parent);
case TaskName.Enqueue:
const TaskEnqueue = require('./enqueue');
return new TaskEnqueue(logger, data, parent);
case TaskName.Hangup:
const TaskHangup = require('./hangup');
return new TaskHangup(logger, data, parent);
case TaskName.Leave:
const TaskLeave = require('./leave');
return new TaskLeave(logger, data, parent);
case TaskName.Lex:
const TaskLex = require('./lex');
return new TaskLex(logger, data, parent);
case TaskName.Message:
const TaskMessage = require('./message');
return new TaskMessage(logger, data, parent);
case TaskName.Rasa:
const TaskRasa = require('./rasa');
return new TaskRasa(logger, data, parent);
case TaskName.Say:
const TaskSay = require('./say');
return new TaskSay(logger, data, parent);
case TaskName.Play:
const TaskPlay = require('./play');
return new TaskPlay(logger, data, parent);
case TaskName.Pause:
const TaskPause = require('./pause');
return new TaskPause(logger, data, parent);
case TaskName.Gather:
const TaskGather = require('./gather');
return new TaskGather(logger, data, parent);
case TaskName.Transcribe:
const TaskTranscribe = require('./transcribe');
return new TaskTranscribe(logger, data, parent);
case TaskName.Listen:
const TaskListen = require('./listen');
return new TaskListen(logger, data, parent);
case TaskName.Redirect:
const TaskRedirect = require('./redirect');
return new TaskRedirect(logger, data, parent);
case TaskName.RestDial:
const TaskRestDial = require('./rest_dial');
return new TaskRestDial(logger, data, parent);
case TaskName.Tag:
const TaskTag = require('./tag');
return new TaskTag(logger, data, parent);
}
// should never reach
throw new Error(`invalid jambonz verb '${name}'`);
}
module.exports = makeTask;