This commit is contained in:
Marcelo Sanchez 2026-01-19 15:52:08 -05:00
parent cd9fb1a85d
commit c20986931a
4 changed files with 296 additions and 102 deletions

View File

@ -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);
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,
}
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';
AxiosPOST(_ur, params, API_TOKEN_PORTAL).then(function (result) {
if(result.length > 0){
array['ok'] = true;
array['data'] = result;
}else{
result.msg = 'No se encontraron valores disponibles';
}
resolve(result);
} catch (error) {
result.msg = error.message;
resolve(result);
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 };

View File

@ -134,9 +134,28 @@ app.post("/webhook", express.json(), function (req, res) {
}
/********** 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();
@ -183,8 +202,15 @@ app.post("/webhook", express.json(), function (req, res) {
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 *****/
@ -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');
});

View File

@ -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 = [

View File

@ -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,