This commit is contained in:
Victor Sanchez Sosa 2021-07-07 14:49:54 -05:00
parent 64b122df05
commit 9bbe3e5d2f
4 changed files with 850 additions and 358 deletions

View File

@ -1,5 +1,6 @@
const { error } = require('actions-on-google/dist/common'); const { error } = require('actions-on-google/dist/common');
const axios= require('axios'); const axios= require('axios');
const URLIC = 'https://sistemasic.manta.gob.ec/';
const URLPC = 'http://mantaentusmanos.test/'; const URLPC = 'http://mantaentusmanos.test/';
// const URLPC = 'https://portalciudadano.manta.gob.ec/'; // const URLPC = 'https://portalciudadano.manta.gob.ec/';
const { WebhookClient } = require("dialogflow-fulfillment"); const { WebhookClient } = require("dialogflow-fulfillment");
@ -12,12 +13,21 @@ function conver_utf8(data) {
return Buffer.from(data, 'base64').toString('ascii'); return Buffer.from(data, 'base64').toString('ascii');
} }
function conver_name(data) { function conver_name(data, recep = null) {
try { try {
var porciones = data.split(' '); var porciones = data.split(' ');
if(porciones.length >= 2 && porciones.length <= 4){ if(porciones.length >= 2 && porciones.length <= 4){
var cadena = new String(data); var cadena = new String(data);
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 = porciones[(porciones.length -2)]+ ' ' +porciones[(porciones.length -1)];
}
cadena = cadena.toLowerCase(); cadena = cadena.toLowerCase();
return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase()))); return cadena.replace(/\w\S*/g, (w) => (w.replace(/^\w/, (c) => c.toUpperCase())));
}else{ }else{
@ -43,16 +53,24 @@ function AxiosPOST(url, params){
resolve(response.data); resolve(response.data);
}).catch(function (error) { }).catch(function (error) {
resolve({'estado':false, 'data':[], 'msg':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){ function AxiosGET(url, params, nweurl = null){
console.log(URLPC+url); if(nweurl == 'sistemasic'){
url = URLIC + url;
}else{
url = URLPC + url;
}
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.get(URLPC+url, params).then(function (response) { axios.get(url, params).then(function (response) {
resolve(response.data); resolve(response.data);
}).catch(function (error) { }).catch(function (error) {
resolve({'estado':false, 'data':[], 'msg':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) => { return new Promise((resolve, reject) => {
var array = {'ok': false, 'data':[], 'msg':null}; 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){ if(result['ok'] && result['data_bot']['data'].length > 0){
array['ok'] = true; array['data'] = result['data_bot']['data']; array['msg'] = 'Consulta exitosa'; 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); resolve(array);
}).catch(function (error) { }).catch(function (error) {
array['msg'] = 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){ async function OptInfoBot(key_inf){
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
var heders = {'info_key': key_inf}; 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, "ValidarComprobante": ValidarComprobante,
"ConsultaComprobantes": ConsultaComprobantes, "ConsultaComprobantes": ConsultaComprobantes,
"OptInfoBot": OptInfoBot, "OptInfoBot": OptInfoBot,
"ConsultaNoticias": ConsultaNoticias,
"GetMisTramites": GetMisTramites,
"GetHistorialTramites": GetHistorialTramites,
"ConsultaClaves": ConsultaClaves "ConsultaClaves": ConsultaClaves
} }

View File

@ -11,12 +11,13 @@ app.get("/", function (req, res) {
app.post("/webhook", express.json(), function (req, res) { app.post("/webhook", express.json(), function (req, res) {
const agent = new WebhookClient({ request: req, response: 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 headers: " + JSON.stringify(req.headers));
// console.log("Dialogflow Request body: " + JSON.stringify(req.body)); // 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(){ function DefauldAgent(){
return metodos.Fun_DefauldAgent(agent, req, res); return metodos.Fun_DefauldAgent(agent, req, res);
} }
@ -29,10 +30,17 @@ app.post("/webhook", express.json(), function (req, res) {
function ListarMenu(){ function ListarMenu(){
return metodos.Fun_ListarMenu(agent, req, res); return metodos.Fun_ListarMenu(agent, req, res);
} }
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 *****/
//Cerrar session
function SiCerrarSesionAgent(){ function SiCerrarSesionAgent(){
return metodos.Fun_CerrarSesionAgent(agent, req, res, 1); 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); return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res);
} }
/***** Consultar Claves Catastrales *****/
//Consultar Claves Catastrales
function ConfirmarConsultarClavesCatastrales(){ function ConfirmarConsultarClavesCatastrales(){
return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
} }
@ -55,6 +61,12 @@ app.post("/webhook", express.json(), function (req, res) {
function ConsultarOtrasClavesCatastrales(){ function ConsultarOtrasClavesCatastrales(){
return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 1); 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(){ function ConsultarOtrasClavesCatastrales2(){
return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 2); 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); return metodos.Fun_ConsultarCCAtras(agent, req, res);
} }
/***** Prueba *****/
//Prueba
function prueba(){ function prueba(){
return metodos.Fun_pruebas(agent, req, res); return metodos.Fun_pruebas(agent, req, res);
} }
/***** Validar documentos *****/
//Validar documentos
function ValidarDocumentos(){ function ValidarDocumentos(){
return metodos.Fun_ValidarDocumentos(agent, req, res, 1); 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); return metodos.Fun_ValidarDocumentos(agent, req, res, 2);
} }
/***** Mis comprobantes *****/
//Mis comprobantes
function MisComprobantesPago(){ function MisComprobantesPago(){
return metodos.Func_MisComprobantesPago(agent, req, res, 1); return metodos.Func_MisComprobantesPago(agent, req, res, 1);
} }
@ -94,62 +102,90 @@ app.post("/webhook", express.json(), function (req, res) {
} }
//Info Tramites //*******Mis tramites *******/
let tramer = ['solvencia_key']; 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(){ function FallbackInfoTramites(){
return metodos.Func_FallbackInfoTramites(agent, req, res); return metodos.Func_FallbackInfoTramites(agent, req, res);
} }
function AtrasInfoTramites(){
return metodos.Func_InformacionTramites(agent, req, res, 0);
}
function InformacionTramitesSolv(){ function InformacionTramitesSolv(){
return metodos.Func_InformacionTramites(agent, req, res, tramer[0]); return metodos.Func_InformacionTramites(agent, req, res, tramer[0]);
} }
function AtrasInfoTramites(){ function InformacionTramitesNoBienes(){
return metodos.Func_InformacionTramites(agent, req, res, 0); return metodos.Func_InformacionTramites(agent, req, res, tramer[1]);
} }
let intentMap = new Map(); let intentMap = new Map();
//Menu 1 - principal /***** Menu 1 - principal *****/
intentMap.set('0 - Solicitar datos', SolicitarDatosAgent); intentMap.set('0 - Solicitar datos', SolicitarDatosAgent);
intentMap.set('0 - Bienvenida', WelcomeAgent); intentMap.set('0 - Bienvenida', WelcomeAgent);
intentMap.set('Default Fallback Intent', DefauldAgent); intentMap.set('Default Fallback Intent', DefauldAgent);
intentMap.set('0 - SI', ListarMenu); 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 /***** Menu 1 - Claves catastrales *****/
// intentMap.set('M1-Consulta-Predios', ConsultaPredios);
intentMap.set('0 - Bienvenida - Consultar-Predios', ConfirmarConsultarClavesCatastrales); intentMap.set('0 - Bienvenida - Consultar-Predios', ConfirmarConsultarClavesCatastrales);
intentMap.set('0 - Bienvenida - Consultar-Predios - Mis predios', ConsultarClavesCatastrales); 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', ConsultarOtrasClavesCatastrales);
intentMap.set('0 - Bienvenida - Consultar-Predios - Otros Predios - Cedula', ConsultarOtrasClavesCatastrales2); intentMap.set('0 - Bienvenida - Consultar-Predios - Otros Predios - Cedula', ConsultarOtrasClavesCatastrales2);
intentMap.set('0 - Bienvenida - Consultar-Predios - Atras', ConsultarCCAtras); intentMap.set('0 - Bienvenida - Consultar-Predios - Atras', ConsultarCCAtras);
intentMap.set('0 - Bienvenida - Consultar-Predios - fallback', ConfirmarConsultarClavesCatastrales); intentMap.set('0 - Bienvenida - Consultar-Predios - fallback', ConfirmarConsultarClavesCatastrales);
//Menu 1 - Cerrar sesion /***** Menu 1 - Cerrar sesion *****/
// intentMap.set('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion', ConfirmarCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion', ConfirmarCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion - SI', SiCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion - SI', SiCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion - NO', NoCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion - NO', NoCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion - fallback', ConfirmarCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion - fallback', ConfirmarCerrarSesionAgent);
/***** Menu 1 - Validar Documentos *****/
//Menu 1 - Validar Documentosany
intentMap.set('0 - Bienvenida - Validar Documentos', ValidarDocumentos); intentMap.set('0 - Bienvenida - Validar Documentos', ValidarDocumentos);
intentMap.set('0 - Bienvenida - Validar Documentos - codigo', ValidarCodigobarras); 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 - Mis comprobantes de pago', MisComprobantesPago);
intentMap.set('0 - Bienvenida - Ver todos los comprobantes', TodosMisComprobantesPago); 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 - Menu Principal', InicioMisComprobantesPago);
intentMap.set('0 - Bienvenida - Mis comprobantes de pago - fallback', FallbackComprobantes); 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 - fallback', FallbackInfoTramites);
intentMap.set('0 - Bienvenida - Inf Tram - Menu Principal', AtrasInfoTramites); intentMap.set('0 - Bienvenida - Inf Tram - Menu Principal', AtrasInfoTramites);
intentMap.set('0 - Bienvenida - Inf Tram', FallbackInfoTramites); intentMap.set('0 - Bienvenida - Inf Tram', FallbackInfoTramites);
intentMap.set('0 - Bienvenida - Inf Tram - Solvencia', InformacionTramitesSolv); intentMap.set('0 - Bienvenida - Inf Tram - Solvencia', InformacionTramitesSolv);
intentMap.set('0 - Bienvenida - Inf Tram - NoBienes', InformacionTramitesNoBienes);
/************ PRUEBAS ************/
intentMap.set('prueba', prueba); intentMap.set('prueba', prueba);
agent.handleRequest(intentMap); agent.handleRequest(intentMap);

View File

@ -1,32 +1,45 @@
function mensaje(name, username = null, massager = null) {
function mensaje(name, username = null) {
var jsom_interaciones = ['Es un placer poder ayudarle.....']; 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) { switch (name) {
case 'sol_cedula': case 'sol_cedula':
jsom_interaciones = [ jsom_interaciones = [
'Antes de continuar es necesario que nos ayúde con 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 🤓',
'Ayude con su número de cédula o RUC para poder continuar 🙏', 'Antes de continuar es necesario que ingrese su número de cédula o RUC 🤓',
'Estoy para ayudarle pero primero necesito 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; break;
case 'sol_data_cedula': case 'sol_data_cedula':
jsom_interaciones = [ jsom_interaciones = [
'Por favor ingrese el número de cédula del propietario(a)', '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; break;
case 'sol_data_codigo': case 'sol_data_codigo':
jsom_interaciones = [ jsom_interaciones = [
'Por favor ingrese el código de barras del documento', '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; break;
case 'retorno_inicio': case 'retorno_inicio':
jsom_interaciones = [ jsom_interaciones = [
'¿Hay algo mas en lo que le pueda ayudar?', '¿Hay algo mas en lo que le pueda ayudar?\n'+menu_context,
'¿Que mas puedo hacer por usted?', '¿Que mas puedo hacer por usted?\n'+menu_context,
'¿Puedo ayudarle en algo mas?' '¿Puedo ayudarle en algo mas?\n'+menu_context
]; ];
break; break;
case 'recuerde': case 'recuerde':
@ -40,52 +53,55 @@ function mensaje(name, username = null) {
case 'bienvenida': case 'bienvenida':
if(username){ if(username){
jsom_interaciones = [ jsom_interaciones = [
'Hola, '+username+' 👋', 'Hola '+username,
'Hola, '+username+' soy MantaBot su asistente virtual 👋🥰', 'Hola '+username+', soy MantaBot su asistente virtual 👋🥰',
'Qué tal '+username+' 🙂', 'Qué tal '+username+' 🙂',
'Hola '+username+' soy MantaBot 😎', mostrarSaludo()+' '+username+' 🙂',
'Hola '+username+', soy MantaBot 😎',
mostrarSaludo()+ ' soy MantaBot 😎',
'¿Qué tal? '+username+' 😎' '¿Qué tal? '+username+' 😎'
]; ];
}else{ }else{
jsom_interaciones = [ jsom_interaciones = [
'Soy MantaBot su asistente virtual 🤖', 'Soy MantaBot su asistente virtual 🤖',
'Hola, soy MantaBot su asistente virtual 🤖', mostrarSaludo()+', soy MantaBot su asistente virtual 🤖',
'Qué tal, soy MantaBot su asistente virtual 🤖',
'Hola soy MantaBot, su asistente virtual 🤖', 'Hola soy MantaBot, su asistente virtual 🤖',
'¿Qué tal? soy MantaBot su asistente virtual 🤖' '¿Qué tal? soy MantaBot su asistente virtual 🤖'
]; ];
} }
break; break;
case 'menu_1': 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 = [ jsom_interaciones = [
'Recuerde que puedo ayudarle en cosas como:\n' + menu, 'Hola, le invito a conocer nuestro *menú de opciones:*' + menu_context
'Puedo ayudarle ahora con:\n' + menu,
'Podemos continuar con:\n' + menu,
'Puedo ofrecerle:\n' + menu
]; ];
break; break;
case 'consulta_clave': case 'menu_dirigido':
var menu = "\n1. Consultar mis predios \n2. Consultar otros predios \n0. Atras";
jsom_interaciones = [ 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; break;
case 'info_tramites': 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 = [ 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; break;
case 'defauld': case 'defauld':
var username = username != null ? username : ''; var username = username != null ? username : '';
jsom_interaciones = [ jsom_interaciones = [
'Disculpa '+username+' no logré entenderte 😔 Aún estoy aprendiendo. 🤓 ', '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. Aún estoy aprendiendo. 🤓', '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 entender su pregunta. Aún estoy aprendiendo. 🤓', 'Mil disculpas '+username+' 😓 no logre deducir su pregunta \nAún estoy aprendiendo 🎓📚🤓\n\nLe mostrare el *menú de opciones:*' + menu_context,
'Aprendo cada día, pero no logre entender su pregunta '+username+' 🤓' username+' aprendo cada día mas 🎓📚🤓 pero no logre entender su pregunta 😓\n\nLe mostrare el *menú de opciones:*' + menu_context,
]; ];
break; break;
case 'afirmacion': case 'afirmacion':
@ -96,10 +112,84 @@ function mensaje(name, username = null) {
'Perfecto...👌', 'Perfecto...👌',
]; ];
break; 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)] 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;
}

View File

@ -1,158 +1,247 @@
var funcion = require("./funtions.js"); var funcion = require("./funtions.js");
var dialog = require("./interacciones.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); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.context.set({
agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) )); name: '0-Bienvenida-followup',
return agent.add(dialog.mensaje('menu_1')); lifespan: 1
}else{ });
return agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name)));
} else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_SolicitarDatosAgent(agent, req, res){ async function Fun_SolicitarDatosAgent(agent, req, res) {
try {
const sessionId = req.body.session.split("/").reverse()[0]; const sessionId = req.body.session.split("/").reverse()[0];
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
if(data_context != null && data_context != "" ){ var megg = null;
if (data_context != null && data_context != "") {
let sesion = await funcion.RegistrarSession(sessionId, data_context.cedula); let sesion = await funcion.RegistrarSession(sessionId, data_context.cedula);
if(sesion['ok'] == true && sesion['data']['name'] != null){ if (sesion['ok'] == true && sesion['data']['name'] != null) {
console.log('sesion registrada en la bd') 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'] } }); agent.context.set({
}else{ name: 'data_user_context',
agent.context.set({name:'data_user_context', lifespan: 0 }); lifespan: 5,
agent.context.set({name:'0-Bienvenida-followup', lifespan: 1 }); parameters: {
sesion['msg'] != null ? agent.add(sesion['msg'] ) : null; 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 agent.add(dialog.mensaje('sol_cedula'));
} }
} }
return Fun_WelcomeAgent(agent, req, res, megg);
} else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
}else{ }
return Fun_WelcomeAgent(agent, req, res); } catch (error) {
return ResolveDefauld(agent);
} }
} }
async function Fun_WelcomeAgent(agent, req, res){ async function Fun_WelcomeAgent(agent, req, res, mensage = null) {
try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
console.log('contexto existe........'); console.log('contexto existe........');
agent.add(dialog.mensaje('bienvenida', data_context.name != null ? funcion.conver_name(data_context.name) : data_context.cedula)); // 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}); agent.context.set({
return agent.add(dialog.mensaje('menu_1')); name: '0-Bienvenida-followup',
}else{ 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.......'); console.log('NO existe contexto.......');
const sessionId = req.body.session.split("/").reverse()[0]; const sessionId = req.body.session.split("/").reverse()[0];
let legion = await funcion.ValidarSession(sessionId); let legion = await funcion.ValidarSession(sessionId);
if(legion['ok'] == true && legion['data']['name'] != null){ if (legion['ok'] == true && legion['data']['name'] != null) {
console.log('sesion existe en la bd') console.log('sesion existe en la bd')
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.context.set({
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: legion['data']['cedula'], name: legion['data']['name'] } }); 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)); 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')); return agent.add(dialog.mensaje('menu_1'));
}else{ } else {
agent.context.set({name:'sol_datos_usuario', lifespan:1}); agent.context.set({
agent.add(dialog.mensaje('bienvenida')); name: 'sol_datos_usuario',
return agent.add(dialog.mensaje('sol_cedula')); lifespan: 1
});
return agent.add(dialog.mensaje('bienvenida')+'\n'+dialog.mensaje('sol_cedula'));
} }
} }
} catch (error) {
return ResolveDefauld(agent);
}
} }
function ValidateDataUserContext(agent){ function ValidateDataUserContext(agent) {
try {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
try{ try {
var Contx = null; var Contx = null;
Contx = agent.context.get('data_user_context'); Contx = agent.context.get('data_user_context');
if (Contx == null || Contx == NaN || Contx == undefined){ if (Contx == null || Contx == NaN || Contx == undefined) {
Contx = ExistParamtContext(agent,'data_user_context'); Contx = ExistParamtContext(agent, 'data_user_context');
} }
if (Contx != null && Contx != NaN && Contx != undefined){ if (Contx != null && Contx != NaN && Contx != undefined) {
if(Contx.parameters.cedula != null && Contx.parameters.cedula != "" ){ if (Contx.parameters.cedula != null && Contx.parameters.cedula != "") {
agent.context.set({name:'0-Bienvenida-followup', lifespan:0}); agent.context.set({
let _cedu = Contx.parameters.cedula; let _nam = Contx.parameters.name; name: '0-Bienvenida-followup',
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula:_cedu, name:_nam } }); lifespan: 0
resolve({ cedula:_cedu, name:_nam }); });
}else{ let _cedu = Contx.parameters.cedula;
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); 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); resolve(false);
} }
}else{ } else {
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.context.set({
name: '0-Bienvenida-followup',
lifespan: 1
});
resolve(false); resolve(false);
} }
}catch (error) { } catch (error) {
console.log(error); console.log(error);
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.context.set({
name: '0-Bienvenida-followup',
lifespan: 1
});
resolve(false); resolve(false);
} }
}); });
} catch (error) {
return ResolveDefauld(agent);
}
} }
function ExistParamtContext(agent, pamameter){ function ExistParamtContext(agent, pamameter) {
var data = null; var data = null;
agent.contexts.forEach(element => { agent.contexts.forEach(element => {
if(element.name == pamameter){ if (element.name == pamameter) {
data = element; data = element;
} }
}); });
return data; return data;
} }
async function Fun_CerrarSesionAgent(agent, req, res, accion){ async function Fun_CerrarSesionAgent(agent, req, res, accion) {
if(accion == 1){ try {
if (accion == 1) {
console.log('cerrando sesion...'); console.log('cerrando sesion...');
const sessionId = req.body.session.split("/").reverse()[0]; const sessionId = req.body.session.split("/").reverse()[0];
let legion = await funcion.CerrarSession(sessionId); let legion = await funcion.CerrarSession(sessionId);
if(legion['ok'] == true){ if (legion['ok'] == true) {
agent.add(legion['msg']); agent.context.set({
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); name: '0-Bienvenida-followup',
agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}}); lifespan: 1
agent.add(dialog.mensaje('bienvenida')); });
return agent.add(dialog.mensaje('sol_cedula')); agent.context.set({
}else{ 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']); return agent.add(legion['msg']);
} }
} }
if(accion == 0){ if (accion == 0) {
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); agent.context.set({
name: '0-Bienvenida-followup',
lifespan: 1
});
agent.add(dialog.mensaje('afirmacion')); agent.add(dialog.mensaje('afirmacion'));
return agent.add(dialog.mensaje('menu_1')); 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); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
// agent.context.set({name:'cerrar_sesion', lifespan:1}); agent.context.set({
agent.context.set({name:'0-Bienvenida-Cerrarsesion-followup', lifespan:1}); name: '0-Bienvenida-Cerrarsesion-followup',
return agent.add('¿Esta de acuerdo en cerrar la sesión? \n1. SI \n2. NO'); lifespan: 1
}else{ });
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); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Func_InformacionTramites(agent, req, res, key_example){ async function Func_InformacionTramites(agent, req, res, key_example) {
console.log(key_example);
try { try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
if(key_example == 0){ if (key_example == 0) {
return Fun_ConsultarCCAtras(agent, req, res); return Fun_ConsultarCCAtras(agent, req, res);
} }
let legion = await funcion.OptInfoBot(key_example); let legion = await funcion.OptInfoBot(key_example);
if(legion['ok'] == true){ console.log(legion);
console.log(1) if (legion['ok'] == true) {
console.log(1) var msger = '*' + legion['data']['data_key'] + '*\n\n';
console.log(1) var example = legion['data']['data'];
var msger = '*'+legion['data']['data_key']+'*\n\n'; if (example.length == 0) {
var example = legion['data']['data'].split('|');
if(example.length == 0){
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
example.forEach(element => { example.forEach(element => {
@ -161,262 +250,448 @@ async function Func_InformacionTramites(agent, req, res, key_example){
agent.add(msger); agent.add(msger);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}else{ } else {
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} catch (error) { } catch (error) {
console-log(error); return ResolveDefauld(agent);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} }
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 { try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
let legion = await funcion.OptInfoBot('solvencia_key'); if (key_example == 0) {
console.log(legion); return Fun_ConsultarCCAtras(agent, req, res);
if(legion['ok'] == true){ }
console.log(1) let legion = await funcion.GetMisTramites(data_context.cedula);
console.log(1) if (legion['ok'] == true) {
console.log(1) var msger = '*Listado de trámites solicitados*\n\n';
var msger = '*'+legion['data']['data_key']+'*\n\n'; var example = legion['data'];
var example = legion['data']['data'].split('|'); if (example.length == 0) {
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)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
example.forEach(element => { example.forEach((element, index) => {
msger = msger + element + '\n'; 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); agent.add(msger);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); agent.context.set({
name: '0-Bienvenida-MisTramites-followup',
}else{ lifespan: 1
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); });
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)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} else {
}else{
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} catch (error) { } catch (error) {
console-log(error); return ResolveDefauld(agent);
}
}
//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)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
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);
}
}
agent.add(msger);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}
agent.context.set({ name: '0-Bienvenida-MisTramites-followup', lifespan: 1 });
return agent.add(dialog.mensaje('mis_cer92'));
} else {
return Fun_WelcomeAgent(agent, req, res);
}
} catch (error) {
return ResolveDefauld(agent);
}
} }
async function Fun_ConsultarCCAtras(agent, req, res){ async function Fun_QueHacesFunction(agent, req, res, vari = null) {
try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); 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')); return agent.add(dialog.mensaje('menu_1'));
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_ConfirmarConsultarClavesCatastrales(agent, req, res){ async function Fun_ConfirmarConsultarClavesCatastrales(agent, req, res) {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
agent.context.set({name:'0-Bienvenida-Consultar-Predios-followup', lifespan:1}); agent.context.set({
name: '0-Bienvenida-Consultar-Predios-followup',
lifespan: 1
});
return agent.add(dialog.mensaje('consulta_clave')); return agent.add(dialog.mensaje('consulta_clave'));
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_ConsultaPredios(agent, req, res){ async function Fun_ConsultaPredios(agent, req, res) {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
agent.context.set({name:'nuevo_context', lifespan:1}); agent.context.set({
name: 'nuevo_context',
lifespan: 1
});
return agent.add(dialog.mensaje('consulta_clave')); return agent.add(dialog.mensaje('consulta_clave'));
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_RetornarAlinicio(agent, req, res,name){ async function Fun_RetornarAlinicio(agent, req, res, name) {
agent.context.set({name:'inicial_context', lifespan:1}); agent.context.set({
return agent.add(name +', '+dialog.mensaje('retorno_inicio')); 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){ async function Fun_ListarMenu(agent, req, res, inva = null) {
agent.context.set({name:'0-Bienvenida-followup', lifespan:1}); 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')); 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){ async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo) {
try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
if(tipo == 1){ if (tipo == 1) {
return agent.add(dialog.mensaje('sol_data_cedula')); return agent.add(dialog.mensaje('sol_data_cedula'));
}else if(tipo == 2){ } else if (tipo == 2) {
var Contx = agent.context.get('data_predios'); 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 != null && Contx != NaN && Contx != undefined){ Contx = ExistParamtContext(agent, 'data_predios');
if(Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "" ){
return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.cedula_otro);
} }
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{ }else{
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); 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{ }else{
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
}
} else {
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
}
}
} else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} catch (error) {
return ResolveDefauld(agent);
}
} }
async function Fun_ValidarDocumentos(agent, req, res, tipo){ async function Fun_ValidarDocumentos(agent, req, res, tipo) {
try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
if(tipo == 1){ if (tipo == 1) {
return agent.add(dialog.mensaje('sol_data_codigo')); return agent.add(dialog.mensaje('sol_data_codigo'));
}else if(tipo == 2){ } else if (tipo == 2) {
var Contx = agent.context.get('context_codigo_barras'); 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 != null && Contx != NaN && Contx != undefined){ Contx = ExistParamtContext(agent, 'context_codigo_barras');
if(Contx.parameters.codigo_barras != null && Contx.parameters.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()); let legion = await funcion.ValidarComprobante(Contx.parameters.codigo_barras.toUpperCase());
if(legion['ok'] == true){ if (legion['ok'] == true) {
var send = ''; var send = '';
legion['data']['msg'].forEach((element, index) => { legion['data']['msg'].forEach((element, index) => {
send = send + element + '\n'; send = send + element + '\n';
}); });
if(send != ''){ if (send != '') {
agent.add(send); agent.add(send);
} }
if(legion['data']['url2'][0] != undefined){ if (legion['data']['url2'][0] != undefined) {
agent.add(new Card({ agent.add('Ver documento:\n' + legion['data']['url2'][0]);
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)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}else{ } else {
agent.add(legion['msg']); agent.add(legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} }
}else{ } else {
return Fun_ListarMenu(agent, req, res); return Fun_ListarMenu(agent, req, res);
} }
} }
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} catch (error) {
return ResolveDefauld(agent);
}
} }
function Func_FallbackComprobantes(agent, req, res){ function ResolveDefauld(agent) {
agent.context.set({name:'0-Bienvenida-Miscomprobantesdepago-followup', lifespan: 1 }); agent.context.set({
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'); 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_FallbackInfoTramites(agent, req, res){
agent.context.set({name:'0-Bienvenida-InfTram-followup', lifespan: 1 });
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')); return agent.add(dialog.mensaje('info_tramites'));
} }
async function Func_MisComprobantesPago(agent, req, res, lery){ async function Func_MisComprobantesPago(agent, req, res, lery) {
try { try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
if(lery == 3){ if (lery == 3) {
return Fun_ConsultarCCAtras(agent, req, res); return Fun_ConsultarCCAtras(agent, req, res);
} }
if(data_context != null && data_context != "" ){ if (data_context != null && data_context != "") {
let legion = await funcion.ConsultaComprobantes(data_context.cedula, lery); let legion = await funcion.ConsultaComprobantes(data_context.cedula, lery);
if(legion['ok'] == true){ console.log(legion);
if (legion['ok'] == true) {
var msger = ''; var msger = '';
let coun = legion['data'].length; let coun = legion['data'].length;
if(lery == 1 && coun > 1){ if (lery == 1 && coun > 1) {
msger = coun == 1 ? '*ÚLTIMOS COMPROBANTES DE PAGO:*\n\n' : '*ÚLTIMOS '+coun+' COMPROBANTES DE PAGO:*\n\n'; msger = coun == 1 ? '*ÚLTIMOS COMPROBANTES DE PAGO:*\n\n' : '*ÚLTIMOS ' + coun + ' COMPROBANTES DE PAGO:*\n\n';
}else{ } else {
msger = '*TODOS LOS COMPROBANTES DE PAGO:*\n\n'; msger = '*TODOS LOS COMPROBANTES DE PAGO:*\n\n';
} }
legion['data'].forEach((element, index) => { legion['data'].forEach((element, index) => {
msger = msger + '' + element['rubro'] + '\nFecha: ' + element['fecha'] + '\nValor págado: *' + element['valor_pagado'] + '*\nVer documento: ' + element['url'] + '\n\n'; msger = msger + '' + element['rubro'] + '\nFecha: ' + element['fecha'] + '\nValor págado: *' + element['valor_pagado'] + '*\nVer documento: ' + element['url'] + '\n\n';
}); });
agent.add(msger); agent.add(msger);
if(lery == 1){ if (lery == 1) {
return Func_FallbackComprobantes(agent, req, res); return Func_FallbackComprobantes(agent, req, res);
}else{ } else {
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
}else{ } else {
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} }
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} catch (error) { } catch (error) {
console-log(error); return ResolveDefauld(agent);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} }
async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){ async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null, nuevo = null) {
try { try {
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if (data_context) {
if(data_context != null && data_context != "" ){ if (data_context != null && data_context != "") {
if(_cedula == null){ if (_cedula == null) {
_cedula = data_context.cedula; _cedula = data_context.cedula;
} }
const regex = /^[0-9]*$/; const regex = /^[0-9]*$/;
if(regex.test(_cedula)){ _cedula = _cedula.replace(/-/g, "");
let legion = await funcion.ConsultaClaves(_cedula); if (regex.test(_cedula) ) {
if(legion['ok'] == true){ console.log('legion')
let legion = await funcion.ConsultaClaves(_cedula, nuevo);
console.log(legion)
if (legion['ok'] == true) {
let coun = legion['data'].length; let coun = legion['data'].length;
legion['data'].forEach((element, index) => { legion['data'].forEach((element, index) => {
console.log(element['valor'])
var rec = element['valor']['boot']['anteriores']; var rec = element['valor']['boot']['anteriores'];
if(element['valor']['boot']['anteriores'] != 'Recaudación al día'){ if (element['valor']['boot']['anteriores'] != 'Recaudación al día') {
rec = rec + '\n' + element['valor']['boot']['actual'] + '\n' + element['valor']['boot']['total'] rec = rec + '\n' + element['valor']['boot']['actual'] + '\n' + element['valor']['boot']['total']
} }
if(index == (coun-1)){ if (index == (coun - 1)) {
agent.add(element['text'] + '\n' +element['direccion']+ '\n' + rec); agent.add(element['text'] + '\n' + element['direccion'] + '\n' + rec);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}else{ } else {
agent.add(element['text'] + '\n' +funcion.conver_capitalice(element['direccion'])+ '\n' +rec); agent.add(element['text'] + '\n' + funcion.conver_capitalice(element['direccion']) + '\n' + rec);
} }
}); });
}else{ } else {
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']); agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name)); return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} else {
if(nuevo == 1){
agent.add('La clave catastral ingresada no es válida');
}else{ }else{
agent.add('El número de cédula ingresado no es válido'); agent.add('El número de cédula ingresado no es válido');
}
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res); return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
} }
} }
}else{ } else {
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} catch (error) { } catch (error) {
console-log(error); return ResolveDefauld(agent);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
} }
} }
@ -438,5 +713,8 @@ module.exports = {
"Func_MisComprobantesPago": Func_MisComprobantesPago, "Func_MisComprobantesPago": Func_MisComprobantesPago,
"Func_FallbackComprobantes": Func_FallbackComprobantes, "Func_FallbackComprobantes": Func_FallbackComprobantes,
"Func_FallbackInfoTramites": Func_FallbackInfoTramites, "Func_FallbackInfoTramites": Func_FallbackInfoTramites,
"Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales "Fun_QueHacesFunction": Fun_QueHacesFunction,
"Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales,
"Func_HistorialTramite": Func_HistorialTramite,
"Func_MisTramites": Func_MisTramites
} }