const express = require('express');
const app = express()
app.use(express.json());
var Airtable = require('airtable');
var base = new Airtable({apiKey: process.env.AIRTABLE_API_KEY}).base(process.env.CHATBOTFUN_BASE);
app.listen(3000, () => console.log('Example app listening on port 3000!'))
app.get('/', (req, res) => {
var resp = '';
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('PrecioCiudad').select({
maxRecords: 1,
filterByFormula: 'AND({Programa} = "Auxiliar contable",{Ciudad}="Sincelejo")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
resp += 'El ' + record.get('Atributo')+' de '+ record.get('Programa')+ ' es: '+record.get('Inicio')+', el horario es '+record.get('Horario')+', la duracion es de '+record.get('Duracion')+', Se imparte en estas sedes '+record.get('Ciudad');
console.log('Retrieved', record.get('Inicio'+'Horario'+'Duracion'+'Ciudad'));
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
})
app.post('/', function (req, res) {
console.log(req);
let action = req.body.queryResult.action;
console.log(action);
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
if(action === 'getProgramaAtributo'){
let programaName = req.body.queryResult.parameters.program;
let atributoName = req.body.queryResult.parameters.attribute;
let ciudadName = req.body.queryResult.parameters.CiudadSedes;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('PrecioCiudad2').select({
maxRecords: 1,
filterByFormula: 'AND({Programa} = "'+programaName+'",{Ciudad}="'+ciudadName+'")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Tipo'+'Descripcion' +'Inicio' + 'Horario'+'Duracion'+'Ciudad'));
responseJson.fulfillmentText = 'La información de '+ programaName+ ' es:\n '+' ➡ Tipo '+':'+record.get('Tipo')+ '\n '+record.get('Descripcion')+ '\n ➡ Fecha de inicio '+record.get('Inicio')+'\n ➡ el horario disponible es '+record.get('Horario')+'\n ➡la duracion es de '+record.get('Duracion')+'\n ➡Se imparte en estas sedes: '+record.get('Ciudad');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
else if(action === 'getProgramaforCiudad'){
//let planetName = req.body.queryResult.parameters.planet;
let programaName = req.body.queryResult.parameters.program;
let contexts = req.body.queryResult.outputContexts;
console.log(contexts);
var item = contexts.find(item => item.name.endsWith('/contexts/ciudades'));
var ciudadName = item.parameters.CiudadSedes;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('PrecioCiudad').select({
maxRecords: 1,
filterByFormula: 'AND({Programa} = "'+programaName+'",{Ciudad}="'+ciudadName+'")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Tipo'+'Descripcion' +'Inicio' +'Horario'+'Duracion'+'Ciudad'+'Accion'));
responseJson.fulfillmentText = 'La información de '+ programaName+ ' en '+record.get('Ciudad')+ ' es:\n '+' ➡ Tipo '+':'+record.get('Tipo')+ '\n '+record.get('Descripcion')+ '\n ➡ Fecha de inicio '+record.get('Inicio')+'\n ➡ el horario disponible es '+record.get('Horario')+'\n ➡la duracion es de '+record.get('Duracion')+'\n ➡Se imparte en estas sedes: '+record.get('Ciudad')+'\n ➡Asegurar tu cupo y empieza a estudiar hoy '+ programaName+'\n ➡Medios de pago: '+record.get('Accion') ;
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
if(action === 'getCursoAtributo'){
let programaName = req.body.queryResult.parameters.CursosPracticos;
let atributoName = req.body.queryResult.parameters.attribute;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('Programas').select({
maxRecords: 1,
filterByFormula: 'AND({Programa} = "'+programaName+'",{Atributo}="Informacion")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Tipo'+'Inicio' + 'Precio'+'Horario'+'Duracion'+'Sede'));
responseJson.fulfillmentText = 'La información de '+ programaName+ '\n es: '+'👉 Tipo ' +':'+record.get('Tipo')+ '\n 👉 Fecha de inicio '+record.get('Inicio')+'\n 👉 el precio es de '+record.get('Precio')+'\n 👉 el horario disponible es '+record.get('Horario')+'\n 👉 la duracion es de '+record.get('Duracion')+'\n 👉Se imparte en estas sedes:\n '+record.get('Sede');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
if(action === 'getCiudadCursos'){
let ciudadName = req.body.queryResult.parameters.CiudadSedes;
// let atributoName = req.body.queryResult.parameters.attribute;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('Ciudades').select({
maxRecords: 1,
filterByFormula: 'AND({Ciudad} = "'+ciudadName+'",{Atributo}="Informacion")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Programas'+'Cursos' + 'Direccion'+'Horario'+'Telefonos'+'Email'+'Url'));
responseJson.fulfillmentText = 'La información de '+ ciudadName+ ' es: '+'\n👉 Programas '+record.get('Programas')+ '\n 👉 Cursos '+record.get('Cursos');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
else if(action === 'getProgramaforCiudad'){
//let planetName = req.body.queryResult.parameters.planet;
let programaName = req.body.queryResult.parameters.program;
let contexts = req.body.queryResult.outputContexts;
console.log(contexts);
var item = contexts.find(item => item.name.endsWith('/contexts/ciudades'));
var ciudadName = item.parameters.CiudadSedes;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('PrecioCiudad').select({
maxRecords: 1,
filterByFormula: 'AND({Programa} = "'+programaName+'",{Ciudad}="'+ciudadName+'")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Tipo'+'Descripcion' +'Inicio' +'Horario'+'Duracion'+'Ciudad'+'Accion'));
responseJson.fulfillmentText = 'La información de '+ programaName+ ' en '+record.get('Ciudad')+ ' es:\n '+' ➡ Tipo '+':'+record.get('Tipo')+ '\n '+record.get('Descripcion')+ '\n ➡ Fecha de inicio '+record.get('Inicio')+'\n ➡ el horario disponible es '+record.get('Horario')+'\n ➡la duracion es de '+record.get('Duracion')+'\n ➡Se imparte en estas sedes: '+record.get('Ciudad')+'\n ➡Asegurar tu cupo y empieza a estudiar hoy '+ programaName+'\n ➡Medios de pago: '+record.get('Accion') ;
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
if(action === 'getCiudadInfo'){
let ciudadName = req.body.queryResult.parameters.CiudadSedes;
let atributoName = req.body.queryResult.parameters.any;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published to RunKit'; // displayed response
base('Ciudades').select({
maxRecords: 1,
filterByFormula: 'AND({Ciudad} = "'+ciudadName+'",{Atributo}="Informacion")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get(atributoName));
responseJson.fulfillmentText = 'La información de '+ ciudadName+ ' es: '+ '\n 🗺 La dirección es '+record.get('Direccion')+ '\n'+'\n ⏰ el horario disponible es '+record.get('Horario')+ '\n'+'\n 📞 los teléfonos de contacto son '+record.get('Telefonos');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
})