This commit is contained in:
Victor Sanchez Sosa 2021-06-04 17:09:16 -05:00
parent de8727803d
commit 61592a34fe
3 changed files with 179 additions and 44 deletions

View File

@ -14,19 +14,23 @@ app.post("/webhook", express.json(), function (req, res) {
// 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));
//Inicio
function DefauldAgent(){ function DefauldAgent(){
return metodos.Fun_DefauldAgent(agent, req, res); return metodos.Fun_DefauldAgent(agent, req, res);
} }
function WelcomeAgent(){ function WelcomeAgent(){
return metodos.Fun_WelcomeAgent(agent, req, res); return metodos.Fun_WelcomeAgent(agent, req, res);
} }
function SolicitarDatosAgent(){ function SolicitarDatosAgent(){
return metodos.Fun_SolicitarDatosAgent(agent, req, res); return metodos.Fun_SolicitarDatosAgent(agent, req, res);
} }
function ListarMenu(){
return metodos.Fun_ListarMenu(agent, req, res);
}
//Cerrar session
function SiCerrarSesionAgent(){ function SiCerrarSesionAgent(){
return metodos.Fun_CerrarSesionAgent(agent, req, res, 1); return metodos.Fun_CerrarSesionAgent(agent, req, res, 1);
} }
@ -36,24 +40,49 @@ app.post("/webhook", express.json(), function (req, res) {
function ConfirmarCerrarSesionAgent(){ function ConfirmarCerrarSesionAgent(){
return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res); return metodos.Fun_ConfirmarCerrarSesionAgent(agent, req, res);
} }
//Consultar Claves Catastrales
function ConfirmarConsultarClavesCatastrales(){
return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
}
function ConsultarClavesCatastrales(){ function ConsultarClavesCatastrales(){
return metodos.Fun_ConsultarClavesCatastrales(agent, req, res); return metodos.Fun_ConsultarClavesCatastrales(agent, req, res);
} }
function ConsultarOtrasClavesCatastrales(){
return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 1);
}
function ConsultarOtrasClavesCatastrales2(){
return metodos.Fun_ConsultarOtrasClavesCatastrales(agent, req, res, 2);
}
function ConsultarCCAtras(){
return metodos.Fun_ConsultarCCAtras(agent, req, res);
}
let intentMap = new Map(); let intentMap = new Map();
intentMap.set('Default Fallback Intent', DefauldAgent);
//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('0 - SI', ListarMenu);
//Menu 1 - Claves catastrales //Menu 1 - Claves catastrales
intentMap.set('M1 - Consulta de claves catastrales', ConsultarClavesCatastrales); // intentMap.set('M1-Consulta-Predios', ConsultaPredios);
intentMap.set('0 - Bienvenida - Consultar-Predios', ConfirmarConsultarClavesCatastrales);
intentMap.set('0 - Bienvenida - Consultar-Predios - Mis predios', ConsultarClavesCatastrales);
intentMap.set('0 - Bienvenida - Consultar-Predios - Otros Predios', ConsultarOtrasClavesCatastrales);
intentMap.set('0 - Bienvenida - Consultar-Predios - Otros Predios - Cedula', ConsultarOtrasClavesCatastrales2);
intentMap.set('0 - Bienvenida - Consultar-Predios - Atras', ConsultarCCAtras);
intentMap.set('0 - Bienvenida - Consultar-Predios - fallback', ConfirmarConsultarClavesCatastrales);
//Menu 1 - Cerrar sesion //Menu 1 - Cerrar sesion
intentMap.set('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent); // intentMap.set('M0 - Cerrar sesion', ConfirmarCerrarSesionAgent);
intentMap.set('M0.1 - Cerrar sesion - SI', SiCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion', ConfirmarCerrarSesionAgent);
intentMap.set('M0.2 - Cerrar sesion - NO', NoCerrarSesionAgent); intentMap.set('0 - Bienvenida - Cerrar sesion - SI', SiCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion - NO', NoCerrarSesionAgent);
intentMap.set('0 - Bienvenida - Cerrar sesion - fallback', ConfirmarCerrarSesionAgent);
agent.handleRequest(intentMap); agent.handleRequest(intentMap);
}); });

View File

@ -10,6 +10,19 @@ function mensaje(name, username = null) {
'Estoy para ayudarle pero primero necesito su número de cédula o RUC 🙏' 'Estoy para ayudarle pero primero necesito su número de cédula o RUC 🙏'
]; ];
break; break;
case 'sol_data_cedula':
jsom_interaciones = [
'Por favor ingrese el número de cédula del propietario(a)',
'Ayudeme con el número el número de cédula del propietario(a)'
];
break;
case 'retorno_inicio':
jsom_interaciones = [
'¿Hay algo mas en lo que le pueda ayudar?',
'¿Que mas puedo hacer por usted?',
'¿Puedo ayudarle en algo mas?'
];
break;
case 'recuerde': case 'recuerde':
jsom_interaciones = [ jsom_interaciones = [
'Recuerde que puedo ayudarle en cosas como:', 'Recuerde que puedo ayudarle en cosas como:',
@ -41,9 +54,15 @@ function mensaje(name, username = null) {
var menu = "\n1. Consultar predios \n0. Cerrar sessión"; var menu = "\n1. Consultar predios \n0. Cerrar sessión";
jsom_interaciones = [ jsom_interaciones = [
'Recuerde que puedo ayudarle en cosas como:\n' + menu, 'Recuerde que puedo ayudarle en cosas como:\n' + menu,
'En que puedo ayudarle ahora:\n' + menu, 'Puedo ayudarle ahora con:\n' + menu,
'Que tal si empezamos con:\n' + menu, 'Podemos continuar con:\n' + menu,
'Puedo ofrecerle lo siguiente:\n' + menu 'Puedo ofrecerle:\n' + menu
];
break;
case 'consulta_clave':
var menu = "\n1. Consultar mis predios \n2. Consultar otros predios \n0. Atras";
jsom_interaciones = [
'¿Que acción desea realizar?:\n' + menu,
]; ];
break; break;
case 'defauld': case 'defauld':

View File

@ -4,8 +4,8 @@ var dialog = require("./interacciones.js");
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.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) )); agent.add(dialog.mensaje('defauld', funcion.conver_name(data_context.name) ));
agent.context.set({name:'menu_1', 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);
@ -24,7 +24,7 @@ async function Fun_SolicitarDatosAgent(agent, req, res){
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: sesion['data']['cedula'], name: sesion['data']['name'] } }); agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: sesion['data']['cedula'], name: sesion['data']['name'] } });
}else{ }else{
agent.context.set({name:'data_user_context', lifespan: 0 }); agent.context.set({name:'data_user_context', lifespan: 0 });
agent.context.set({name:'bienvenida_context', lifespan: 1 }); agent.context.set({name:'0-Bienvenida-followup', lifespan: 1 });
sesion['msg'] != null ? agent.add(sesion['msg'] ) : null; sesion['msg'] != null ? agent.add(sesion['msg'] ) : null;
return agent.add(dialog.mensaje('sol_cedula')); return agent.add(dialog.mensaje('sol_cedula'));
} }
@ -40,7 +40,7 @@ async function Fun_WelcomeAgent(agent, req, res){
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:'menu_1', lifespan:1}); 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{
console.log('NO existe contexto.......'); console.log('NO existe contexto.......');
@ -48,8 +48,7 @@ async function Fun_WelcomeAgent(agent, req, res){
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:'menu_1', lifespan:1}); agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
agent.context.set({name:'bienvenida_context', lifespan:0});
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula: legion['data']['cedula'], name: legion['data']['name'] } }); 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'));
@ -71,21 +70,21 @@ function ValidateDataUserContext(agent){
} }
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:'bienvenida_context', lifespan:0}); agent.context.set({name:'0-Bienvenida-followup', lifespan:0});
let _cedu = Contx.parameters.cedula; let _nam = Contx.parameters.name; let _cedu = Contx.parameters.cedula; let _nam = Contx.parameters.name;
agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula:_cedu, name:_nam } }); agent.context.set({name:'data_user_context', lifespan: 5, parameters:{ cedula:_cedu, name:_nam } });
resolve({ cedula:_cedu, name:_nam }); resolve({ cedula:_cedu, name:_nam });
}else{ }else{
agent.context.set({name:'bienvenida_context', lifespan:1}); agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
resolve(false); resolve(false);
} }
}else{ }else{
agent.context.set({name:'bienvenida_context', 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:'bienvenida_context', lifespan:1}); agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
resolve(false); resolve(false);
} }
}); });
@ -108,7 +107,7 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){
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.add(legion['msg']);
agent.context.set({name:'bienvenida_context', lifespan:1}); agent.context.set({name:'0-Bienvenida-followup', lifespan:1});
agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}}); agent.context.set({name:'data_user_context', lifespan: 0, parameters:{}});
agent.add(dialog.mensaje('bienvenida')); agent.add(dialog.mensaje('bienvenida'));
return agent.add(dialog.mensaje('sol_cedula')); return agent.add(dialog.mensaje('sol_cedula'));
@ -117,7 +116,7 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){
} }
} }
if(accion == 0){ if(accion == 0){
agent.context.set({name:'menu_1', 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'));
} }
@ -127,18 +126,92 @@ async function Fun_CerrarSesionAgent(agent, req, res, accion){
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({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'); return agent.add('¿Esta de acuerdo en cerrar la sesión? \n1. SI \n2. NO');
}else{ }else{
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
} }
async function Fun_ConsultarClavesCatastrales(agent, req, res){ 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){
console.log(Contx);
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);
}
}else{
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
}
}
}else{
return Fun_WelcomeAgent(agent, req, res);
}
}
async function Fun_ConsultarClavesCatastrales(agent, req, res, _cedula = null){
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 != "" ){
let legion = await funcion.ConsultaClaves(data_context.cedula); console.log(data_context+' ese');
if(_cedula == null){
_cedula = data_context.cedula;
}
console.log(_cedula+' ese');
const regex = /^[0-9]*$/;
if(regex.test(_cedula)){
let legion = await funcion.ConsultaClaves(_cedula);
if(legion['ok'] == true){ if(legion['ok'] == true){
let coun = legion['data'].length; let coun = legion['data'].length;
legion['data'].forEach((element, index) => { legion['data'].forEach((element, index) => {
@ -148,19 +221,28 @@ async function Fun_ConsultarClavesCatastrales(agent, req, res){
} }
console.log(rec); console.log(rec);
if(index == (coun-1)){ if(index == (coun-1)){
return 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));
}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{
return 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));
}
}else{
agent.add('El número de cédula ingresado no es válido');
return Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
} }
} }
}else{ }else{
return Fun_WelcomeAgent(agent, req, res); return Fun_WelcomeAgent(agent, req, res);
} }
// return agent.add('exito'); } catch (error) {
console-log(error);
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
}
} }
@ -170,5 +252,10 @@ module.exports = {
"Fun_WelcomeAgent": Fun_WelcomeAgent, "Fun_WelcomeAgent": Fun_WelcomeAgent,
"Fun_CerrarSesionAgent": Fun_CerrarSesionAgent, "Fun_CerrarSesionAgent": Fun_CerrarSesionAgent,
"Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent, "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_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales "Fun_ConsultarClavesCatastrales": Fun_ConsultarClavesCatastrales
} }