@dabblelab/autopilot-core
Version:
Core functionality for the Twilio Autopilot CLI and the Twilio Autopilot Plugin for the Twilio CLI.
113 lines (83 loc) • 4.03 kB
JavaScript
const path = require('path'),
fs = require('fs');
/**
* Private
*/
const Tasks = async (intents, dirPath) => {
const {Task_Fields} = require('./Task_Fields'),
{Task_Samples} = require('./Task_Samples'),
{Task_Actions} = require('./Task_Actions');
let obj = {
"assistant_initiation" : "",
"fallback" : "",
"tasks" : []
};
if(intents.length){
try{
let tasks = [];
for(let i = 0 ; i < intents.length ; i++){
if(intents[i].indexOf('_usersays_en') < 0){
const intentPath = path.resolve(dirPath,intents[i]);
const intentSamplePath = path.resolve(dirPath,intents[i].substr(0,intents[i].length-5)+'_usersays_en' + intents[i].substr(intents[i].length-5));
if(fs.existsSync(intentPath)){
const intent = require(intentPath);
const taskName = intent.name.replace(/[^\w\s.]/g," ").replace(/\s+/g,' ').trim().replace(/\s/g,"-");
if(intent.responses[0].action && intent.responses[0].action == "input.unknown")
{
obj.fallback = taskName;
let message = ``;
try{
message = intent.responses[0].messages[0].speech[0];
}catch(e){
message = "I missed what you said. What was that?";
}
tasks.push({
"uniqueName": taskName,
"actions": {
"actions" : [
{
"say": {
"speech": message
}
},
{
"listen" : true
}
]
},
"fields": [],
"samples": []
})
}
else{
if(intent.responses[0].action && intent.responses[0].action == "input.welcome")
obj.assistant_initiation = taskName;
const fields = await Task_Fields(intent.responses[0].parameters);
const actions = await Task_Actions(intent.responses[0].messages[0]);
let samples = [];
if(fs.existsSync(intentSamplePath)){
const intentSamples = require(intentSamplePath);
samples = await Task_Samples(intentSamples);
}
tasks.push({
"uniqueName": taskName,
"actions": {
"actions" : actions
},
"fields": fields,
"samples": samples
})
}
}
}
if( i === intents.length - 1){
obj.tasks = tasks;
}
}
}catch(err){
throw err;
}
}
return obj;
}
module.exports = {Tasks};