diff --git a/funtions.js b/funtions.js index 5d25f45..ca26238 100644 --- a/funtions.js +++ b/funtions.js @@ -1,5 +1,6 @@ const { error } = require('actions-on-google/dist/common'); const axios= require('axios'); +const URLIC = 'https://sistemasic.manta.gob.ec/'; const URLPC = 'http://mantaentusmanos.test/'; // const URLPC = 'https://portalciudadano.manta.gob.ec/'; const { WebhookClient } = require("dialogflow-fulfillment"); @@ -12,12 +13,21 @@ function conver_utf8(data) { return Buffer.from(data, 'base64').toString('ascii'); } -function conver_name(data) { +function conver_name(data, recep = null) { 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)]; + var accion = Math.floor(Math.random() * (1 - 4)) + 4; + console.log('publico'+recep); + if(recep != null){ accion = recep; } + if(accion == 1){ + cadena = porciones[(porciones.length -2)]; + }else if(accion == 2){ + cadena = porciones[(porciones.length -1)]; + }else{ + 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{ @@ -43,16 +53,24 @@ function AxiosPOST(url, params){ resolve(response.data); }).catch(function (error) { resolve({'estado':false, 'data':[], 'msg':error}); + }).then(function () { + resolve({'estado':false, 'data':[], 'msg':'Lo siento, no logre terminar de procesar la solicitúd'}); }); }); } -function AxiosGET(url, params){ - console.log(URLPC+url); +function AxiosGET(url, params, nweurl = null){ + if(nweurl == 'sistemasic'){ + url = URLIC + url; + }else{ + url = URLPC + url; + } return new Promise((resolve, reject) => { - axios.get(URLPC+url, params).then(function (response) { + axios.get(url, params).then(function (response) { resolve(response.data); }).catch(function (error) { resolve({'estado':false, 'data':[], 'msg':error}); + }).then(function () { + resolve({'estado':false, 'data':[], 'msg':'Lo siento, no logre terminar de procesar la solicitúd'}); }); }); } @@ -130,13 +148,23 @@ async function ValidarComprobante(codigo){ } -async function ConsultaClaves(cedula){ +async function ConsultaClaves(cedula, chang = null){ return new Promise((resolve, reject) => { var array = {'ok': false, 'data':[], 'msg':null}; - AxiosGET('consulta_predios_detalle/2/'+cedula+'?boot=true', {}).then(function (result) { + var _ur = 'consulta_predios_detalle/2/'+cedula+'?boot=true'; + if(chang != null){ + var _ur = 'consulta_predios_detalle/1/'+cedula+'?boot=true&cc=1'; + } + console.log(_ur); + AxiosGET(_ur, {}).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'; } + }else{ + array['msg'] = 'el número de cédula '+cedula+' no posee predios catastrales registrados en el GAD MANTA'; + if(chang != null){ + array['msg'] = 'la clave catastral '+cedula+' no existe en los registros del GAD MANTA'; + } + } resolve(array); }).catch(function (error) { array['msg'] = error; @@ -162,6 +190,23 @@ async function ConsultaComprobantes(cedula, index){ } +async function ConsultaNoticias(){ + return new Promise((resolve, reject) => { + var array = {'ok': false, 'data':[], 'msg':null}; + AxiosGET('consultarPublicaciones?boot=c', {}, 'sistemasic').then(function (result) { + console.log(result) + if(result['data'].length > 0){ + array['ok'] = true; array['data'] = result['data']; array['msg'] = 'Consulta exitosa'; + }else{ array['msg'] = 'No se encontró resultados'; } + resolve(array); + }).catch(function (error) { + array['msg'] = error; + resolve(array); + }); + }); +} + + async function OptInfoBot(key_inf){ return new Promise((resolve, reject) => { var heders = {'info_key': key_inf}; @@ -178,6 +223,46 @@ async function OptInfoBot(key_inf){ }); } +//Consulta mis tramites solicitados +async function GetMisTramites(key_cedula){ + return new Promise((resolve, reject) => { + var heders = {}; + var array = {'ok': false, 'data':[], 'msg':null}; + AxiosGET('tramites/web_api_consulta_tramite?tipo=1&code=true&valor='+key_cedula, heders).then(function (result) { + if(result['estado']){ + array['ok'] = true; array['data'] = result['data']; array['msg'] = result['msg']; + }else{ array['msg'] = result['msg'] } + resolve(array); + }).catch(function (error) { + array['msg'] = error; + resolve(array); + }).finally(function (find) { + array['msg'] = 'Lo siento, no logre procesar su solicitúd'; + resolve(array); + }); + }); +} + +//Consulta historial de tramites solicitados +async function GetHistorialTramites(key_cedula, index){ + return new Promise((resolve, reject) => { + var heders = {}; + var array = {'ok': false, 'data':[], 'tramite':null, 'msg':null}; + AxiosGET('tramites/resolver_index_tramite?tipo=1&code=true&index='+index+'&valor='+key_cedula, heders).then(function (result) { + if(result['estado']){ + array['ok'] = true; array['data'] = result['data']; array['msg'] = result['msg']; array['tramite'] = result['tramite']; + }else{ array['msg'] = result['msg'] } + resolve(array); + }).catch(function (error) { + array['msg'] = error; + resolve(array); + }).finally(function (find) { + array['msg'] = 'Lo siento, no logre procesar su solicitúd'; + resolve(array); + }); + }); +} + @@ -198,5 +283,8 @@ module.exports = { "ValidarComprobante": ValidarComprobante, "ConsultaComprobantes": ConsultaComprobantes, "OptInfoBot": OptInfoBot, + "ConsultaNoticias": ConsultaNoticias, + "GetMisTramites": GetMisTramites, + "GetHistorialTramites": GetHistorialTramites, "ConsultaClaves": ConsultaClaves } \ No newline at end of file diff --git a/index.js b/index.js index 9c6467d..0c25719 100644 --- a/index.js +++ b/index.js @@ -11,12 +11,13 @@ app.get("/", function (req, res) { app.post("/webhook", express.json(), function (req, res) { const agent = new WebhookClient({ request: req, response: res }); - // // console.log("Dialogflow Request headers: " + JSON.stringify(req)); + // console.log("Dialogflow Request headers: " + JSON.stringify(req)); // console.log("Dialogflow Request headers: " + JSON.stringify(req.headers)); // console.log("Dialogflow Request body: " + JSON.stringify(req.body)); - // // console.log("Dialogflow Request body: " + JSON.stringify(agent)); + // console.log("Dialogflow Request body: " + JSON.stringify(agent)); -//Inicio + + /***** Contexto de inicio *****/ function DefauldAgent(){ return metodos.Fun_DefauldAgent(agent, req, res); } @@ -29,10 +30,17 @@ app.post("/webhook", express.json(), function (req, res) { function ListarMenu(){ return metodos.Fun_ListarMenu(agent, req, res); } - - - -//Cerrar session + function FuncGracias(){ + return metodos.Fun_ListarMenu(agent, req, res, 1); + } + function QueHacesFunction(){ + return metodos.Fun_QueHacesFunction(agent, req, res); + } + function ComoEstasFunction(){ + return metodos.Fun_QueHacesFunction(agent, req, res,1); + } + + /***** Cerrar session *****/ function SiCerrarSesionAgent(){ return metodos.Fun_CerrarSesionAgent(agent, req, res, 1); } @@ -43,9 +51,7 @@ app.post("/webhook", express.json(), function (req, res) { return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res); } - - - //Consultar Claves Catastrales + /***** Consultar Claves Catastrales *****/ function ConfirmarConsultarClavesCatastrales(){ return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); } @@ -55,6 +61,12 @@ app.post("/webhook", express.json(), function (req, res) { function ConsultarOtrasClavesCatastrales(){ return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 1); } + function ConsultarPorClavesCatastrales(){ + return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 3); + } + function ConsultarPorClavesCatastrales2(){ + return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 4); + } function ConsultarOtrasClavesCatastrales2(){ return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 2); } @@ -62,15 +74,12 @@ app.post("/webhook", express.json(), function (req, res) { return metodos.Fun_ConsultarCCAtras(agent, req, res); } - - //Prueba + /***** Prueba *****/ function prueba(){ return metodos.Fun_pruebas(agent, req, res); } - - - //Validar documentos + /***** Validar documentos *****/ function ValidarDocumentos(){ return metodos.Fun_ValidarDocumentos(agent, req, res, 1); } @@ -78,8 +87,7 @@ app.post("/webhook", express.json(), function (req, res) { return metodos.Fun_ValidarDocumentos(agent, req, res, 2); } - - //Mis comprobantes + /***** Mis comprobantes *****/ function MisComprobantesPago(){ return metodos.Func_MisComprobantesPago(agent, req, res, 1); } @@ -94,62 +102,90 @@ app.post("/webhook", express.json(), function (req, res) { } - //Info Tramites - let tramer = ['solvencia_key']; + //*******Mis tramites *******/ + function MistramitesFallback(){ + return metodos.Func_HistorialTramite(agent, req, res, 1); + } + function MistramitesPrevious(){ + return metodos.Func_HistorialTramite(agent, req, res, 2); + } + function Mistramites(){ + return metodos.Func_MisTramites(agent, req, res); + } + function HistorialTramite(){ + return metodos.Func_HistorialTramite(agent, req, res); + } + + /***** Info Tramites *****/ + let tramer = ['Certificado_de_solvencia', 'Certificado_de_no_posees_bienes']; function FallbackInfoTramites(){ return metodos.Func_FallbackInfoTramites(agent, req, res); } + function AtrasInfoTramites(){ + return metodos.Func_InformacionTramites(agent, req, res, 0); + } function InformacionTramitesSolv(){ return metodos.Func_InformacionTramites(agent, req, res, tramer[0]); } - function AtrasInfoTramites(){ - return metodos.Func_InformacionTramites(agent, req, res, 0); + function InformacionTramitesNoBienes(){ + return metodos.Func_InformacionTramites(agent, req, res, tramer[1]); } let intentMap = new Map(); - //Menu 1 - principal + /***** 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); + intentMap.set('0 - No', FuncGracias); + intentMap.set('Contexto 1 - Que hacer', ListarMenu); + intentMap.set('Contexto 1 - Que haces', QueHacesFunction); + intentMap.set('Contexto 1 - Como estas', ComoEstasFunction); - //Menu 1 - Claves catastrales - // intentMap.set('M1-Consulta-Predios', ConsultaPredios); + /***** Menu 1 - Claves catastrales *****/ intentMap.set('0 - Bienvenida - Consultar-Predios', ConfirmarConsultarClavesCatastrales); intentMap.set('0 - Bienvenida - Consultar-Predios - Mis predios', ConsultarClavesCatastrales); + intentMap.set('0 - Bienvenida - Consultar-Predios - Por catastral', ConsultarPorClavesCatastrales); + intentMap.set('0 - Bienvenida - Consultar-Predios - Por catastral - Clavecatstral', ConsultarPorClavesCatastrales2); 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); + /***** 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 Documentosany + /***** Menu 1 - Validar Documentos *****/ intentMap.set('0 - Bienvenida - Validar Documentos', ValidarDocumentos); intentMap.set('0 - Bienvenida - Validar Documentos - codigo', ValidarCodigobarras); - // Menu 1 - Mis comprobantes + /***** 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 - Informacion de tramites + + //******** 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 - Informacion de tramites *****/ intentMap.set('0 - Bienvenida - Inf Tram - fallback', FallbackInfoTramites); intentMap.set('0 - Bienvenida - Inf Tram - Menu Principal', AtrasInfoTramites); intentMap.set('0 - Bienvenida - Inf Tram', FallbackInfoTramites); intentMap.set('0 - Bienvenida - Inf Tram - Solvencia', InformacionTramitesSolv); + intentMap.set('0 - Bienvenida - Inf Tram - NoBienes', InformacionTramitesNoBienes); - - + /************ PRUEBAS ************/ intentMap.set('prueba', prueba); agent.handleRequest(intentMap); diff --git a/interacciones.js b/interacciones.js index cd542dd..d15a29d 100644 --- a/interacciones.js +++ b/interacciones.js @@ -1,32 +1,45 @@ - -function mensaje(name, username = null) { +function mensaje(name, username = null, massager = null) { var jsom_interaciones = ['Es un placer poder ayudarle.....']; + var menu_context = "\n1. Consultar predios"+ + "\n2. Validar documentos digitales"+ + "\n3. Mis comprobantes de pago"+ + "\n4. Mis trámites"+ + "\n5. Información sobre trámites"+ + "\n0. Cerrar sesión"+ + "\n\n -Ingrese el número de la opción que desee."; switch (name) { case 'sol_cedula': jsom_interaciones = [ - 'Antes de continuar es necesario que nos ayúde con su número de cédula o RUC 🙏', - 'Ayude con su número de cédula o RUC para poder continuar 🙏', - 'Estoy para ayudarle pero primero necesito su número de cédula o RUC 🙏' + 'Para brindarle un mejor servicio es necesario que ingrese su número de cédula o RUC 🤓', + 'Antes de continuar es necesario que ingrese su número de cédula o RUC 🤓', + 'Ayude con su número de cédula o RUC para poder continuar 🤓', + 'Necesito su número de cédula o RUC para brindarle un mejor servicio 🤓' ]; 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)' + 'Ayúdeme con el número de cédula del propietario(a)' + ]; + break; + case 'sol_data_clave_catastral': + jsom_interaciones = [ + 'Por favor ingrese con el número de la clave catastral', + 'Ayúdeme con la clave catastral del propietario(a).' ]; break; case 'sol_data_codigo': jsom_interaciones = [ 'Por favor ingrese el código de barras del documento', - 'Ayudeme con el número el código de barras del documento' + 'Ayúdeme con el número el código de barras del documento' ]; 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?' + '¿Hay algo mas en lo que le pueda ayudar?\n'+menu_context, + '¿Que mas puedo hacer por usted?\n'+menu_context, + '¿Puedo ayudarle en algo mas?\n'+menu_context ]; break; case 'recuerde': @@ -40,52 +53,55 @@ function mensaje(name, username = null) { case 'bienvenida': if(username){ jsom_interaciones = [ - 'Hola, '+username+' 👋', - 'Hola, '+username+' soy MantaBot su asistente virtual 👋🥰', + 'Hola '+username, + 'Hola '+username+', soy MantaBot su asistente virtual 👋🥰', 'Qué tal '+username+' 🙂', - 'Hola '+username+' soy MantaBot 😎', + mostrarSaludo()+' '+username+' 🙂', + 'Hola '+username+', soy MantaBot 😎', + mostrarSaludo()+ ' soy MantaBot 😎', '¿Qué tal? '+username+' 😎' ]; }else{ jsom_interaciones = [ 'Soy MantaBot su asistente virtual 🤖', - 'Hola, soy MantaBot su asistente virtual 🤖', - 'Qué tal, soy MantaBot su asistente virtual 🤖', + mostrarSaludo()+', soy MantaBot su asistente virtual 🤖', 'Hola soy MantaBot, su asistente virtual 🤖', '¿Qué tal? soy MantaBot su asistente virtual 🤖' ]; } break; case 'menu_1': - // var menu = "\n1. Consultar predios \n2. Validar documentos digitales \n0. Cerrar sessión"; - var menu = "\n1. Consultar predios \n2. Validar documentos digitales \n3. Mis comprobantes de pago\n"+ - "4. Información sobre trámites\n0. Cerrar sessión\n"; jsom_interaciones = [ - 'Recuerde que puedo ayudarle en cosas como:\n' + menu, - 'Puedo ayudarle ahora con:\n' + menu, - 'Podemos continuar con:\n' + menu, - 'Puedo ofrecerle:\n' + menu + 'Hola, le invito a conocer nuestro *menú de opciones:*' + menu_context ]; break; - case 'consulta_clave': - var menu = "\n1. Consultar mis predios \n2. Consultar otros predios \n0. Atras"; + case 'menu_dirigido': jsom_interaciones = [ - '¿Que acción desea realizar?:\n' + menu, + 'Hola '+username+', que tal si revisamos el *menú de opciones:*' + menu_context + ]; + break; + case 'menu_hueso': + jsom_interaciones = [menu_context]; + break; + case 'consulta_clave': + var menu = "\n1. Consultar mis predios \n2. Consultar por número de cédula \n3. Consultar por clave catastral \n0. Atras"; + jsom_interaciones = [ + '¿Que acción desea realizar?\n' + menu + "\n\n -Ingrese el número de la opción que desee.", ]; break; case 'info_tramites': - var menu = "1. Certificado de solvencia \n0. Ir al menu anterior"; + var menu = "1. Certificado de solvencia \n2. Certificado de no poseer bienes \n0. Ir al menú anterior"; jsom_interaciones = [ - 'Envíe el número de la opción que desee:\n\n' + menu, + 'Envíe el número de la opción que desee:\n\n' + menu +"\n\n -Ingrese el número de la opción que desee.", ]; break; case 'defauld': var username = username != null ? username : ''; jsom_interaciones = [ - 'Disculpa '+username+' no logré entenderte 😔 Aún estoy aprendiendo. 🤓 ', - 'Lo siento '+username+' 💔 no comprendí su pregunta. Aún estoy aprendiendo. 🤓', - 'Mil disculpas '+username+', 😓 no logre entender su pregunta. Aún estoy aprendiendo. 🤓', - 'Aprendo cada día, pero no logre entender su pregunta '+username+' 🤓' + 'Disculpa '+username+' no logré entender su pregunta😔 \nAún estoy aprendiendo🎓📚🤓\n\nQue tal si revisamos el *menú de opciones:*' + menu_context, + 'Lo siento '+username+' 💔 no comprendí su pregunta \nAún estoy aprendiendo🎓📚🤓\n\nQue tal si revisamos el *menú de opciones:*' + menu_context, + 'Mil disculpas '+username+' 😓 no logre deducir su pregunta \nAún estoy aprendiendo 🎓📚🤓\n\nLe mostrare el *menú de opciones:*' + menu_context, + username+' aprendo cada día mas 🎓📚🤓 pero no logre entender su pregunta 😓\n\nLe mostrare el *menú de opciones:*' + menu_context, ]; break; case 'afirmacion': @@ -96,10 +112,84 @@ function mensaje(name, username = null) { 'Perfecto...👌', ]; break; + case 'bienvenida_su': + jsom_interaciones = [ + mostrarSaludo()+' '+username+ + ', bienvenido(a) a los servicios de asistencia virtual del GAD MANTA 🏣\n'+ + 'Soy *MANTABOT*🤖 y seré su asitente virtual.\n\n'+ + 'Antes de empezar le invito a descargar nuestra aplicación movil oficial *MANTAPP* dando clic en:\nhttps://portalciudadano.manta.gob.ec/c?mantapp'+ + '\n\nA continuación, le presento nuestro *menú de opciones:*'+menu_context + ]; + break; + case 'despedida': + jsom_interaciones = [ + 'Esta bíen que tenga '+mostrarSaludo(1)+', espero vuelva pronto...👋\n'+ + 'Si desea volver a iniciar sesión por favor ingrese su número'+ + ' de cédula o RUC 🤓' + ]; + break; + case 'despedida_alt': + jsom_interaciones = [ + 'Esta bíen '+username+', fue un placer ayudarle. 😬👏\nQue tenga '+mostrarSaludo(1)+'. 😇', + 'Esta bíen '+username+', es un gusto poder ayudarle, 😬👏 por favor vuelva pronto 👋😇', + 'Okey '+username+', estoy para ayudarle. 😬👏\nQue tenga '+mostrarSaludo(1)+'. 😇', + ]; + break; + case 'haceres_1': + jsom_interaciones = [ + 'Estaba revisando Facebook y adivina?📱🤭😬 \n\n'+ + 'Me pareció muy interesante una publicación de Municipio de Manta titulada:\n'+username + ]; + break; + case 'haceres_2': + var cont = 'revisando Facebook y adivina?📱🤭😬 \n\n'+ + 'Me pareció muy interesante una publicación de Municipio de Manta titulada:\n'+massager; + jsom_interaciones = [ + 'Estoy super bien ' + username + ', gracias por preguntar.\nJusto ahora estaba '+cont, + username + ' estoy de maravilla, gracias por preguntar.\nPrecisamente ahora estaba '+cont, + username + ' es '+mostrarSaludo(1)+' asi que estoy super feliz, gracias por preguntar.\nHace un rato estaba '+cont, + ]; + case 'mis_cer92': + jsom_interaciones = [' - Ingrese el #número indicado al inicio del nombre del trámite \n- Ingrese 0 para volver al menú principal']; + break; + } return jsom_interaciones[Math.floor(Math.random() * jsom_interaciones.length)] } +function mostrarSaludo(vari = null){ + fecha = new Date(); + hora = fecha.getHours(); + if(hora >= 0 && hora < 12){ + texto = "Buenos días"; + if(vari == 1){ + texto = 'un buen día'; + } + if(vari == 2){ + texto = 'día'; + } + } + if(hora >= 12 && hora < 18){ + texto = "Buenas tardes"; + if(vari == 1){ + texto = 'una buena tarde'; + } + if(vari == 2){ + texto = 'tarde'; + } + } + if(hora >= 18 && hora < 24){ + texto = "Buenas noches"; + if(vari == 1){ + texto = 'una buena noche'; + } + if(vari == 2){ + texto = 'noche'; + } + } + return texto; + } + diff --git a/metodos.js b/metodos.js index 5e64803..8449a71 100644 --- a/metodos.js +++ b/metodos.js @@ -1,158 +1,247 @@ var funcion = require("./funtions.js"); var dialog = require("./interacciones.js"); -const {Card, Image} = require('dialogflow-fulfillment'); +const { + Card, + Image +} = require('dialogflow-fulfillment'); -async function Fun_DefauldAgent(agent, req, res){ +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{ + if (data_context) { + agent.context.set({ + name: '0-Bienvenida-followup', + lifespan: 1 + }); + return agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name))); + } 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.......'); + +async function Fun_SolicitarDatosAgent(agent, req, res) { + try { 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')); + let data_context = await ValidateDataUserContext(agent); + if (data_context) { + var megg = null; + 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'] + } + }); + megg = dialog.mensaje('bienvenida_su', funcion.conver_name(sesion['data']['name'], 3)); + } else { + console.log('demoda') + 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, megg); + } else { + return Fun_WelcomeAgent(agent, req, res); } + } catch (error) { + return ResolveDefauld(agent); + } +} + +async function Fun_WelcomeAgent(agent, req, res, mensage = null) { + try { + 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 + }); + var rem_mens = dialog.mensaje('menu_dirigido', funcion.conver_name(data_context.name)); + if(mensage != null){ + rem_mens = mensage; + } + return agent.add(rem_mens); + } 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 + }); + return agent.add(dialog.mensaje('bienvenida')+'\n'+dialog.mensaje('sol_cedula')); + } + } + } catch (error) { + return ResolveDefauld(agent); } } -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}); +function ValidateDataUserContext(agent) { + try { + 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); - } - }else{ - agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); + } + } catch (error) { + console.log(error); + 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); - } - }); + }); + } catch (error) { + return ResolveDefauld(agent); + } } -function ExistParamtContext(agent, pamameter){ +function ExistParamtContext(agent, pamameter) { var data = null; agent.contexts.forEach(element => { - if(element.name == pamameter){ - data = 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']); +async function Fun_CerrarSesionAgent(agent, req, res, accion) { + try { + 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.context.set({ + name: '0-Bienvenida-followup', + lifespan: 1 + }); + agent.context.set({ + name: 'sol_datos_usuario', + lifespan: 1 + }); + agent.context.set({ + name: 'data_user_context', + lifespan: 0, + parameters: {} + }); + return agent.add(dialog.mensaje('despedida')); + } 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')); + if (accion == 0) { + agent.context.set({ + name: '0-Bienvenida-followup', + lifespan: 1 + }); + agent.add(dialog.mensaje('afirmacion')); + return agent.add(dialog.mensaje('menu_1')); + } + } catch (error) { + return ResolveDefauld(agent); } } -async function Fun_ConfirmarCerrarSesionAgent(agent, req, res){ +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{ + if (data_context) { + 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\n\n -Ingrese el número de la opción que desee.'); + } else { return Fun_WelcomeAgent(agent, req, res); } } -async function Func_InformacionTramites(agent, req, res, key_example){ - console.log(key_example); +async function Func_InformacionTramites(agent, req, res, key_example) { try { let data_context = await ValidateDataUserContext(agent); - if(data_context){ - if(key_example == 0){ + 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){ + let legion = await funcion.OptInfoBot(key_example); + console.log(legion); + if (legion['ok'] == true) { + var msger = '*' + legion['data']['data_key'] + '*\n\n'; + var example = legion['data']['data']; + if (example.length == 0) { return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } example.forEach(element => { @@ -161,262 +250,448 @@ async function Func_InformacionTramites(agent, req, res, key_example){ 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']); + } else { + agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } - }else{ + } else { return Fun_WelcomeAgent(agent, req, res); } } catch (error) { - console-log(error); - return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + return ResolveDefauld(agent); } } -async function Fun_pruebas(agent, req, res){ +//Consultar todos mis trámites solicitados en Portal ciudadano +async function Func_MisTramites(agent, req, res, key_example = null) { 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){ + if (data_context) { + if (key_example == 0) { + return Fun_ConsultarCCAtras(agent, req, res); + } + let legion = await funcion.GetMisTramites(data_context.cedula); + if (legion['ok'] == true) { + var msger = '*Listado de trámites solicitados*\n\n'; + var example = legion['data']; + if (example.length == 0) { + agent.add('Lo siento, no encontré ningún trámite solicitado a su nombre.'); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } - example.forEach(element => { - msger = msger + element + '\n'; + example.forEach((element, index) => { + msger = msger+'*#'+(index+1) +'* - ' + element['nombresolicitud']+ + '\nFecha de solicitúd: '+element['fecha_solicitud']; + + if(element['state_documento'] != null ){ + msger = msger+'\nFecha de vencimiento: '+element['fecha_vencimiento'] + +'\nEstado: '+element['state_documento']; + }else{ + msger = msger+'\nEstado: '+element['estado']; + if(element['url2'] != null){ + msger = msger+'\nFecha de vencimiento: '+element['fecha_vencimiento']+ + '\nVer documento: '+element['url2']; + } + } + msger = msger +'\n\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']); + agent.context.set({ + name: '0-Bienvenida-MisTramites-followup', + lifespan: 1 + }); + return agent.add(dialog.mensaje('mis_cer92')); + } else { + agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } - - }else{ + } else { return Fun_WelcomeAgent(agent, req, res); } } catch (error) { - console-log(error); - return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + return ResolveDefauld(agent); } } - - -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); +//Mis tramites - Defauld +//Historial de mis traites +async function Func_HistorialTramite(agent, req, res, key_example = null) { + try { + let data_context = await ValidateDataUserContext(agent); + if (data_context) { + if(key_example == 2){ + return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } - } - }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(key_example == 1){ + agent.context.set({ name: '0-Bienvenida-MisTramites-followup', lifespan: 1 }); + return agent.add(dialog.mensaje('mis_cer92')); + } + var Contx = agent.context.get('tramite_cer_historial'); + if (Contx == null || Contx == NaN || Contx == undefined) { + Contx = ExistParamtContext(agent, 'tramite_cer_historial'); + } + if (Contx != null && Contx != NaN && Contx != undefined) { + if (Contx.parameters.numero_tramite != null && Contx.parameters.numero_tramite != "") { + let legion = await funcion.GetHistorialTramites(data_context.cedula, Contx.parameters.numero_tramite); + if (legion['ok'] == true) { + var msger = ''; + if(legion['tramite'] != undefined){ + msger = msger + '*HISTORIAL - '+legion['tramite']+'*'; + var example = legion['data'];4 + if (example.length == 0) { + agent.add(msger +'\nLo siento, no encontré ningúna información del trámite solicitado.'); + return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + } + example.forEach((element, index) => { + msger = msger+'\n\nFecha: '+element['registro']+ + '\nEstado: '+ element['estado']; + if(element['observacion']){ + msger = msger+'\nObservación: '+element['observacion']; + } + }); + }else{ + agent.add(legion['msg']); + return Func_HistorialTramite(agent, req, res, 1); } - 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)); } - + agent.add(msger); + return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } - }else{ - return Fun_ListarMenu(agent, req, res); } + agent.context.set({ name: '0-Bienvenida-MisTramites-followup', lifespan: 1 }); + return agent.add(dialog.mensaje('mis_cer92')); + } else { + return Fun_WelcomeAgent(agent, req, res); } - }else{ + } catch (error) { + return ResolveDefauld(agent); + } +} + + + +async function Fun_QueHacesFunction(agent, req, res, vari = null) { + try { + let data_context = await ValidateDataUserContext(agent); + if (data_context) { + agent.context.set({ + name: '0-Bienvenida-followup', + lifespan: 1 + }); + let legion = await funcion.ConsultaNoticias(); + if (legion['ok'] == true) { + var szar = Math.floor(Math.random() * legion['data'].length); + var mesge = dialog.mensaje('haceres_1', '*'+legion['data'][szar]['titulo']+'*\nQue tal si revisas un poco: 🧐🙃\n'+legion['data'][szar]['link_facebook']); + if(vari == 1){ + mesge = dialog.mensaje('haceres_2', funcion.conver_name(data_context.name), '*'+legion['data'][szar]['titulo']+'*\nQue tal si revisas un poco:🧐🙃\n'+legion['data'][szar]['link_facebook']); + } + return agent.add(mesge); + }else{ + return ResolveDefauld(agent); + } + } else { + return Fun_WelcomeAgent(agent, req, res); + } + } catch (error) { + return ResolveDefauld(agent); + } +} + +async function Fun_pruebas(agent, req, res) { + + return agent.add('hola como estras'); + try { + return Fun_QueHacesFunction(agent, req, req, 1); + } catch (error) { + return ResolveDefauld(agent); + } +} + + + +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); } } -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'); +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); + } } -function Func_FallbackInfoTramites(agent, req, res){ - agent.context.set({name:'0-Bienvenida-InfTram-followup', lifespan: 1 }); + +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: '0-Bienvenida-followup', + lifespan: 1 + }); + agent.context.set({ + name: 'inicial_context', + lifespan: 1 + }); + return agent.add(dialog.mensaje('retorno_inicio')); +} + +async function Fun_ListarMenu(agent, req, res, inva = null) { + try { + let data_context = await ValidateDataUserContext(agent); + if (data_context) { + console.log(data_context); + if(inva == 1){ + return agent.add(dialog.mensaje('despedida_alt', funcion.conver_name(data_context.name))); + } + agent.context.set({ + name: '0-Bienvenida-followup', + lifespan: 1 + }); + return agent.add(dialog.mensaje('menu_1')); + } else { + return Fun_WelcomeAgent(agent, req, res); + } + } catch (error) { + return ResolveDefauld(agent); + } +} + +async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo) { + try { + 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_ConfirmarConsultarClavesCatastrales(agent, req, res); + } + }else if(tipo == 3){ + return agent.add(dialog.mensaje('sol_data_clave_catastral')); + }else if(tipo == 4){ + console.log('todo bien'); + var Contx = agent.context.get('data_clave'); + if (Contx == null || Contx == NaN || Contx == undefined) { + Contx = ExistParamtContext(agent, 'data_clave'); + } + if (Contx != null && Contx != NaN && Contx != undefined) { + if (Contx.parameters.clave_catast != null && Contx.parameters.clave_catast != "") { + return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.clave_catast, 1); + }else{ + return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); + } + } else { + return Fun_ConfirmarConsultarClavesCatastrales(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); + 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('Ver documento:\n' + legion['data']['url2'][0]); + } + 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); + } + } catch (error) { + return ResolveDefauld(agent); + } +} + + +function ResolveDefauld(agent) { + agent.context.set({ + name: '0-Bienvenida-followup', + lifespan: 1 + }); + return agent.add('No logre resolver su petición 😢 \n' + + '¿Que tal si lo volvemos a intentar? \n' + + dialog.mensaje('menu_hueso')); +} + + + +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 \n\n -Ingrese el número de la opción que desee.'); +} + +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){ +async function Func_MisComprobantesPago(agent, req, res, lery) { try { let data_context = await ValidateDataUserContext(agent); - if(data_context){ - if(lery == 3){ + 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){ + if (data_context != null && data_context != "") { + let legion = await funcion.ConsultaComprobantes(data_context.cedula, lery); + console.log(legion); + 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{ + 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){ + if (lery == 1) { return Func_FallbackComprobantes(agent, req, res); - }else{ + } else { return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } - }else{ - agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); + } else { + agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); } } - }else{ + } else { return Fun_WelcomeAgent(agent, req, res); } } catch (error) { - console-log(error); - return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + return ResolveDefauld(agent); } } -async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){ +async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null, nuevo = null) { try { let data_context = await ValidateDataUserContext(agent); - if(data_context){ - if(data_context != null && data_context != "" ){ - if(_cedula == null){ + 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){ + _cedula = _cedula.replace(/-/g, ""); + if (regex.test(_cedula) ) { + console.log('legion') + let legion = await funcion.ConsultaClaves(_cedula, nuevo); + console.log(legion) + if (legion['ok'] == true) { let coun = legion['data'].length; legion['data'].forEach((element, index) => { + console.log(element['valor']) 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 (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); + 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(element['text'] + '\n' + funcion.conver_capitalice(element['direccion']) + '\n' + rec); } }); - }else{ - agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); + } 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'); + } else { + if(nuevo == 1){ + agent.add('La clave catastral ingresada no es válida'); + }else{ + agent.add('El número de cédula ingresado no es válido'); + } return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); } } - }else{ + } else { return Fun_WelcomeAgent(agent, req, res); } } catch (error) { - console-log(error); - return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); + return ResolveDefauld(agent); } } @@ -438,5 +713,8 @@ module.exports = { "Func_MisComprobantesPago": Func_MisComprobantesPago, "Func_FallbackComprobantes": Func_FallbackComprobantes, "Func_FallbackInfoTramites": Func_FallbackInfoTramites, - "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales + "Fun_QueHacesFunction": Fun_QueHacesFunction, + "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales, + "Func_HistorialTramite": Func_HistorialTramite, + "Func_MisTramites": Func_MisTramites } \ No newline at end of file