From c20986931a6f17c6cf848d1299f60609479d630a Mon Sep 17 00:00:00 2001 From: Marcelo Sanchez Date: Mon, 19 Jan 2026 15:52:08 -0500 Subject: [PATCH] _ --- funtions.js | 89 +++++++++++++++--------- index.js | 122 ++++++++++++++++++++------------- interacciones.js | 12 ++++ metodos.js | 175 ++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 296 insertions(+), 102 deletions(-) diff --git a/funtions.js b/funtions.js index 8d4783c..4b648a2 100644 --- a/funtions.js +++ b/funtions.js @@ -187,41 +187,68 @@ async function ConsultaClaves(cedula, chang = null) { }); } - -const fs = require('fs'); -async function ConsultaTasaRecoleccion(cedula, index) { - return new Promise((resolve) => { - const result = { ok: false, data: [], msg: null }; - - try { - const data = fs.readFileSync('trb.json', 'utf8'); - const json = JSON.parse(data); - - if (!Array.isArray(json)) { - result.msg = 'El JSON no es un arreglo'; - return resolve(result); - } - - const response = json.filter( - item => String(item.documento).trim() === String(cedula).trim() - ); - - if (response.length > 0) { - result.ok = true; - result.data = response; // ← ahora es un array - result.msg = 'Consulta exitosa'; - } else { - result.msg = 'No se encontraron valores disponibles'; - } - - resolve(result); - } catch (error) { - result.msg = error.message; - resolve(result); +async function ConsultaTasaRecoleccion(documento, type = 2) { + return new Promise((resolve, reject) => { + var array = { 'ok': false, 'data': [], 'msg': 'Consulta exitosa' }; + var _ur = 'consulta_trb'; + let params = { + boot: true, + tipo_doc: type, + valor: documento, } + AxiosPOST(_ur, params, API_TOKEN_PORTAL).then(function (result) { + if(result.length > 0){ + array['ok'] = true; + array['data'] = result; + }else{ + array['msg'] = 'No se encontrarón valores pendientes de pago' + } + resolve(array); + }).catch(function (error) { + array['msg'] = error; + resolve(array); + }); }); } + + + + +// const fs = require('fs'); +// async function ConsultaTasaRecoleccion(cedula, index) { +// return new Promise((resolve) => { +// const result = { ok: false, data: [], msg: null }; + +// try { +// const data = fs.readFileSync('trb.json', 'utf8'); +// const json = JSON.parse(data); + +// if (!Array.isArray(json)) { +// result.msg = 'El JSON no es un arreglo'; +// return resolve(result); +// } + +// const response = json.filter( +// item => String(item.documento).trim() === String(cedula).trim() +// ); + +// if (response.length > 0) { +// result.ok = true; +// result.data = response; // ← ahora es un array +// result.msg = 'Consulta exitosa'; +// } else { +// result.msg = 'No se encontraron valores disponibles'; +// } + +// resolve(result); +// } catch (error) { +// result.msg = error.message; +// resolve(result); +// } +// }); +// } + async function ConsultaComprobantes(cedula, index) { return new Promise((resolve, reject) => { var array = { 'ok': false, 'data': [], 'msg': null }; diff --git a/index.js b/index.js index eca5054..c2ace90 100644 --- a/index.js +++ b/index.js @@ -20,124 +20,143 @@ app.post("/webhook", express.json(), function (req, res) { /***** Contexto de inicio *****/ - function DefauldAgent(){ - return metodos.Fun_DefauldAgent(agent, req, res); + function DefauldAgent() { + return metodos.Fun_DefauldAgent(agent, req, res); } - function WelcomeAgent(){ - return metodos.Fun_WelcomeAgent(agent, req, res); + function WelcomeAgent() { + return metodos.Fun_WelcomeAgent(agent, req, res); } - function SolicitarDatosAgent(){ + function SolicitarDatosAgent() { return metodos.Fun_SolicitarDatosAgent(agent, req, res); } - function ListarMenu(){ + function ListarMenu() { return metodos.Fun_ListarMenu(agent, req, res); } - function FuncGracias(){ + function FuncGracias() { return metodos.Fun_ListarMenu(agent, req, res, 1); } - function QueHacesFunction(){ + function QueHacesFunction() { return metodos.Fun_QueHacesFunction(agent, req, res); } - function ComoEstasFunction(){ - return metodos.Fun_QueHacesFunction(agent, req, res,1); + function ComoEstasFunction() { + return metodos.Fun_QueHacesFunction(agent, req, res, 1); } - + /***** Cerrar session *****/ - function SiCerrarSesionAgent(){ + function SiCerrarSesionAgent() { return metodos.Fun_CerrarSesionAgent(agent, req, res, 1); } - function NoCerrarSesionAgent(){ + function NoCerrarSesionAgent() { return metodos.Fun_CerrarSesionAgent(agent, req, res, 0); } - function ConfirmarCerrarSesionAgent(){ + function ConfirmarCerrarSesionAgent() { return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res); } /***** Consultar Claves Catastrales *****/ - function ConfirmarConsultarClavesCatastrales(){ + function ConfirmarConsultarClavesCatastrales() { return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); } - function ConsultarClavesCatastrales(){ + function ConsultarClavesCatastrales() { return metodos.Fun_ConsultarClavesCatastrales(agent, req, res); } - function ConsultarOtrasClavesCatastrales(){ + function ConsultarOtrasClavesCatastrales() { return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 1); } - function ConsultarPorClavesCatastrales(){ + function ConsultarPorClavesCatastrales() { return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 3); } - function ConsultarPorClavesCatastrales2(){ + function ConsultarPorClavesCatastrales2() { return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 4); } - function ConsultarOtrasClavesCatastrales2(){ + function ConsultarOtrasClavesCatastrales2() { return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 2); } - function ConsultarCCAtras(){ + function ConsultarCCAtras() { return metodos.Fun_ConsultarCCAtras(agent, req, res); } /***** Prueba *****/ - function prueba(){ + function prueba() { return metodos.Fun_pruebas(agent, req, res); } - + /***** Validar documentos *****/ - function ValidarDocumentos(){ + function ValidarDocumentos() { return metodos.Fun_ValidarDocumentos(agent, req, res, 1); } - function ValidarCodigobarras(){ + function ValidarCodigobarras() { return metodos.Fun_ValidarDocumentos(agent, req, res, 2); } /***** Mis comprobantes *****/ - function MisComprobantesPago(){ + function MisComprobantesPago() { return metodos.Func_MisComprobantesPago(agent, req, res, 1); } - function TodosMisComprobantesPago(){ + function TodosMisComprobantesPago() { return metodos.Func_MisComprobantesPago(agent, req, res, 2); } - function InicioMisComprobantesPago(){ + function InicioMisComprobantesPago() { return metodos.Func_MisComprobantesPago(agent, req, res, 3); } - function FallbackComprobantes(){ + function FallbackComprobantes() { return metodos.Func_FallbackComprobantes(agent, req, res); } //*******Mis tramites *******/ - function MistramitesFallback(){ + function MistramitesFallback() { return metodos.Func_HistorialTramite(agent, req, res, 1); } - function MistramitesPrevious(){ + function MistramitesPrevious() { return metodos.Func_HistorialTramite(agent, req, res, 2); } - function Mistramites(){ + function Mistramites() { return metodos.Func_MisTramites(agent, req, res); } - function HistorialTramite(){ + function HistorialTramite() { return metodos.Func_HistorialTramite(agent, req, res); } /***** Info Tramites *****/ let tramer = ['Certificado_de_solvencia', 'Certificado_de_no_posees_bienes']; - function FallbackInfoTramites(){ + function FallbackInfoTramites() { return metodos.Func_FallbackInfoTramites(agent, req, res); } - function AtrasInfoTramites(){ + function AtrasInfoTramites() { return metodos.Func_InformacionTramites(agent, req, res, 0); } - function InformacionTramitesSolv(){ + function InformacionTramitesSolv() { return metodos.Func_InformacionTramites(agent, req, res, tramer[0]); } - function InformacionTramitesNoBienes(){ + function InformacionTramitesNoBienes() { return metodos.Func_InformacionTramites(agent, req, res, tramer[1]); } - + /********** TRB **********/ - function TasaRecoleccionBasura(){ + function TasaRecoleccionBasura() { //menu principal + return metodos.Fun_ConfirmarTasaRecoleccionBasura(agent, req, res); + } + function MisValoresTasaRecoleccionBasura() { //menu principal return metodos.Func_MiTasaRecoleccionBasura(agent, req, res); } - + function TRB_num_cedula_Recolectar() { + return metodos.Fun_ConsultarTRB(agent, req, res, 1); + } + function TRB_num_condigoRecolectar() { + return metodos.Fun_ConsultarTRB(agent, req, res, 3); + } + function TRB_num_cedula_Consultar() { + return metodos.Fun_ConsultarTRB(agent, req, res, 2); + } + function TRB_num_condigoConsultarr() { + return metodos.Fun_ConsultarTRB(agent, req, res, 4); + } + + // function ConfirmarConsultarClavesCatastrales(){ + // return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); + // } + let intentMap = new Map(); /***** Menu 1 - principal *****/ @@ -159,34 +178,41 @@ app.post("/webhook", express.json(), function (req, res) { 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('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); - + /***** Menu 1 - Validar Documentos *****/ intentMap.set('0 - Bienvenida - Validar Documentos', ValidarDocumentos); intentMap.set('0 - Bienvenida - Validar Documentos - codigo', ValidarCodigobarras); - + /***** Menu 1 - Mis comprobantes *****/ intentMap.set('0 - Bienvenida - Mis comprobantes de pago', MisComprobantesPago); intentMap.set('0 - Bienvenida - Ver todos los comprobantes', TodosMisComprobantesPago); intentMap.set('0 - Bienvenida - Mis comprobantes de pago - Menu Principal', InicioMisComprobantesPago); intentMap.set('0 - Bienvenida - Mis comprobantes de pago - fallback', FallbackComprobantes); - - + + //******** Menu 1 - Mis tramites **************/ intentMap.set('0 - Bienvenida - Mis Tramites', Mistramites); intentMap.set('0 - Bienvenida - Mis Tramites - Historial', HistorialTramite); intentMap.set('0 - Bienvenida - Mis Tramites - fallback', MistramitesFallback); intentMap.set('0 - Bienvenida - Mis Tramites - previous', MistramitesPrevious); - //******** Menu 1 - Mis tramites **************/ + //******** Menu 2 - Tasa de recoleccion de basura **************/ intentMap.set('0 - Bienvenida - TRB', TasaRecoleccionBasura); + intentMap.set('0 - Bienvenida - TRB - Mis valores', MisValoresTasaRecoleccionBasura); + intentMap.set('0 - Bienvenida - TRB - documento Requiere', TRB_num_cedula_Recolectar); + intentMap.set('0 - Bienvenida - TRB - documento Requiere - next', TRB_num_cedula_Consultar); + intentMap.set('0 - Bienvenida - TRB - cod requiere', TRB_num_condigoRecolectar); + intentMap.set('0 - Bienvenida - TRB - cod requiere - next', TRB_num_condigoConsultarr); + intentMap.set('0 - Bienvenida - TRB - previous', ConsultarCCAtras); + intentMap.set('0 - Bienvenida - TRB - fallback', TasaRecoleccionBasura); + - /***** Menu 1 - Informacion de tramites *****/ intentMap.set('0 - Bienvenida - Inf Tram - fallback', FallbackInfoTramites); intentMap.set('0 - Bienvenida - Inf Tram - Menu Principal', AtrasInfoTramites); @@ -204,5 +230,5 @@ app.post("/webhook", express.json(), function (req, res) { let port = process.env.port || 3092; app.listen(port, "0.0.0.0", () => { - console.log("Estamos ejecutando el servidor en el puerto " + port); + console.log("Estamos ejecutando el servidor en el puerto " + port + ' exec: ngrok http 3092'); }); \ No newline at end of file diff --git a/interacciones.js b/interacciones.js index 49ddbae..c39b601 100644 --- a/interacciones.js +++ b/interacciones.js @@ -30,6 +30,12 @@ function mensaje(name, username = null, massager = null) { 'Ayúdeme con la clave catastral del propietario(a).' ]; break; + case 'sol_codido_trb': + jsom_interaciones = [ + 'Por favor ingrese con número de contrato', + 'Ayúdeme ingresando el número de contrato' + ]; + break; case 'sol_data_codigo': jsom_interaciones = [ 'Por favor ingrese el código de barras del documento', @@ -90,6 +96,12 @@ function mensaje(name, username = null, massager = null) { '¿Qué acción desea realizar?\n' + menu + "\n\n -Ingrese el número de la opción que desee.", ]; break; + case 'trb_menu': + var menu = "\n1. Mí número de cédeula \n2. Otro número de cédula \n3. Consultar por número de contrato \n0. Atrás"; + jsom_interaciones = [ + 'TRB: ¿Como desea consultar?\n' + menu + "\n\n -Ingrese el número de la opción que desee.", + ]; + break; case 'info_tramites': var menu = "1. Certificado de solvencia \n2. Certificado de no poseer bienes \n0. Ir al menú anterior"; jsom_interaciones = [ diff --git a/metodos.js b/metodos.js index fd2853b..279d782 100644 --- a/metodos.js +++ b/metodos.js @@ -429,6 +429,19 @@ async function Fun_ConfirmarConsultarClavesCatastrales(agent, req, res) { } } +async function Fun_ConfirmarTasaRecoleccionBasura(agent, req, res) { + let data_context = await ValidateDataUserContext(agent); + if (data_context) { + agent.context.set({ + name: '0-Bienvenida-TRB-seguimiento', + lifespan: 1 + }); + return agent.add(dialog.mensaje('trb_menu')); + } else { + return Fun_WelcomeAgent(agent, req, res); + } +} + async function Fun_ConsultaPredios(agent, req, res) { let data_context = await ValidateDataUserContext(agent); @@ -521,6 +534,68 @@ async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo) { } +async function Fun_ConsultarTRB(agent, req, res, tipo) { + try { + let data_context = await ValidateDataUserContext(agent); + console.log("agemte") + console.log(data_context) + console.log(tipo) + if (data_context) { + if (tipo == 1) { + agent.context.set({ + name: 'data_predios', + lifespan: 1 + }); + return agent.add(dialog.mensaje('sol_data_cedula')); + } else if (tipo == 2) { + console.log("entre al segundo contesto") + var Contx = agent.context.get('data_predios'); + if (Contx == null || Contx == NaN || Contx == undefined) { + console.log("no existe contexto") + Contx = ExistParamtContext(agent, 'data_predios'); + } + if (Contx != null && Contx != NaN && Contx != undefined) { + console.log("exostedd 2222") + if (Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "") { + return Func_MiTasaRecoleccionBasura(agent, req, res, 2, Contx.parameters.cedula_otro); + } else { + return TasaRecoleccionBasura(agent, req, res); + } + } else { + return TasaRecoleccionBasura(agent, req, res); + } + } else if (tipo == 3) { + agent.context.set({ + name: 'data_predios', + lifespan: 1 + }); + return agent.add(dialog.mensaje('sol_codido_trb')); + } else if (tipo == 4) { + 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) { + if (Contx.parameters.codigo != null && Contx.parameters.codigo != "") { + console.log("no hay ca " + Contx.parameters.codigo) + return Func_MiTasaRecoleccionBasura(agent, req, res, 2, Contx.parameters.codigo); + } else { + return TasaRecoleccionBasura(agent, req, res); + } + } else { + return TasaRecoleccionBasura(agent, req, res); + } + } + } else { + return Fun_WelcomeAgent(agent, req, res); + } + } catch (error) { + return ResolveDefauld(agent); + } +} + + + async function Fun_ValidarDocumentos(agent, req, res, tipo) { try { let data_context = await ValidateDataUserContext(agent); @@ -594,8 +669,7 @@ function Func_FallbackInfoTramites(agent, req, res) { return agent.add(dialog.mensaje('info_tramites')); } - -async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) { +async function Func_MiTasaRecoleccionBasura(agent, req, res, lery = 1, data = null) { try { let data_context = await ValidateDataUserContext(agent); if (data_context) { @@ -603,37 +677,34 @@ async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) { return Fun_ConsultarCCAtras(agent, req, res); } if (data_context != null && data_context != "") { - let legion = await funcion.ConsultaTasaRecoleccion(data_context.cedula, lery); - console.log(legion); + let legion = []; + if (lery == 1) { + legion = await funcion.ConsultaTasaRecoleccion(data_context.cedula); + } else if (lery == 2) { + console.log("consulte ser") + legion = await funcion.ConsultaTasaRecoleccion(data, 1); + } if (legion['ok'] == true) { let count = legion['data'].length; - var msger = ''; + var msger = '*TASA DE RECOLECCIÓN DE BASURA*\n'; if (count > 0) { legion['data'].forEach(elem_legio => { let suma = 0; - console.log(elem_legio); - msger = msger + '\n*Tasa de recolección de basura CC: ' + elem_legio.cc + '* (' + elem_legio.direccion + ') \n'; - let meses_arr = ['Enero 2026', 'Feberero 2026', 'Marzo 2026']; - meses_arr.forEach(element => { - suma += Number(elem_legio.promedio); - msger = msger + '🚛 ' + element + ' : *$' + elem_legio.promedio + '*\n'; + + msger = msger + '\n🏠 Contrato *' + elem_legio.numero_contrato + '* (' + funcion.conver_capitalice(elem_legio.direccion) + ') \n'; + elem_legio.facturas_usadas_para_promedio.forEach(elem_omega => { + if (elem_omega.estado_proceso != 'GENERADA POR CNEL') { + suma += Number(elem_omega.monto_total); + msger = msger + '🚛 ' + elem_omega.mes + ' : *$' + elem_omega.monto_total + '*\n'; + } }); - msger = msger + '💵 *Total a pagar: $' + suma.toFixed(2) + '*\n'; + msger = msger + '💵 Total a pagar: *$' + suma.toFixed(2) + '*\n'; + msger = msger + '\nPara ver mas detalles revise: https://portalciudadano.manta.gob.ec/consulta_trb'; }); } else { - + msger = msger + "No se encontrarón valores pendientes de pago"; } - // console.log(count); - // if (legion['data'].documento != undefined) { - // meses_arr.forEach(element => { - // suma += Number(legion['data'].promedio); - // msger = msger + '🚛 ' + element + ' : *$' + legion['data'].promedio + '*\n'; - // }); - // msger = msger + '\n💵 *Total a pagar: $' + suma.toFixed(2) + '*'; - // } else { - // msger = msger + "No se encontrarón valores pendientes de pago"; - // } agent.add(msger); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } else { @@ -649,6 +720,62 @@ async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) { } } + + +// async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) { +// try { +// let data_context = await ValidateDataUserContext(agent); +// if (data_context) { +// if (lery == 3) { +// return Fun_ConsultarCCAtras(agent, req, res); +// } +// if (data_context != null && data_context != "") { +// let legion = await funcion.ConsultaTasaRecoleccion(data_context.cedula, lery); +// console.log(legion); +// if (legion['ok'] == true) { +// let count = legion['data'].length; +// var msger = ''; +// if (count > 0) { +// legion['data'].forEach(elem_legio => { +// let suma = 0; +// console.log(elem_legio); +// msger = msger + '\n*Tasa de recolección de basura CC: ' + elem_legio.cc + '* (' + elem_legio.direccion + ') \n'; +// let meses_arr = ['Enero 2026', 'Feberero 2026', 'Marzo 2026']; +// meses_arr.forEach(element => { +// suma += Number(elem_legio.promedio); +// msger = msger + '🚛 ' + element + ' : *$' + elem_legio.promedio + '*\n'; +// }); +// msger = msger + '💵 *Total a pagar: $' + suma.toFixed(2) + '*\n'; +// }); + +// } else { + +// } +// // console.log(count); +// // if (legion['data'].documento != undefined) { +// // meses_arr.forEach(element => { +// // suma += Number(legion['data'].promedio); +// // msger = msger + '🚛 ' + element + ' : *$' + legion['data'].promedio + '*\n'; +// // }); +// // msger = msger + '\n💵 *Total a pagar: $' + suma.toFixed(2) + '*'; +// // } else { +// // msger = msger + "No se encontrarón valores pendientes de pago"; +// // } +// agent.add(msger); +// return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); +// } else { +// agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']); +// return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); +// } +// } +// } else { +// return Fun_WelcomeAgent(agent, req, res); +// } +// } catch (error) { +// return ResolveDefauld(agent); +// } +// } + async function Func_MisComprobantesPago(agent, req, res, lery) { try { let data_context = await ValidateDataUserContext(agent); @@ -754,6 +881,8 @@ module.exports = { "Fun_CerrarSesionAgent": Fun_CerrarSesionAgent, "Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent, "Fun_ConfirmarConsultarClavesCatastrales": Fun_ConfirmarConsultarClavesCatastrales, + "Fun_ConfirmarTasaRecoleccionBasura": Fun_ConfirmarTasaRecoleccionBasura, + "Fun_ConsultarTRB": Fun_ConsultarTRB, "Fun_ConsultarOtrasClavesCatastrales": Fun_ConsultarOtrasClavesCatastrales, "Fun_ConsultaPredios": Fun_ConsultaPredios, "Fun_ConsultarCCAtras": Fun_ConsultarCCAtras,