Closed Gregoriotecnico closed 11 months ago
Puedes compartir el ejemplo de los gotoFlows anidados a que te refieres?
Estoy fuera de casa, te mando una captura que tenía de ayer. Falta el primer flujo que deriva a "flowReserva" (este lo hace bien) El que hace mal es el que ves en el ejemplo que te adjunto: Hago gotoFlow hacia "flowReservaNuevoCliente" pero nunca lo hace.
Cuando llegue a casa te envío el otro flujo, pero simpleme te es como si hicieras un gotoFlow desde un events.welcome
main.js (Primer gotoFlow que lo hace correctamnte)
const { addKeyword, addAnswer, EVENTS } = require("@bot-whatsapp/bot");
const cron = require("node-cron");
const { activarDiariamente } = require("./utils/activarDiariamente");
const consultarBlacklist = require("./utils/consultarBlacklist.js");
const conexionSheets = require("./services/conexionSheets.js");
const flowBienvenida = require("./flows/flow.bienvenida.js");
const { flowMenu } = require("./flows/flow.menu.js");
const flowHorario = require("./flows/flow.horario.js");
const flowZona = require("./flows/flow.zona.js");
const flowCarta = require("./flows/flow.carta.js");
const {flowReserva} = require("./flows/flow.reserva.js");
let ultimaEjecucionSheet = 0;
let ultimaEjecucionVacaciones = 0;
const flowMain = addKeyword(EVENTS.WELCOME).addAction(async (ctx, ctxFn) => {
try {
//TODO - LEEMOS SHEETS PARA LOS MENSAJES
const tiempoActual = Date.now();
if (tiempoActual - ultimaEjecucionSheet >= 30000) {
// Leemos sheets cada 30 segundos
await conexionSheets(ctxFn);
ultimaEjecucionSheet = tiempoActual;
}
//TODO - LEEMOS MYSQL PARA TRAER ESTADO DEL CHATBOT
const estadoChatbot = await ctxFn.extensions.mesas.estadoChatbot();
const consultaConfiguracion =
await ctxFn.extensions.mesas.consultaConfiguracion();
ctxFn.extensions.json.escribirEnJson({
carta: consultaConfiguracion[0].CartaURL,
mesasExterior: consultaConfiguracion[0].Mesas_exterior,
mesasInterior: consultaConfiguracion[0].Mesas_Interior,
personasXmesa: consultaConfiguracion[0].PersonasXmesas
});
//TODO - INICIAMOS LA DERIVACION A FLUJOS
const resUsuario = ctx.body.toLowerCase().trim();
switch (resUsuario) {
case "reserva":
case "reservar":
case "reservar mesa":
case "reserva mesa":
case "🗓️ *reservar mesa*":
return ctxFn.gotoFlow(flowReserva);
default:
return ctxFn.gotoFlow(flowBienvenida);
}
} catch (e) {
console.log("Error en el flowMain: ", e);
}
});
module.exports = { flowMain };
flow.reserva.js (Estan dos flujos, flowReserva y flowReservaNuevoCliente)
const { addKeyword, EVENTS, addAction } = require("@bot-whatsapp/bot");
const flowReservaNuevoCliente = require("./subflowreserva");
const flowReserva = addKeyword("__FLOWRESERVA__")
.addAction(async (ctx, ctxFn) => {
ctxFn.flowDynamic(ctxFn.extensions.json.leerCampoJson("menuReserva"));
})
.addAction(async (ctx, { extensions, gotoFlow }) => {
const buscarCliente = await extensions.mesas.buscarCliente(
ctx.from.slice(2)
);
if (!buscarCliente) {
console.log("entra al if");
return gotoFlow(flowReservaNuevoCliente);
}
});
const flowReservaNuevoCliente = addKeyword("12345").addAnswer(
"Digame su *Nombre y apellidos* para reservar su mesa...",
{ capture: true },
async (ctx, { state }) => {
console.log("entro al answer");
state.update({ Nombre: ctx.body, Telefono: ctx.from.slice(2) });
}
);
module.exports = { flowReserva, flowReservaNuevoCliente };
Evidentemente en el app.js estan implementados los 3 flujos con sus respectivas rutas
Siguiente release ya esta fixed.
Siguiente release ya esta fixed.
Gracias !! casualmente me tope con el mismo issue
un gotoFlow no funciona cuando ya vienes de otro
Siguiente release ya esta fixed. https://github.com/codigoencasa/bot-whatsapp/blob/6edf3730e143c58b3bb36e1d748a6730e6392168/__test__/0.0.2-goto-flow.test.js#L177
Gracias !! casualmente me tope con el mismo issue
un gotoFlow no funciona cuando ya vienes de otro
Peudes ir probando con este comando instalas la version que se viene Dejo un video relacionado:
https://www.youtube.com/watch?v=veybTEYGir0
npm i @bot-whatsapp/bot@dev @bot-whatsapp/cli@dev @bot-whatsapp/database@dev @bot-whatsapp/provider@dev @bot-whatsapp/portal@dev
Disculpen al día de hoy tengo entendido que ese cambio ya esta añadido a la última liberación sin embargo, pruebo el ejemplo que mencionas en bot-whatsapp/test/0.0.2-goto-flow.test.js y no entra al addAction del flowReserva, no imprime Flow de la reserva 1 y mucho menos el 2, para verificarlo borre los node_modules e incluso instale las dependencias de desarrollo que mencionas pero sigue pasando lo mismo, por favor pueden indicarme si hay algo que esté haciendo mal.
Creo que no se ha solucionado todavia dado que un ejemplo tan siemple como este no funciona
Creo que no se ha solucionado todavia dado que un ejemplo tan siemple como este no funciona
Debes colocar todos los flows en el array de
createFlow([test_gotoFlow, test_gotoFlow_2, test_gotoFlow_3])
Disculpen al día de hoy tengo entendido que ese cambio ya esta añadido a la última liberación sin embargo, pruebo el ejemplo que mencionas en bot-whatsapp/test/0.0.2-goto-flow.test.js y no entra al addAction del flowReserva, no imprime Flow de la reserva 1 y mucho menos el 2, para verificarlo borre los node_modules e incluso instale las dependencias de desarrollo que mencionas pero sigue pasando lo mismo, por favor pueden indicarme si hay algo que esté haciendo mal.
Revisa el mensaje del compañero @jhonnymosquera
@leifermendez Muchas gracias, me gustaria ayudar con la documentasion en el sitio web pero no se como, mientras dejo la solucion mas clara aqui a quien pueda servirle
@jhonnymosquera para evitar el uso de ese uuid usa EVENT.ACTION que tecnicamente hace algo similar con el mismo proposito. ya estamos trabajando en una nueva doc esta en construccion pero puedes ir aportando. https://builderbot.vercel.app/methods#goto-flow
@jhonnymosquera para aporta a la doc debes ir a https://github.com/codigoencasa/documentation
¿Que versión estas usando?
v2
¿Sobre que afecta?
Flujo de palabras (Flow)
Describe tu problema
Pasar de un flujo mediante gotoFlow con más de un gotoFlow no funciona (creo que desde que se añadió el tema de la dependencia circular) El error se vé: Flujo 1 -> (gotoflow: flujo 2) PERFECTO Flujo 2 -> (gotoflow: flujo 3) NO LO HACE
Este sistema ya lo tenia yo realizado en bots ateriores funcionando perfectamente. He cambiado la funcion del gotoFlow(interna) de uno de mis bots antiguos hacia este ejemplo y funciona perfectamente.
Reproducir error
No response
Información Adicional
No response