This commit is contained in:
Victor Sanchez Sosa 2021-06-02 17:55:46 -05:00
parent fd7abe68a5
commit de8727803d
5 changed files with 127 additions and 40 deletions

View File

@ -12,19 +12,29 @@ function conver_utf8(data) {
} }
function conver_name(data) { function conver_name(data) {
var porciones = data.split(' '); try {
if(porciones.length >= 2 && porciones.length <= 4){ var porciones = data.split(' ');
var cadena = new String(data); if(porciones.length >= 2 && porciones.length <= 4){
cadena = porciones[(porciones.length -2)]+ ' ' +porciones[(porciones.length -1)]; var cadena = new String(data);
cadena = cadena.toLowerCase(); cadena = porciones[(porciones.length -2)]+ ' ' +porciones[(porciones.length -1)];
return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); cadena = cadena.toLowerCase();
}else{ return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase())));
var cadena = new String(data); }else{
cadena = cadena.toLowerCase(); var cadena = new String(data);
return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); cadena = cadena.toLowerCase();
return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase())));
}
}catch (error) {
return data;
} }
} }
function conver_capitalice(data) {
var cadena = new String(data);
cadena = cadena.toLowerCase();
return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase())));
}
function AxiosPOST(url, params){ function AxiosPOST(url, params){
@ -36,6 +46,15 @@ function AxiosPOST(url, params){
}); });
}); });
} }
function AxiosGET(url, params){
return new Promise((resolve, reject) => {
axios.get(URLPC+url, params).then(function (response) {
resolve(response.data);
}).catch(function (error) {
resolve({'estado':false, 'data':[], 'msg':error});
});
});
}
async function ValidarSession(session){ async function ValidarSession(session){
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -86,6 +105,22 @@ async function RegistrarSession(session_id, cedula){
} }
async function ConsultaClaves(cedula){
return new Promise((resolve, reject) => {
var array = {'ok': false, 'data':[], 'msg':null};
AxiosGET('consulta_predios_detalle/2/'+cedula+'?boot=true', {}).then(function (result) {
if(result['ok'] && result['data_bot']['data'].length > 0){
array['ok'] = true; array['data'] = result['data_bot']['data']; array['msg'] = 'Consulta exitosa';
}else{ array['msg'] = 'usted no posee predios catastrales registrados en el GAD MANTA'; }
resolve(array);
}).catch(function (error) {
array['msg'] = error;
resolve(array);
});
});
}
@ -100,5 +135,7 @@ module.exports = {
"RegistrarSession": RegistrarSession, "RegistrarSession": RegistrarSession,
"ValidarSession": ValidarSession, "ValidarSession": ValidarSession,
"conver_name": conver_name, "conver_name": conver_name,
"CerrarSession": CerrarSession "CerrarSession": CerrarSession,
"conver_capitalice": conver_capitalice,
"ConsultaClaves": ConsultaClaves
} }

View File

@ -36,14 +36,21 @@ app.post("/webhook", express.json(), function (req, res) {
function ConfirmarCerrarSesionAgent(){ function ConfirmarCerrarSesionAgent(){
return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res); return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res);
} }
function ConsultarClavesCatastrales(){
return metodos.Fun_ConsultarClavesCatastrales(agent, req, res);
}
let intentMap = new Map(); let intentMap = new Map();
intentMap.set('Default Fallback Intent', DefauldAgent); intentMap.set('Default Fallback Intent', DefauldAgent);
intentMap.set('0 - Solicitar datos', SolicitarDatosAgent); intentMap.set('0 - Solicitar datos', SolicitarDatosAgent);
intentMap.set('0 - Bienvenida', WelcomeAgent); intentMap.set('0 - Bienvenida', WelcomeAgent);
//Menu 1
//Menu 1 - Claves catastrales
intentMap.set('M1 - Consulta de claves catastrales', ConsultarClavesCatastrales);
//Menu 1 - Cerrar sesion
intentMap.set('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent); intentMap.set('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent);
intentMap.set('M0.1 - Cerrar sesion - SI', SiCerrarSesionAgent); intentMap.set('M0.1 - Cerrar sesion - SI', SiCerrarSesionAgent);
intentMap.set('M0.2 - Cerrar sesion - NO', NoCerrarSesionAgent); intentMap.set('M0.2 - Cerrar sesion - NO', NoCerrarSesionAgent);

View File

@ -4,7 +4,6 @@ var dialog = require("./interacciones.js");
async function Fun_DefauldAgent(agent, req, res){ async function Fun_DefauldAgent(agent, req, res){
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if(data_context){
console.log('defaulde')
agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) )); agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) ));
agent.context.set({name:'menu_1', lifespan:1}); agent.context.set({name:'menu_1', lifespan:1});
return agent.add(dialog.mensaje('menu_1')); return agent.add(dialog.mensaje('menu_1'));
@ -18,25 +17,25 @@ async function Fun_SolicitarDatosAgent(agent, req, res){
const sessionId = req.body.session.split("/").reverse()[0]; const sessionId = req.body.session.split("/").reverse()[0];
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if(data_context){
if(data_context.cedula != null && data_context.cedula != "" ){ if(data_context != null && data_context != "" ){
let sesion = await funcion.RegistrarSession(sessionId, data_context.cedula); let sesion = await funcion.RegistrarSession(sessionId, data_context.cedula);
if(sesion['ok'] == true && sesion['data']['name'] != null){ if(sesion['ok'] == true && sesion['data']['name'] != null){
console.log('sesion registrada en la bd') console.log('sesion registrada en la bd')
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: sesion['data']['cedula'], name: sesion['data']['name'] } }); agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: sesion['data']['cedula'], name: sesion['data']['name'] } });
}else{ }else{
agent.context.set({name:'data_user_context', lifespan: 0 }); agent.context.set({name:'data_user_context', lifespan: 0 });
agent.context.set({name:'Bienvenida', lifespan: 1 }); agent.context.set({name:'bienvenida_context', lifespan: 1 });
sesion['msg'] != null ? agent.add(sesion['msg'] ) : null; sesion['msg'] != null ? agent.add(sesion['msg'] ) : null;
return agent.add(dialog.mensaje('sol_cedula')); return agent.add(dialog.mensaje('sol_cedula'));
} }
} }
Fun_WelcomeAgent(agent, req, res, true); return Fun_WelcomeAgent(agent, req, res);
}else{ }else{
Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_WelcomeAgent(agent, req, res, hola = false){ async function Fun_WelcomeAgent(agent, req, res){
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if(data_context){
console.log('contexto existe........'); console.log('contexto existe........');
@ -50,10 +49,9 @@ async function Fun_WelcomeAgent(agent, req, res, hola = false){
if(legion['ok'] == true && legion['data']['name'] != null){ if(legion['ok'] == true && legion['data']['name'] != null){
console.log('sesion existe en la bd') console.log('sesion existe en la bd')
agent.context.set({name:'menu_1', lifespan:1}); agent.context.set({name:'menu_1', lifespan:1});
agent.context.set({name:'Bienvenida', lifespan:0}); agent.context.set({name:'bienvenida_context', lifespan:0});
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: legion['data']['cedula'], name: legion['data']['name'] } }); agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: legion['data']['cedula'], name: legion['data']['name'] } });
agent.add(dialog.mensaje('bienvenida', legion['data']['name'] != null ? funcion.conver_name(legion['data']['name']) : d_text.cedula)); agent.add(dialog.mensaje('bienvenida', legion['data']['name'] != null ? funcion.conver_name(legion['data']['name']) : d_text.cedula));
return agent.add(dialog.mensaje('menu_1')); return agent.add(dialog.mensaje('menu_1'));
}else{ }else{
agent.add(dialog.mensaje('bienvenida')); agent.add(dialog.mensaje('bienvenida'));
@ -64,31 +62,45 @@ async function Fun_WelcomeAgent(agent, req, res, hola = false){
function ValidateDataUserContext(agent){ function ValidateDataUserContext(agent){
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
try{ try{
var ContextIn = agent.context.get('data_user_context'); var Contx = null;
if (ContextIn != null && ContextIn != NaN && ContextIn != undefined){ Contx = agent.context.get('data_user_context');
if(ContextIn.parameters.cedula != null && ContextIn.parameters.cedula != "" ){ if (Contx == null || Contx == NaN || Contx == undefined){
agent.context.set({name:'Bienvenida', lifespan:0}); Contx = ExistParamtContext(agent,'data_user_context');
let _cedu = ContextIn.parameters.cedula; let _nam = ContextIn.parameters.name; }
if (Contx != null && Contx != NaN && Contx != undefined){
if(Contx.parameters.cedula != null && Contx.parameters.cedula != "" ){
agent.context.set({name:'bienvenida_context', lifespan:0});
let _cedu = Contx.parameters.cedula; let _nam = Contx.parameters.name;
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula:_cedu, name:_nam } }); agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula:_cedu, name:_nam } });
resolve({ cedula:_cedu, name:_nam }); resolve({ cedula:_cedu, name:_nam });
}else{ }else{
agent.context.set({name:'Bienvenida', lifespan:1}); agent.context.set({name:'data_user_context', lifespan:0}); agent.context.set({name:'bienvenida_context', lifespan:1});
resolve(false); resolve(false);
} }
}else{ }else{
agent.context.set({name:'Bienvenida', lifespan:1}); agent.context.set({name:'data_user_context', lifespan:0}); agent.context.set({name:'bienvenida_context', lifespan:1});
resolve(false); resolve(false);
} }
}catch (error) { }catch (error) {
agent.context.set({name:'Bienvenida', lifespan:1}); agent.context.set({name:'data_user_context', lifespan:0}); console.log(error);
agent.context.set({name:'bienvenida_context', lifespan:1});
resolve(false); resolve(false);
} }
}); });
} }
function ExistParamtContext(agent, pamameter){
var data = null;
agent.contexts.forEach(element => {
if(element.name == pamameter){
data = element;
}
});
return data;
}
async function Fun_CerrarSesionAgent(agent, req, res, accion){ async function Fun_CerrarSesionAgent(agent, req, res, accion){
if(accion == 1){ if(accion == 1){
console.log('cerrando sesion...'); console.log('cerrando sesion...');
@ -96,7 +108,7 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){
let legion = await funcion.CerrarSession(sessionId); let legion = await funcion.CerrarSession(sessionId);
if(legion['ok'] == true){ if(legion['ok'] == true){
agent.add(legion['msg']); agent.add(legion['msg']);
agent.context.set({name:'Bienvenida', lifespan:1}); agent.context.set({name:'bienvenida_context', lifespan:1});
agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}}); agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}});
agent.add(dialog.mensaje('bienvenida')); agent.add(dialog.mensaje('bienvenida'));
return agent.add(dialog.mensaje('sol_cedula')); return agent.add(dialog.mensaje('sol_cedula'));
@ -116,17 +128,47 @@ async function Fun_ConfirmarCerrarSesionAgent(agent, req, res){
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if(data_context){
agent.context.set({name:'cerrar_sesion', lifespan:1}); agent.context.set({name:'cerrar_sesion', lifespan:1});
agent.add('¿Esta de acuerdo en cerrar la sesión? \n1. SI \n2. NO'); return agent.add('¿Esta de acuerdo en cerrar la sesión? \n1. SI \n2. NO');
}else{ }else{
Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_ConsultarClavesCatastrales(agent, req, res){
let data_context = await ValidateDataUserContext(agent);
if(data_context){
if(data_context != null && data_context != "" ){
let legion = await funcion.ConsultaClaves(data_context.cedula);
if(legion['ok'] == true){
let coun = legion['data'].length;
legion['data'].forEach((element, index) => {
var rec = element['valor']['boot']['anteriores'];
if(element['valor']['boot']['anteriores'] != 'Recaudación al día'){
rec = rec + '\n' + element['valor']['boot']['actual'] + '\n' + element['valor']['boot']['total']
}
console.log(rec);
if(index == (coun-1)){
return agent.add(element['text'] + '\n' +element['direccion']+ '\n' + rec);
}else{
agent.add(element['text'] + '\n' +funcion.conver_capitalice(element['direccion'])+ '\n' +rec);
}
});
}else{
return agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
}
}
}else{
return Fun_WelcomeAgent(agent, req, res);
}
// return agent.add('exito');
}
module.exports = { module.exports = {
"Fun_DefauldAgent": Fun_DefauldAgent, "Fun_DefauldAgent": Fun_DefauldAgent,
"Fun_SolicitarDatosAgent": Fun_SolicitarDatosAgent, "Fun_SolicitarDatosAgent": Fun_SolicitarDatosAgent,
"Fun_WelcomeAgent": Fun_WelcomeAgent, "Fun_WelcomeAgent": Fun_WelcomeAgent,
"Fun_CerrarSesionAgent": Fun_CerrarSesionAgent, "Fun_CerrarSesionAgent": Fun_CerrarSesionAgent,
"Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent "Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent,
"Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales
} }

6
package-lock.json generated
View File

@ -473,9 +473,9 @@
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
}, },
"dialogflow-fulfillment": { "dialogflow-fulfillment": {
"version": "0.6.1", "version": "0.6.0",
"resolved": "https://registry.npmjs.org/dialogflow-fulfillment/-/dialogflow-fulfillment-0.6.1.tgz", "resolved": "https://registry.npmjs.org/dialogflow-fulfillment/-/dialogflow-fulfillment-0.6.0.tgz",
"integrity": "sha512-lBnjPyXmO0P3grJfNBPTbVX1J3GVCBE1KZ+dEskbsH1O6DVXvFR/ncYroE85dfqGII7xUukfSjtqd084HT3W+w==", "integrity": "sha512-ZZz5lYJOpzwKIHK01/NclZLX3paNsbGe8q3mcULYrxSNYdXkMR4vsYN4hzBMsE6vQwoDhSO+mYxoO6Cj9gYiOw==",
"requires": { "requires": {
"debug": "^3.1.0", "debug": "^3.1.0",
"lodash": "^4.17.11" "lodash": "^4.17.11"

View File

@ -4,14 +4,15 @@
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon ./index.js"
}, },
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"actions-on-google": "^2.14.0", "actions-on-google": "^2.14.0",
"axios": "^0.21.1", "axios": "^0.21.1",
"dialogflow-fulfillment": "^0.6.1", "dialogflow-fulfillment": "0.6.0",
"express": "^4.17.1", "express": "^4.17.1",
"nodemon": "^2.0.7" "nodemon": "^2.0.7"
} }