442 lines
19 KiB
JavaScript
442 lines
19 KiB
JavaScript
var funcion = require("./funtions.js");
|
|
var dialog = require("./interacciones.js");
|
|
const {Card, Image} = require('dialogflow-fulfillment');
|
|
|
|
async function Fun_DefauldAgent(agent, req, res){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) ));
|
|
return agent.add(dialog.mensaje('menu_1'));
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
|
|
async function Fun_SolicitarDatosAgent(agent, req, res){
|
|
const sessionId = req.body.session.split("/").reverse()[0];
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
if(data_context != null && data_context != "" ){
|
|
let sesion = await funcion.RegistrarSession(sessionId, data_context.cedula);
|
|
if(sesion['ok'] == true && sesion['data']['name'] != null){
|
|
console.log('sesion registrada en la bd')
|
|
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: sesion['data']['cedula'], name: sesion['data']['name'] } });
|
|
}else{
|
|
agent.context.set({name:'data_user_context', lifespan: 0 });
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan: 1 });
|
|
sesion['msg'] != null ? agent.add(sesion['msg'] ) : null;
|
|
return agent.add(dialog.mensaje('sol_cedula'));
|
|
}
|
|
}
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
async function Fun_WelcomeAgent(agent, req, res){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
console.log('contexto existe........');
|
|
agent.add(dialog.mensaje('bienvenida', data_context.name != null ? funcion.conver_name(data_context.name) : data_context.cedula));
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
return agent.add(dialog.mensaje('menu_1'));
|
|
}else{
|
|
console.log('NO existe contexto.......');
|
|
const sessionId = req.body.session.split("/").reverse()[0];
|
|
let legion = await funcion.ValidarSession(sessionId);
|
|
if(legion['ok'] == true && legion['data']['name'] != null){
|
|
console.log('sesion existe en la bd')
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: legion['data']['cedula'], name: legion['data']['name'] } });
|
|
agent.add(dialog.mensaje('bienvenida', legion['data']['name'] != null ? funcion.conver_name(legion['data']['name']) : d_text.cedula));
|
|
return agent.add(dialog.mensaje('menu_1'));
|
|
}else{
|
|
agent.context.set({name:'sol_datos_usuario', lifespan:1});
|
|
agent.add(dialog.mensaje('bienvenida'));
|
|
return agent.add(dialog.mensaje('sol_cedula'));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function ValidateDataUserContext(agent){
|
|
return new Promise((resolve, reject) => {
|
|
try{
|
|
var Contx = null;
|
|
Contx = agent.context.get('data_user_context');
|
|
if (Contx == null || Contx == NaN || Contx == undefined){
|
|
Contx = ExistParamtContext(agent,'data_user_context');
|
|
}
|
|
if (Contx != null && Contx != NaN && Contx != undefined){
|
|
if(Contx.parameters.cedula != null && Contx.parameters.cedula != "" ){
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:0});
|
|
let _cedu = Contx.parameters.cedula; let _nam = Contx.parameters.name;
|
|
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula:_cedu, name:_nam } });
|
|
resolve({ cedula:_cedu, name:_nam });
|
|
}else{
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
resolve(false);
|
|
}
|
|
}else{
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
resolve(false);
|
|
}
|
|
}catch (error) {
|
|
console.log(error);
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
resolve(false);
|
|
}
|
|
});
|
|
}
|
|
|
|
function ExistParamtContext(agent, pamameter){
|
|
var data = null;
|
|
agent.contexts.forEach(element => {
|
|
if(element.name == pamameter){
|
|
data = element;
|
|
}
|
|
});
|
|
return data;
|
|
}
|
|
|
|
async function Fun_CerrarSesionAgent(agent, req, res, accion){
|
|
if(accion == 1){
|
|
console.log('cerrando sesion...');
|
|
const sessionId = req.body.session.split("/").reverse()[0];
|
|
let legion = await funcion.CerrarSession(sessionId);
|
|
if(legion['ok'] == true){
|
|
agent.add(legion['msg']);
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}});
|
|
agent.add(dialog.mensaje('bienvenida'));
|
|
return agent.add(dialog.mensaje('sol_cedula'));
|
|
}else{
|
|
return agent.add(legion['msg']);
|
|
}
|
|
}
|
|
if(accion == 0){
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
agent.add(dialog.mensaje('afirmacion'));
|
|
return agent.add(dialog.mensaje('menu_1'));
|
|
}
|
|
|
|
}
|
|
|
|
async function Fun_ConfirmarCerrarSesionAgent(agent, req, res){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
// agent.context.set({name:'cerrar_sesion', lifespan:1});
|
|
agent.context.set({name:'0-Bienvenida-Cerrarsesion-followup', lifespan:1});
|
|
return agent.add('¿Esta de acuerdo en cerrar la sesión? \n1. SI \n2. NO');
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
async function Func_InformacionTramites(agent, req, res, key_example){
|
|
console.log(key_example);
|
|
try {
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
if(key_example == 0){
|
|
return Fun_ConsultarCCAtras(agent, req, res);
|
|
}
|
|
|
|
let legion = await funcion.OptInfoBot(key_example);
|
|
if(legion['ok'] == true){
|
|
console.log(1)
|
|
console.log(1)
|
|
console.log(1)
|
|
var msger = '*'+legion['data']['data_key']+'*\n\n';
|
|
var example = legion['data']['data'].split('|');
|
|
if(example.length == 0){
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
example.forEach(element => {
|
|
msger = msger + element + '\n';
|
|
});
|
|
agent.add(msger);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
|
|
}else{
|
|
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
} catch (error) {
|
|
console-log(error);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}
|
|
|
|
|
|
async function Fun_pruebas(agent, req, res){
|
|
try {
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
let legion = await funcion.OptInfoBot('solvencia_key');
|
|
console.log(legion);
|
|
if(legion['ok'] == true){
|
|
console.log(1)
|
|
console.log(1)
|
|
console.log(1)
|
|
var msger = '*'+legion['data']['data_key']+'*\n\n';
|
|
var example = legion['data']['data'].split('|');
|
|
if(example.length == 0){
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
example.forEach(element => {
|
|
msger = msger + element + '\n';
|
|
});
|
|
|
|
agent.add(msger);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
|
|
}else{
|
|
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
} catch (error) {
|
|
console-log(error);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function Fun_ConsultarCCAtras(agent, req, res){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
return agent.add(dialog.mensaje('menu_1'));
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
|
|
async function Fun_ConfirmarConsultarClavesCatastrales(agent, req, res){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
agent.context.set({name:'0-Bienvenida-Consultar-Predios-followup', lifespan:1});
|
|
return agent.add(dialog.mensaje('consulta_clave'));
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
|
|
async function Fun_ConsultaPredios(agent, req, res){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
agent.context.set({name:'nuevo_context', lifespan:1});
|
|
return agent.add(dialog.mensaje('consulta_clave'));
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
async function Fun_RetornarAlinicio(agent, req, res,name){
|
|
agent.context.set({name:'inicial_context', lifespan:1});
|
|
return agent.add(name +', '+dialog.mensaje('retorno_inicio'));
|
|
}
|
|
|
|
async function Fun_ListarMenu(agent, req, res){
|
|
agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
|
|
return agent.add(dialog.mensaje('menu_1'));
|
|
}
|
|
|
|
async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
if(tipo == 1){
|
|
return agent.add(dialog.mensaje('sol_data_cedula'));
|
|
}else if(tipo == 2){
|
|
var Contx = agent.context.get('data_predios');
|
|
if (Contx == null || Contx == NaN || Contx == undefined){ Contx = ExistParamtContext(agent,'data_predios'); }
|
|
if (Contx != null && Contx != NaN && Contx != undefined){
|
|
if(Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "" ){
|
|
return Fun_ConsultarClavesCatastrales(agent, req, res, Contx.parameters.cedula_otro);
|
|
}
|
|
}else{
|
|
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
|
|
}
|
|
}
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
|
|
async function Fun_ValidarDocumentos(agent, req, res, tipo){
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
if(tipo == 1){
|
|
return agent.add(dialog.mensaje('sol_data_codigo'));
|
|
}else if(tipo == 2){
|
|
var Contx = agent.context.get('context_codigo_barras');
|
|
if (Contx == null || Contx == NaN || Contx == undefined){ Contx = ExistParamtContext(agent,'context_codigo_barras'); }
|
|
if (Contx != null && Contx != NaN && Contx != undefined){
|
|
if(Contx.parameters.codigo_barras != null && Contx.parameters.codigo_barras != "" ){
|
|
let legion = await funcion.ValidarComprobante(Contx.parameters.codigo_barras.toUpperCase());
|
|
if(legion['ok'] == true){
|
|
var send = '';
|
|
legion['data']['msg'].forEach((element, index) => {
|
|
send = send + element + '\n';
|
|
});
|
|
if(send != ''){
|
|
agent.add(send);
|
|
}
|
|
if(legion['data']['url2'][0] != undefined){
|
|
agent.add(new Card({
|
|
title: 'Ver documento',
|
|
// text: `This is the body text of a card. You can even use line\n breaks and emoji! 💁`,
|
|
buttonText: 'Clic aquí',
|
|
buttonUrl: legion['data']['url2'][0]
|
|
})
|
|
);
|
|
|
|
agent.add('Ver documento:\n'+legion['data']['url2'][0]);
|
|
// agent.add('Ver documento: ' + ' https://mantaentusmanos.test/c/VP-035013.com');
|
|
}
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}else{
|
|
agent.add(legion['msg']);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
|
|
}
|
|
}else{
|
|
return Fun_ListarMenu(agent, req, res);
|
|
}
|
|
}
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
}
|
|
|
|
|
|
function Func_FallbackComprobantes(agent, req, res){
|
|
agent.context.set({name:'0-Bienvenida-Miscomprobantesdepago-followup', lifespan: 1 });
|
|
return agent.add('Envíe el número de la opción que desee: \n\n1. Ver todos los comprobantes \n0. Volver al menu principal');
|
|
}
|
|
|
|
function Func_FallbackInfoTramites(agent, req, res){
|
|
agent.context.set({name:'0-Bienvenida-InfTram-followup', lifespan: 1 });
|
|
return agent.add(dialog.mensaje('info_tramites'));
|
|
}
|
|
|
|
|
|
async function Func_MisComprobantesPago(agent, req, res, lery){
|
|
try {
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
if(lery == 3){
|
|
return Fun_ConsultarCCAtras(agent, req, res);
|
|
}
|
|
if(data_context != null && data_context != "" ){
|
|
let legion = await funcion.ConsultaComprobantes(data_context.cedula, lery);
|
|
if(legion['ok'] == true){
|
|
var msger = '';
|
|
let coun = legion['data'].length;
|
|
if(lery == 1 && coun > 1){
|
|
msger = coun == 1 ? '*ÚLTIMOS COMPROBANTES DE PAGO:*\n\n' : '*ÚLTIMOS '+coun+' COMPROBANTES DE PAGO:*\n\n';
|
|
}else{
|
|
msger = '*TODOS LOS COMPROBANTES DE PAGO:*\n\n';
|
|
}
|
|
legion['data'].forEach((element, index) => {
|
|
msger = msger + '' + element['rubro'] + '\nFecha: ' + element['fecha'] + '\nValor págado: *' + element['valor_pagado'] + '*\nVer documento: ' + element['url'] + '\n\n';
|
|
});
|
|
agent.add(msger);
|
|
if(lery == 1){
|
|
return Func_FallbackComprobantes(agent, req, res);
|
|
}else{
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}else{
|
|
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
} catch (error) {
|
|
console-log(error);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}
|
|
|
|
|
|
async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){
|
|
try {
|
|
let data_context = await ValidateDataUserContext(agent);
|
|
if(data_context){
|
|
if(data_context != null && data_context != "" ){
|
|
if(_cedula == null){
|
|
_cedula = data_context.cedula;
|
|
}
|
|
const regex = /^[0-9]*$/;
|
|
if(regex.test(_cedula)){
|
|
let legion = await funcion.ConsultaClaves(_cedula);
|
|
if(legion['ok'] == true){
|
|
let coun = legion['data'].length;
|
|
legion['data'].forEach((element, index) => {
|
|
var rec = element['valor']['boot']['anteriores'];
|
|
if(element['valor']['boot']['anteriores'] != 'Recaudación al día'){
|
|
rec = rec + '\n' + element['valor']['boot']['actual'] + '\n' + element['valor']['boot']['total']
|
|
}
|
|
if(index == (coun-1)){
|
|
agent.add(element['text'] + '\n' +element['direccion']+ '\n' + rec);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}else{
|
|
agent.add(element['text'] + '\n' +funcion.conver_capitalice(element['direccion'])+ '\n' +rec);
|
|
}
|
|
});
|
|
}else{
|
|
agent.add(funcion.conver_name(data_context.name) +', '+ legion['msg']);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}else{
|
|
agent.add('El número de cédula ingresado no es válido');
|
|
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
|
|
}
|
|
}
|
|
}else{
|
|
return Fun_WelcomeAgent(agent, req, res);
|
|
}
|
|
} catch (error) {
|
|
console-log(error);
|
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
|
}
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
"Fun_DefauldAgent": Fun_DefauldAgent,
|
|
"Fun_SolicitarDatosAgent": Fun_SolicitarDatosAgent,
|
|
"Fun_WelcomeAgent": Fun_WelcomeAgent,
|
|
"Fun_CerrarSesionAgent": Fun_CerrarSesionAgent,
|
|
"Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent,
|
|
"Fun_ConfirmarConsultarClavesCatastrales": Fun_ConfirmarConsultarClavesCatastrales,
|
|
"Fun_ConsultarOtrasClavesCatastrales": Fun_ConsultarOtrasClavesCatastrales,
|
|
"Fun_ConsultaPredios": Fun_ConsultaPredios,
|
|
"Fun_ConsultarCCAtras": Fun_ConsultarCCAtras,
|
|
"Fun_ListarMenu": Fun_ListarMenu,
|
|
"Fun_pruebas": Fun_pruebas,
|
|
"Func_InformacionTramites": Func_InformacionTramites,
|
|
"Fun_ValidarDocumentos": Fun_ValidarDocumentos,
|
|
"Func_MisComprobantesPago": Func_MisComprobantesPago,
|
|
"Func_FallbackComprobantes": Func_FallbackComprobantes,
|
|
"Func_FallbackInfoTramites": Func_FallbackInfoTramites,
|
|
"Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales
|
|
} |