var funcion = require("./funtions.js"); var dialog = require("./interacciones.js"); const {Card, Image} = require('dialogflow-fulfillment'); 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) )); return agent.add(dialog.mensaje('menu_1')); }else{ return Fun_WelcomeAgent(agent, req, res); } } 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 != 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:'0-Bienvenida-followup', lifespan: 1 }); sesion['msg'] != null ? agent.add(sesion['msg'] ) : null; return agent.add(dialog.mensaje('sol_cedula')); } } return Fun_WelcomeAgent(agent, req, res); }else{ return Fun_WelcomeAgent(agent, req, res); } } async function Fun_WelcomeAgent(agent, req, res){ let data_context = await ValidateDataUserContext(agent); 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:'0-Bienvenida-followup', lifespan:1}); return agent.add(dialog.mensaje('menu_1')); }else{ console.log('NO existe contexto.......'); const sessionId = req.body.session.split("/").reverse()[0]; 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:'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')); }else{ agent.context.set({name:'sol_datos_usuario', lifespan:1}); agent.add(dialog.mensaje('bienvenida')); return agent.add(dialog.mensaje('sol_cedula')); } } } function ValidateDataUserContext(agent){ return new Promise((resolve, reject) => { try{ 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:'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:'0-Bienvenida-followup', lifespan:1}); resolve(false); } }else{ agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); resolve(false); } }catch (error) { console.log(error); agent.context.set({name:'0-Bienvenida-followup', 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...'); const sessionId = req.body.session.split("/").reverse()[0]; let legion = await funcion.CerrarSession(sessionId); if(legion['ok'] == true){ agent.add(legion['msg']); 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')); }else{ return agent.add(legion['msg']); } } if(accion == 0){ agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.add(dialog.mensaje('afirmacion')); return agent.add(dialog.mensaje('menu_1')); } } 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:'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 Func_InformacionTramites(agent, req, res, key_example){ console.log(key_example); try { let data_context = await ValidateDataUserContext(agent); if(data_context){ if(key_example == 0){ return Fun_ConsultarCCAtras(agent, req, res); } let legion = await funcion.OptInfoBot(key_example); if(legion['ok'] == true){ console.log(1) console.log(1) console.log(1) var msger = '*'+legion['data']['data_key']+'*\n\n'; var example = legion['data']['data'].split('|'); if(example.length == 0){ return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } example.forEach(element => { msger = msger + element + '\n'; }); 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) { console-log(error); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } } async function Fun_pruebas(agent, req, res){ try { let data_context = await ValidateDataUserContext(agent); if(data_context){ let legion = await funcion.OptInfoBot('solvencia_key'); console.log(legion); if(legion['ok'] == true){ console.log(1) console.log(1) console.log(1) var msger = '*'+legion['data']['data_key']+'*\n\n'; var example = legion['data']['data'].split('|'); if(example.length == 0){ return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } example.forEach(element => { msger = msger + element + '\n'; }); 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) { console-log(error); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } } async function Fun_ConsultarCCAtras(agent, req, res){ let data_context = await ValidateDataUserContext(agent); if(data_context){ 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){ if(Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "" ){ return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.cedula_otro); } }else{ return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); } } }else{ return Fun_WelcomeAgent(agent, req, res); } } async function Fun_ValidarDocumentos(agent, req, res, tipo){ let data_context = await ValidateDataUserContext(agent); if(data_context){ if(tipo == 1){ return agent.add(dialog.mensaje('sol_data_codigo')); }else if(tipo == 2){ var Contx = agent.context.get('context_codigo_barras'); if (Contx == null || Contx == NaN || Contx == undefined){ Contx = ExistParamtContext(agent,'context_codigo_barras'); } if (Contx != null && Contx != NaN && Contx != undefined){ if(Contx.parameters.codigo_barras != null && Contx.parameters.codigo_barras != "" ){ let legion = await funcion.ValidarComprobante(Contx.parameters.codigo_barras.toUpperCase()); if(legion['ok'] == true){ var send = ''; legion['data']['msg'].forEach((element, index) => { send = send + element + '\n'; }); if(send != ''){ agent.add(send); } if(legion['data']['url2'][0] != undefined){ agent.add(new Card({ title: 'Ver documento', // text: `This is the body text of a card. You can even use line\n breaks and emoji! 💁`, buttonText: 'Clic aquí', buttonUrl: legion['data']['url2'][0] }) ); agent.add('Ver documento:\n'+legion['data']['url2'][0]); // agent.add('Ver documento: ' + ' https://mantaentusmanos.test/c/VP-035013.com'); } return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); }else{ agent.add(legion['msg']); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } } }else{ return Fun_ListarMenu(agent, req, res); } } }else{ return Fun_WelcomeAgent(agent, req, res); } } function Func_FallbackComprobantes(agent, req, res){ agent.context.set({name:'0-Bienvenida-Miscomprobantesdepago-followup', lifespan: 1 }); return agent.add('Envíe el número de la opción que desee: \n\n1. Ver todos los comprobantes \n0. Volver al menu principal'); } function Func_FallbackInfoTramites(agent, req, res){ agent.context.set({name:'0-Bienvenida-InfTram-followup', lifespan: 1 }); return agent.add(dialog.mensaje('info_tramites')); } async function Func_MisComprobantesPago(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.ConsultaComprobantes(data_context.cedula, lery); if(legion['ok'] == true){ var msger = ''; let coun = legion['data'].length; if(lery == 1 && coun > 1){ msger = coun == 1 ? '*ÚLTIMOS COMPROBANTES DE PAGO:*\n\n' : '*ÚLTIMOS '+coun+' COMPROBANTES DE PAGO:*\n\n'; }else{ msger = '*TODOS LOS COMPROBANTES DE PAGO:*\n\n'; } legion['data'].forEach((element, index) => { msger = msger + '' + element['rubro'] + '\nFecha: ' + element['fecha'] + '\nValor págado: *' + element['valor_pagado'] + '*\nVer documento: ' + element['url'] + '\n\n'; }); agent.add(msger); if(lery == 1){ return Func_FallbackComprobantes(agent, req, res); }else{ 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) { console-log(error); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } } 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 != "" ){ if(_cedula == null){ _cedula = data_context.cedula; } 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'] } 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)); } } module.exports = { "Fun_DefauldAgent": Fun_DefauldAgent, "Fun_SolicitarDatosAgent": Fun_SolicitarDatosAgent, "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_pruebas": Fun_pruebas, "Func_InformacionTramites": Func_InformacionTramites, "Fun_ValidarDocumentos": Fun_ValidarDocumentos, "Func_MisComprobantesPago": Func_MisComprobantesPago, "Func_FallbackComprobantes": Func_FallbackComprobantes, "Func_FallbackInfoTramites": Func_FallbackInfoTramites, "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales }