From de8727803dbfbeebc4448c3b915553ed807b30a7 Mon Sep 17 00:00:00 2001 From: Victor Sanchez Sosa <41167132+Marcelo3Sanchez@users.noreply.github.com> Date: Wed, 2 Jun 2021 17:55:46 -0500 Subject: [PATCH] commit --- funtions.js | 59 ++++++++++++++++++++++++++------- index.js | 13 ++++++-- metodos.js | 84 +++++++++++++++++++++++++++++++++++------------ package-lock.json | 6 ++-- package.json | 5 +-- 5 files changed, 127 insertions(+), 40 deletions(-) diff --git a/funtions.js b/funtions.js index e9c3330..fd63248 100644 --- a/funtions.js +++ b/funtions.js @@ -12,19 +12,29 @@ function conver_utf8(data) { } function conver_name(data) { - var porciones = data.split(' '); - if(porciones.length >= 2 && porciones.length <= 4){ - var cadena = new String(data); - cadena = porciones[(porciones.length -2)]+ ' ' +porciones[(porciones.length -1)]; - cadena = cadena.toLowerCase(); - return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); - }else{ - var cadena = new String(data); - cadena = cadena.toLowerCase(); - return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); + try { + var porciones = data.split(' '); + if(porciones.length >= 2 && porciones.length <= 4){ + var cadena = new String(data); + cadena = porciones[(porciones.length -2)]+ ' ' +porciones[(porciones.length -1)]; + cadena = cadena.toLowerCase(); + return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); + }else{ + var cadena = new String(data); + 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){ @@ -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){ 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, "ValidarSession": ValidarSession, "conver_name": conver_name, - "CerrarSession": CerrarSession + "CerrarSession": CerrarSession, + "conver_capitalice": conver_capitalice, + "ConsultaClaves": ConsultaClaves } \ No newline at end of file diff --git a/index.js b/index.js index 0e3eb64..ee2649f 100644 --- a/index.js +++ b/index.js @@ -36,14 +36,21 @@ app.post("/webhook", express.json(), function (req, res) { function ConfirmarCerrarSesionAgent(){ return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res); } - - + function ConsultarClavesCatastrales(){ + return metodos.Fun_ConsultarClavesCatastrales(agent, req, res); + } let intentMap = new Map(); intentMap.set('Default Fallback Intent', DefauldAgent); intentMap.set('0 - Solicitar datos', SolicitarDatosAgent); 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.1 - Cerrar sesion - SI', SiCerrarSesionAgent); intentMap.set('M0.2 - Cerrar sesion - NO', NoCerrarSesionAgent); diff --git a/metodos.js b/metodos.js index 8c1db92..e763880 100644 --- a/metodos.js +++ b/metodos.js @@ -4,7 +4,6 @@ var dialog = require("./interacciones.js"); async function Fun_DefauldAgent(agent, req, res){ let data_context = await ValidateDataUserContext(agent); if(data_context){ - console.log('defaulde') agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) )); agent.context.set({name:'menu_1', lifespan: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]; let data_context = await ValidateDataUserContext(agent); 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); if(sesion['ok'] == true && sesion['data']['name'] != null){ 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'] } }); }else{ 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; return agent.add(dialog.mensaje('sol_cedula')); } } - Fun_WelcomeAgent(agent, req, res, true); + return Fun_WelcomeAgent(agent, req, res); }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); if(data_context){ 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){ console.log('sesion existe en la bd') 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.add(dialog.mensaje('bienvenida', legion['data']['name'] != null ? funcion.conver_name(legion['data']['name']) : d_text.cedula)); - return agent.add(dialog.mensaje('menu_1')); }else{ agent.add(dialog.mensaje('bienvenida')); @@ -64,31 +62,45 @@ async function Fun_WelcomeAgent(agent, req, res, hola = false){ function ValidateDataUserContext(agent){ - return new Promise((resolve, reject) => { try{ - var ContextIn = agent.context.get('data_user_context'); - if (ContextIn != null && ContextIn != NaN && ContextIn != undefined){ - if(ContextIn.parameters.cedula != null && ContextIn.parameters.cedula != "" ){ - agent.context.set({name:'Bienvenida', lifespan:0}); - let _cedu = ContextIn.parameters.cedula; let _nam = ContextIn.parameters.name; + var Contx = null; + Contx = agent.context.get('data_user_context'); + if (Contx == null || Contx == NaN || Contx == undefined){ + Contx = ExistParamtContext(agent,'data_user_context'); + } + 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 } }); resolve({ cedula:_cedu, name:_nam }); }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); } }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); } }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); } }); } +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){ if(accion == 1){ console.log('cerrando sesion...'); @@ -96,7 +108,7 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){ let legion = await funcion.CerrarSession(sessionId); if(legion['ok'] == true){ 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.add(dialog.mensaje('bienvenida')); return agent.add(dialog.mensaje('sol_cedula')); @@ -116,17 +128,47 @@ async function Fun_ConfirmarCerrarSesionAgent(agent, req, res){ let data_context = await ValidateDataUserContext(agent); if(data_context){ 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{ - 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 = { "Fun_DefauldAgent": Fun_DefauldAgent, "Fun_SolicitarDatosAgent": Fun_SolicitarDatosAgent, "Fun_WelcomeAgent": Fun_WelcomeAgent, "Fun_CerrarSesionAgent": Fun_CerrarSesionAgent, - "Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent + "Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent, + "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 747cfcb..e6ef087 100644 --- a/package-lock.json +++ b/package-lock.json @@ -473,9 +473,9 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "dialogflow-fulfillment": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/dialogflow-fulfillment/-/dialogflow-fulfillment-0.6.1.tgz", - "integrity": "sha512-lBnjPyXmO0P3grJfNBPTbVX1J3GVCBE1KZ+dEskbsH1O6DVXvFR/ncYroE85dfqGII7xUukfSjtqd084HT3W+w==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/dialogflow-fulfillment/-/dialogflow-fulfillment-0.6.0.tgz", + "integrity": "sha512-ZZz5lYJOpzwKIHK01/NclZLX3paNsbGe8q3mcULYrxSNYdXkMR4vsYN4hzBMsE6vQwoDhSO+mYxoO6Cj9gYiOw==", "requires": { "debug": "^3.1.0", "lodash": "^4.17.11" diff --git a/package.json b/package.json index dd5f4a9..ba5f768 100644 --- a/package.json +++ b/package.json @@ -4,14 +4,15 @@ "description": "", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "start": "nodemon ./index.js" }, "author": "", "license": "ISC", "dependencies": { "actions-on-google": "^2.14.0", "axios": "^0.21.1", - "dialogflow-fulfillment": "^0.6.1", + "dialogflow-fulfillment": "0.6.0", "express": "^4.17.1", "nodemon": "^2.0.7" }