From 61592a34fe1f9f4591576639ee564b2d6ae34801 Mon Sep 17 00:00:00 2001 From: Victor Sanchez Sosa <41167132+Marcelo3Sanchez@users.noreply.github.com> Date: Fri, 4 Jun 2021 17:09:16 -0500 Subject: [PATCH] cc --- index.js | 49 ++++++++++++---- interacciones.js | 25 +++++++- metodos.js | 149 +++++++++++++++++++++++++++++++++++++---------- 3 files changed, 179 insertions(+), 44 deletions(-) diff --git a/index.js b/index.js index ee2649f..f38684a 100644 --- a/index.js +++ b/index.js @@ -14,19 +14,23 @@ app.post("/webhook", express.json(), function (req, res) { // console.log("Dialogflow Request headers: " + JSON.stringify(req.headers)); // console.log("Dialogflow Request body: " + JSON.stringify(req.body)); - +//Inicio function DefauldAgent(){ return metodos.Fun_DefauldAgent(agent, req, res); } - function WelcomeAgent(){ return metodos.Fun_WelcomeAgent(agent, req, res); } - function SolicitarDatosAgent(){ return metodos.Fun_SolicitarDatosAgent(agent, req, res); } + function ListarMenu(){ + return metodos.Fun_ListarMenu(agent, req, res); + } + + +//Cerrar session function SiCerrarSesionAgent(){ return metodos.Fun_CerrarSesionAgent(agent, req, res, 1); } @@ -36,24 +40,49 @@ app.post("/webhook", express.json(), function (req, res) { function ConfirmarCerrarSesionAgent(){ return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res); } + + + + //Consultar Claves Catastrales + function ConfirmarConsultarClavesCatastrales(){ + return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); + } function ConsultarClavesCatastrales(){ return metodos.Fun_ConsultarClavesCatastrales(agent, req, res); } + function ConsultarOtrasClavesCatastrales(){ + return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 1); + } + function ConsultarOtrasClavesCatastrales2(){ + return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 2); + } + function ConsultarCCAtras(){ + return metodos.Fun_ConsultarCCAtras(agent, req, res); + } let intentMap = new Map(); - intentMap.set('Default Fallback Intent', DefauldAgent); + + //Menu 1 - principal intentMap.set('0 - Solicitar datos', SolicitarDatosAgent); intentMap.set('0 - Bienvenida', WelcomeAgent); + intentMap.set('Default Fallback Intent', DefauldAgent); + intentMap.set('0 - SI', ListarMenu); //Menu 1 - Claves catastrales - intentMap.set('M1 - Consulta de claves catastrales', ConsultarClavesCatastrales); - - + // intentMap.set('M1-Consulta-Predios', ConsultaPredios); + intentMap.set('0 - Bienvenida - Consultar-Predios', ConfirmarConsultarClavesCatastrales); + intentMap.set('0 - Bienvenida - Consultar-Predios - Mis predios', ConsultarClavesCatastrales); + intentMap.set('0 - Bienvenida - Consultar-Predios - Otros Predios', ConsultarOtrasClavesCatastrales); + intentMap.set('0 - Bienvenida - Consultar-Predios - Otros Predios - Cedula', ConsultarOtrasClavesCatastrales2); + intentMap.set('0 - Bienvenida - Consultar-Predios - Atras', ConsultarCCAtras); + intentMap.set('0 - Bienvenida - Consultar-Predios - fallback', ConfirmarConsultarClavesCatastrales); //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); + // intentMap.set('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent); + intentMap.set('0 - Bienvenida - Cerrar sesion', ConfirmarCerrarSesionAgent); + intentMap.set('0 - Bienvenida - Cerrar sesion - SI', SiCerrarSesionAgent); + intentMap.set('0 - Bienvenida - Cerrar sesion - NO', NoCerrarSesionAgent); + intentMap.set('0 - Bienvenida - Cerrar sesion - fallback', ConfirmarCerrarSesionAgent); agent.handleRequest(intentMap); }); diff --git a/interacciones.js b/interacciones.js index 561563a..8443a5b 100644 --- a/interacciones.js +++ b/interacciones.js @@ -10,6 +10,19 @@ function mensaje(name, username = null) { 'Estoy para ayudarle pero primero necesito su número de cédula o RUC 🙏' ]; break; + case 'sol_data_cedula': + jsom_interaciones = [ + 'Por favor ingrese el número de cédula del propietario(a)', + 'Ayudeme con el número el número de cédula del propietario(a)' + ]; + break; + case 'retorno_inicio': + jsom_interaciones = [ + '¿Hay algo mas en lo que le pueda ayudar?', + '¿Que mas puedo hacer por usted?', + '¿Puedo ayudarle en algo mas?' + ]; + break; case 'recuerde': jsom_interaciones = [ 'Recuerde que puedo ayudarle en cosas como:', @@ -41,9 +54,15 @@ function mensaje(name, username = null) { var menu = "\n1. Consultar predios \n0. Cerrar sessión"; jsom_interaciones = [ 'Recuerde que puedo ayudarle en cosas como:\n' + menu, - 'En que puedo ayudarle ahora:\n' + menu, - 'Que tal si empezamos con:\n' + menu, - 'Puedo ofrecerle lo siguiente:\n' + menu + 'Puedo ayudarle ahora con:\n' + menu, + 'Podemos continuar con:\n' + menu, + 'Puedo ofrecerle:\n' + menu + ]; + break; + case 'consulta_clave': + var menu = "\n1. Consultar mis predios \n2. Consultar otros predios \n0. Atras"; + jsom_interaciones = [ + '¿Que acción desea realizar?:\n' + menu, ]; break; case 'defauld': diff --git a/metodos.js b/metodos.js index e763880..b74c0fe 100644 --- a/metodos.js +++ b/metodos.js @@ -4,8 +4,8 @@ var dialog = require("./interacciones.js"); async function Fun_DefauldAgent(agent, req, res){ let data_context = await ValidateDataUserContext(agent); if(data_context){ + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); 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')); }else{ return Fun_WelcomeAgent(agent, req, res); @@ -24,7 +24,7 @@ async function Fun_SolicitarDatosAgent(agent, req, res){ 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_context', lifespan: 1 }); + agent.context.set({name:'0-Bienvenida-followup', lifespan: 1 }); sesion['msg'] != null ? agent.add(sesion['msg'] ) : null; return agent.add(dialog.mensaje('sol_cedula')); } @@ -40,7 +40,7 @@ async function Fun_WelcomeAgent(agent, req, res){ if(data_context){ console.log('contexto existe........'); agent.add(dialog.mensaje('bienvenida', data_context.name != null ? funcion.conver_name(data_context.name) : data_context.cedula)); - agent.context.set({name:'menu_1', lifespan:1}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); return agent.add(dialog.mensaje('menu_1')); }else{ console.log('NO existe contexto.......'); @@ -48,8 +48,7 @@ async function Fun_WelcomeAgent(agent, req, res){ let legion = await funcion.ValidarSession(sessionId); 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_context', lifespan:0}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); 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')); @@ -71,21 +70,21 @@ function ValidateDataUserContext(agent){ } if (Contx != null && Contx != NaN && Contx != undefined){ if(Contx.parameters.cedula != null && Contx.parameters.cedula != "" ){ - agent.context.set({name:'bienvenida_context', lifespan:0}); + agent.context.set({name:'0-Bienvenida-followup', 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_context', lifespan:1}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); resolve(false); } }else{ - agent.context.set({name:'bienvenida_context', lifespan:1}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); resolve(false); } }catch (error) { console.log(error); - agent.context.set({name:'bienvenida_context', lifespan:1}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); resolve(false); } }); @@ -108,7 +107,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_context', lifespan:1}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}}); agent.add(dialog.mensaje('bienvenida')); return agent.add(dialog.mensaje('sol_cedula')); @@ -117,7 +116,7 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){ } } if(accion == 0){ - agent.context.set({name:'menu_1', lifespan:1}); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.add(dialog.mensaje('afirmacion')); return agent.add(dialog.mensaje('menu_1')); } @@ -127,40 +126,123 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){ 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.context.set({name:'cerrar_sesion', lifespan:1}); + agent.context.set({name:'0-Bienvenida-Cerrarsesion-followup', lifespan:1}); return agent.add('¿Esta de acuerdo en cerrar la sesión? \n1. SI \n2. NO'); }else{ return Fun_WelcomeAgent(agent, req, res); } } -async function Fun_ConsultarClavesCatastrales(agent, req, res){ +async function Fun_ConsultarCCAtras(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); - } - }); + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); + return agent.add(dialog.mensaje('menu_1')); + }else{ + return Fun_WelcomeAgent(agent, req, res); + } +} + + +async function Fun_ConfirmarConsultarClavesCatastrales(agent, req, res){ + let data_context = await ValidateDataUserContext(agent); + if(data_context){ + agent.context.set({name:'0-Bienvenida-Consultar-Predios-followup', lifespan:1}); + return agent.add(dialog.mensaje('consulta_clave')); + }else{ + return Fun_WelcomeAgent(agent, req, res); + } +} + + +async function Fun_ConsultaPredios(agent, req, res){ + let data_context = await ValidateDataUserContext(agent); + if(data_context){ + agent.context.set({name:'nuevo_context', lifespan:1}); + return agent.add(dialog.mensaje('consulta_clave')); + }else{ + return Fun_WelcomeAgent(agent, req, res); + } +} + +async function Fun_RetornarAlinicio(agent, req, res,name){ + agent.context.set({name:'inicial_context', lifespan:1}); + return agent.add(name +', '+dialog.mensaje('retorno_inicio')); +} + +async function Fun_ListarMenu(agent, req, res){ + agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); + return agent.add(dialog.mensaje('menu_1')); +} + +async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo){ + let data_context = await ValidateDataUserContext(agent); + if(data_context){ + if(tipo == 1){ + return agent.add(dialog.mensaje('sol_data_cedula')); + }else if(tipo == 2){ + var Contx = agent.context.get('data_predios'); + if (Contx == null || Contx == NaN || Contx == undefined){ Contx = ExistParamtContext(agent,'data_predios'); } + if (Contx != null && Contx != NaN && Contx != undefined){ + console.log(Contx); + if(Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "" ){ + console.log('esperando por la cedula '+Contx.parameters.cedula_otro); + return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.cedula_otro); + } }else{ - return agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); + return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); } } }else{ return Fun_WelcomeAgent(agent, req, res); } - // return agent.add('exito'); +} + +async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){ + try { + let data_context = await ValidateDataUserContext(agent); + if(data_context){ + if(data_context != null && data_context != "" ){ + console.log(data_context+' ese'); + if(_cedula == null){ + _cedula = data_context.cedula; + } + console.log(_cedula+' ese'); + const regex = /^[0-9]*$/; + if(regex.test(_cedula)){ + let legion = await funcion.ConsultaClaves(_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)){ + agent.add(element['text'] + '\n' +element['direccion']+ '\n' + rec); + return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + }else{ + agent.add(element['text'] + '\n' +funcion.conver_capitalice(element['direccion'])+ '\n' +rec); + } + }); + }else{ + agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); + return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + } + }else{ + agent.add('El número de cédula ingresado no es válido'); + return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); + } + } + }else{ + return Fun_WelcomeAgent(agent, req, res); + } + } catch (error) { + console-log(error); + return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + } } @@ -170,5 +252,10 @@ module.exports = { "Fun_WelcomeAgent": Fun_WelcomeAgent, "Fun_CerrarSesionAgent": Fun_CerrarSesionAgent, "Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent, + "Fun_ConfirmarConsultarClavesCatastrales": Fun_ConfirmarConsultarClavesCatastrales, + "Fun_ConsultarOtrasClavesCatastrales": Fun_ConsultarOtrasClavesCatastrales, + "Fun_ConsultaPredios": Fun_ConsultaPredios, + "Fun_ConsultarCCAtras": Fun_ConsultarCCAtras, + "Fun_ListarMenu": Fun_ListarMenu, "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales } \ No newline at end of file