This commit is contained in:
Victor Sanchez Sosa 2021-06-11 18:12:45 -05:00
parent 45cbb97fc2
commit 64b122df05
4 changed files with 286 additions and 17 deletions

View File

@ -1,7 +1,7 @@
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 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");
function conver_base64(data) { function conver_base64(data) {
@ -37,7 +37,6 @@ function conver_capitalice(data) {
} }
function AxiosPOST(url, params){ function AxiosPOST(url, params){
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.post(URLPC+url, params).then(function (response) { axios.post(URLPC+url, params).then(function (response) {
@ -48,6 +47,7 @@ function AxiosPOST(url, params){
}); });
} }
function AxiosGET(url, params){ function AxiosGET(url, params){
console.log(URLPC+url);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.get(URLPC+url, params).then(function (response) { axios.get(URLPC+url, params).then(function (response) {
resolve(response.data); resolve(response.data);
@ -106,6 +106,30 @@ async function RegistrarSession(session_id, cedula){
} }
async function ValidarComprobante(codigo){
return new Promise((resolve, reject) => {
var heders = {'codigo': codigo};
var array = {'ok': false, 'data':[], 'msg':null};
AxiosPOST('ws_validar_cod_barras', heders).then(function (result) {
let claves=Object.keys(result);
claves.forEach(element => {
if(element == 'api'){
if(result['api']['ok']){
array['ok'] = true; array['data'] = result['api']; array['msg'] = 'Busquera exitosa';
}else{ array['msg'] = result['api']['msg'] != undefined ? result['api']['msg'] : ['Documento no encontrado'];}
}else{
array['msg'] = ['Documento no encontrado'];
}
});
resolve(array);
}).catch(function (error) {
array['msg'] = error;
resolve(array);
});
});
}
async function ConsultaClaves(cedula){ async function ConsultaClaves(cedula){
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
var array = {'ok': false, 'data':[], 'msg':null}; var array = {'ok': false, 'data':[], 'msg':null};
@ -122,6 +146,39 @@ async function ConsultaClaves(cedula){
} }
async function ConsultaComprobantes(cedula, index){
return new Promise((resolve, reject) => {
var array = {'ok': false, 'data':[], 'msg':null};
AxiosGET('portalciudadano/serviciosdigitales/mis_pagos?index='+index+'&cedula='+cedula+'&keypass=U2lzdGVtYXNJQ1NlcnZpY2VfbXJj', {}).then(function (result) {
if(result['ok'] && result['data'].length > 0){
array['ok'] = true; array['data'] = result['data']; array['msg'] = 'Consulta exitosa';
}else{ array['msg'] = 'No se encontró comprobantes de pago a su nombre'; }
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};
var array = {'ok': false, 'data':[], 'msg':null};
AxiosPOST('api/InfoBootService', heders).then(function (result) {
if(result['ok']){
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);
});
});
}
@ -138,5 +195,8 @@ module.exports = {
"conver_name": conver_name, "conver_name": conver_name,
"CerrarSession": CerrarSession, "CerrarSession": CerrarSession,
"conver_capitalice": conver_capitalice, "conver_capitalice": conver_capitalice,
"ValidarComprobante": ValidarComprobante,
"ConsultaComprobantes": ConsultaComprobantes,
"OptInfoBot": OptInfoBot,
"ConsultaClaves": ConsultaClaves "ConsultaClaves": ConsultaClaves
} }

View File

@ -11,8 +11,10 @@ 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.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));
//Inicio //Inicio
function DefauldAgent(){ function DefauldAgent(){
@ -59,6 +61,12 @@ app.post("/webhook", express.json(), function (req, res) {
function ConsultarCCAtras(){ function ConsultarCCAtras(){
return metodos.Fun_ConsultarCCAtras(agent, req, res); return metodos.Fun_ConsultarCCAtras(agent, req, res);
} }
//Prueba
function prueba(){
return metodos.Fun_pruebas(agent, req, res);
}
@ -69,6 +77,34 @@ app.post("/webhook", express.json(), function (req, res) {
function ValidarCodigobarras(){ function ValidarCodigobarras(){
return metodos.Fun_ValidarDocumentos(agent, req, res, 2); return metodos.Fun_ValidarDocumentos(agent, req, res, 2);
} }
//Mis comprobantes
function MisComprobantesPago(){
return metodos.Func_MisComprobantesPago(agent, req, res, 1);
}
function TodosMisComprobantesPago(){
return metodos.Func_MisComprobantesPago(agent, req, res, 2);
}
function InicioMisComprobantesPago(){
return metodos.Func_MisComprobantesPago(agent, req, res, 3);
}
function FallbackComprobantes(){
return metodos.Func_FallbackComprobantes(agent, req, res);
}
//Info Tramites
let tramer = ['solvencia_key'];
function FallbackInfoTramites(){
return metodos.Func_FallbackInfoTramites(agent, req, res);
}
function InformacionTramitesSolv(){
return metodos.Func_InformacionTramites(agent, req, res, tramer[0]);
}
function AtrasInfoTramites(){
return metodos.Func_InformacionTramites(agent, req, res, 0);
}
let intentMap = new Map(); let intentMap = new Map();
@ -87,7 +123,7 @@ app.post("/webhook", express.json(), function (req, res) {
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('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion', ConfirmarCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion', ConfirmarCerrarSesionAgent);
@ -99,8 +135,23 @@ app.post("/webhook", express.json(), function (req, res) {
//Menu 1 - Validar Documentosany //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
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
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('prueba', prueba);
agent.handleRequest(intentMap); agent.handleRequest(intentMap);
}); });

View File

@ -57,7 +57,9 @@ function mensaje(name, username = null) {
} }
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 \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, 'Recuerde que puedo ayudarle en cosas como:\n' + menu,
'Puedo ayudarle ahora con:\n' + menu, 'Puedo ayudarle ahora con:\n' + menu,
@ -71,6 +73,12 @@ function mensaje(name, username = null) {
'¿Que acción desea realizar?:\n' + menu, '¿Que acción desea realizar?:\n' + menu,
]; ];
break; break;
case 'info_tramites':
var menu = "1. Certificado de solvencia \n0. Ir al menu anterior";
jsom_interaciones = [
'Envíe el número de la opción que desee:\n\n' + menu,
];
break;
case 'defauld': case 'defauld':
var username = username != null ? username : ''; var username = username != null ? username : '';
jsom_interaciones = [ jsom_interaciones = [

View File

@ -1,5 +1,6 @@
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');
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);
@ -53,6 +54,7 @@ async function Fun_WelcomeAgent(agent, req, res){
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.add(dialog.mensaje('bienvenida')); agent.add(dialog.mensaje('bienvenida'));
return agent.add(dialog.mensaje('sol_cedula')); return agent.add(dialog.mensaje('sol_cedula'));
} }
@ -134,6 +136,83 @@ async function Fun_ConfirmarCerrarSesionAgent(agent, req, res){
} }
} }
async function Func_InformacionTramites(agent, req, res, key_example){
console.log(key_example);
try {
let data_context = await ValidateDataUserContext(agent);
if(data_context){
if(key_example == 0){
return Fun_ConsultarCCAtras(agent, req, res);
}
let legion = await funcion.OptInfoBot(key_example);
if(legion['ok'] == true){
console.log(1)
console.log(1)
console.log(1)
var msger = '*'+legion['data']['data_key']+'*\n\n';
var example = legion['data']['data'].split('|');
if(example.length == 0){
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
example.forEach(element => {
msger = msger + element + '\n';
});
agent.add(msger);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}else{
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}else{
return Fun_WelcomeAgent(agent, req, res);
}
} catch (error) {
console-log(error);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}
async function Fun_pruebas(agent, req, res){
try {
let data_context = await ValidateDataUserContext(agent);
if(data_context){
let legion = await funcion.OptInfoBot('solvencia_key');
console.log(legion);
if(legion['ok'] == true){
console.log(1)
console.log(1)
console.log(1)
var msger = '*'+legion['data']['data_key']+'*\n\n';
var example = legion['data']['data'].split('|');
if(example.length == 0){
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
example.forEach(element => {
msger = msger + element + '\n';
});
agent.add(msger);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}else{
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}else{
return Fun_WelcomeAgent(agent, req, res);
}
} catch (error) {
console-log(error);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}
async function Fun_ConsultarCCAtras(agent, req, res){ async function Fun_ConsultarCCAtras(agent, req, res){
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if(data_context){
@ -185,9 +264,7 @@ async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo){
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){ Contx = ExistParamtContext(agent,'data_predios'); }
if (Contx != null && Contx != NaN && Contx != undefined){ if (Contx != null && Contx != NaN && Contx != undefined){
console.log(Contx);
if(Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "" ){ if(Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "" ){
console.log('esperando por la cedula '+Contx.parameters.cedula_otro);
return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.cedula_otro); return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.cedula_otro);
} }
}else{ }else{
@ -200,8 +277,6 @@ async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo){
} }
async function Fun_ValidarDocumentos(agent, req, res, tipo){ async function Fun_ValidarDocumentos(agent, req, res, tipo){
let data_context = await ValidateDataUserContext(agent); let data_context = await ValidateDataUserContext(agent);
if(data_context){ if(data_context){
@ -211,15 +286,37 @@ async function Fun_ValidarDocumentos(agent, req, res, tipo){
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){ Contx = ExistParamtContext(agent,'context_codigo_barras'); }
if (Contx != null && Contx != NaN && Contx != undefined){ if (Contx != null && Contx != NaN && Contx != undefined){
console.log(Contx);
if(Contx.parameters.codigo_barras != null && Contx.parameters.codigo_barras != "" ){ if(Contx.parameters.codigo_barras != null && Contx.parameters.codigo_barras != "" ){
console.log('esperando el codigo de barras '+Contx.parameters.codigo_barras); let legion = await funcion.ValidarComprobante(Contx.parameters.codigo_barras.toUpperCase());
return agent.add(Contx.parameters.codigo_barras); if(legion['ok'] == true){
//return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.codigo_barras); var send = '';
legion['data']['msg'].forEach((element, index) => {
send = send + element + '\n';
});
if(send != ''){
agent.add(send);
}
if(legion['data']['url2'][0] != undefined){
agent.add(new Card({
title: 'Ver documento',
// text: `This is the body text of a card. You can even use line\n breaks and emoji! 💁`,
buttonText: 'Clic aquí',
buttonUrl: legion['data']['url2'][0]
})
);
agent.add('Ver documento:\n'+legion['data']['url2'][0]);
// agent.add('Ver documento: ' + ' https://mantaentusmanos.test/c/VP-035013.com');
}
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}else{
agent.add(legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
} }
}else{ }else{
return Fun_ListarMenu(agent, req, res); return Fun_ListarMenu(agent, req, res);
// return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
} }
} }
}else{ }else{
@ -228,17 +325,66 @@ async function Fun_ValidarDocumentos(agent, req, res, tipo){
} }
function Func_FallbackComprobantes(agent, req, res){
agent.context.set({name:'0-Bienvenida-Miscomprobantesdepago-followup', lifespan: 1 });
return agent.add('Envíe el número de la opción que desee: \n\n1. Ver todos los comprobantes \n0. Volver al menu principal');
}
function Func_FallbackInfoTramites(agent, req, res){
agent.context.set({name:'0-Bienvenida-InfTram-followup', lifespan: 1 });
return agent.add(dialog.mensaje('info_tramites'));
}
async function Func_MisComprobantesPago(agent, req, res, lery){
try {
let data_context = await ValidateDataUserContext(agent);
if(data_context){
if(lery == 3){
return Fun_ConsultarCCAtras(agent, req, res);
}
if(data_context != null && data_context != "" ){
let legion = await funcion.ConsultaComprobantes(data_context.cedula, lery);
if(legion['ok'] == true){
var msger = '';
let coun = legion['data'].length;
if(lery == 1 && coun > 1){
msger = coun == 1 ? '*ÚLTIMOS COMPROBANTES DE PAGO:*\n\n' : '*ÚLTIMOS '+coun+' COMPROBANTES DE PAGO:*\n\n';
}else{
msger = '*TODOS LOS COMPROBANTES DE PAGO:*\n\n';
}
legion['data'].forEach((element, index) => {
msger = msger + '' + element['rubro'] + '\nFecha: ' + element['fecha'] + '\nValor págado: *' + element['valor_pagado'] + '*\nVer documento: ' + element['url'] + '\n\n';
});
agent.add(msger);
if(lery == 1){
return Func_FallbackComprobantes(agent, req, res);
}else{
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}else{
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}
}else{
return Fun_WelcomeAgent(agent, req, res);
}
} catch (error) {
console-log(error);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
}
async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){ async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = 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 != "" ){
console.log(data_context+' ese');
if(_cedula == null){ if(_cedula == null){
_cedula = data_context.cedula; _cedula = data_context.cedula;
} }
console.log(_cedula+' ese');
const regex = /^[0-9]*$/; const regex = /^[0-9]*$/;
if(regex.test(_cedula)){ if(regex.test(_cedula)){
let legion = await funcion.ConsultaClaves(_cedula); let legion = await funcion.ConsultaClaves(_cedula);
@ -249,7 +395,6 @@ async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){
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']
} }
console.log(rec);
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));
@ -287,6 +432,11 @@ module.exports = {
"Fun_ConsultaPredios": Fun_ConsultaPredios, "Fun_ConsultaPredios": Fun_ConsultaPredios,
"Fun_ConsultarCCAtras": Fun_ConsultarCCAtras, "Fun_ConsultarCCAtras": Fun_ConsultarCCAtras,
"Fun_ListarMenu": Fun_ListarMenu, "Fun_ListarMenu": Fun_ListarMenu,
"Fun_pruebas": Fun_pruebas,
"Func_InformacionTramites": Func_InformacionTramites,
"Fun_ValidarDocumentos": Fun_ValidarDocumentos, "Fun_ValidarDocumentos": Fun_ValidarDocumentos,
"Func_MisComprobantesPago": Func_MisComprobantesPago,
"Func_FallbackComprobantes": Func_FallbackComprobantes,
"Func_FallbackInfoTramites": Func_FallbackInfoTramites,
"Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales
} }