Open KichanCrazy opened 1 year ago
Solucionado next-release
Hola! he actualizado a la versión dev pero aun si presentando el problema
`const flowtest3 = addKeyword("test3") .addAction((_, { flowDynamic }) => { const msg = [ "Menu", "1️⃣ Test1", "2️⃣ Test2", "3️⃣ Test3", "", "Escribe el numero de la opcion", ]; return flowDynamic(msg.join("\n")); }) .addAnswer( "Seleccione una opción", { capture: true, delay: 1000 }, async (ctx, { fallBack, flowDynamic, endFlow }) => { if (!["1", "2", "3"].includes(ctx.body)) { console.log("Entro en la validación"); return fallBack("opcion no valida"); } console.log("Finaliza"); return endFlow; } );
const flowtest2 = addKeyword("test2") .addAction((, { flowDynamic }) => { return flowDynamic("2) Test2"); }) .addAction(async (, { gotoFlow }) => { / const { flowtest3 } = require("flowtest"); / await gotoFlow(flowtest3); });
const flowtest1 = addKeyword("test1") .addAction((, { flowDynamic }) => { return flowDynamic("1) Test1"); }) .addAction(async (, { gotoFlow }) => { await gotoFlow(flowtest3); }); `
`const flowtest3 = addKeyword("test3") .addAction((_, { flowDynamic }) => { const msg = [ "Menu", "1️⃣ Test1", "2️⃣ Test2", "3️⃣ Test3", "", "Escribe el numero de la opcion", ]; return flowDynamic(msg.join("\n")); }) .addAnswer( "Seleccione una opción", { capture: true, delay: 1000 }, async (ctx, { fallBack, flowDynamic, endFlow }) => { if (!["1", "2", "3"].includes(ctx.body)) { console.log("Entro en la validación"); return fallBack("opcion no valida"); } console.log("Finaliza"); return endFlow; } );
const flowtest2 = addKeyword("test2") .addAction((, { flowDynamic }) => { return flowDynamic("2) Test2"); }) .addAction(async (, { gotoFlow }) => { / const { flowtest3 } = require("flowtest"); / await gotoFlow(flowtest3); });
const flowtest1 = addKeyword("test1") .addAction((, { flowDynamic }) => { return flowDynamic("1) Test1"); }) .addAction(async (, { gotoFlow }) => { await gotoFlow(flowtest3); }); `
esto se encuentra en la version dev, debes de ejecutar este comando para poder tener la version adelantada
npm i @bot-whatsapp/bot@dev @bot-whatsapp/cli@dev @bot-whatsapp/database@dev @bot-whatsapp/provider@dev @bot-whatsapp/portal@dev
ya tengo "dev", aun asi sigue presente el problema
"@adiwajshing/baileys": "4.4.0", "@bot-whatsapp/bot": "^0.0.214-alpha.0", "@bot-whatsapp/cli": "^0.0.151-alpha.0", "@bot-whatsapp/database": "^0.0.128-alpha.0", "@bot-whatsapp/portal": "^0.0.86-alpha.0", "@bot-whatsapp/provider": "^0.0.153-alpha.0", "@whiskeysockets/baileys": "^6.5.0", "dotenv": "^16.0.3", "wa-sticker-formatter": "4.3.2"
Veo que tu problema radica es en el hecho de que no tienes declarado los flujos como procesos asincronos:
const flowtest3 = addKeyword("test3")
.addAction(async (_, { flowDynamic }) => {
const msg = [
"Menu",
"1️⃣ Test1",
"2️⃣ Test2",
"3️⃣ Test3",
"",
"Escribe el numero de la opcion",
];
await flowDynamic(msg.join("\n"));
})
.addAnswer(
"Seleccione una opción",
{ capture: true, delay: 1000 },
async (ctx, { fallBack, flowDynamic, endFlow }) => {
if (!["1", "2", "3"].includes(ctx.body)) {
console.log("Entro en la validación");
return fallBack("opcion no valida");
}
console.log("Finaliza");
return endFlow;
}
);
const flowtest2 = addKeyword("test2")
.addAction(async (_, { flowDynamic }) => {
await flowDynamic("2) Test2");
}).addAction(async (_, { gotoFlow }) => {
/* const { flowtest3 } = require("flowtest"); */
return gotoFlow(flowtest3);
});
const flowtest1 = addKeyword("test1")
.addAction(async (_, { flowDynamic }) => {
await flowDynamic("1) Test1");
})
.addAction(async (_, { gotoFlow }) => {
return gotoFlow(flowtest3);
});
Estoy probando con ese codigo y funciona correcto! Te recomiendo usar eslint con el plugin diseñador para el bot y evitar que estas cosas te ocurran te comaparto mi package
{
"name": "base-bailey-json",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "npx eslint . --no-ignore && node app.js"
},
"keywords": [],
"dependencies": {
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest",
"@bot-whatsapp/portal": "latest",
"mime-types": "2.1.35",
"@whiskeysockets/baileys": "6.5.0",
"wa-sticker-formatter": "4.4.4",
"cache-manager": "5.2.4"
},
"devDependencies": {
"eslint-plugin-bot-whatsapp": "latest",
"eslint": "^8.52.0"
},
"author": "",
"license": "ISC"
}
He creado otro proyecto, instale la version dev, copie y peque el codigo que me has proporcionado realize pruebas y sigo recibiendo el mismo comportamiento. adjunto foto y mi codigo:
He creado otro proyecto, instale la version dev, copie y peque el codigo que me has proporcionado realize pruebas y sigo recibiendo el mismo comportamiento. adjunto foto y mi codigo:
Ya entiendo cual era tu detalle no lo entendí desde el inicio de esa manera, este issue no esta relacionado con eso. Lo revisaré, de igualmanera es facil de corregir si haces esto:
const flowtest3 = addKeyword("test3")
.addAction(async (_, { flowDynamic }) => {
const msg = [
"Menu",
"1️⃣ Test1",
"2️⃣ Test2",
"3️⃣ Test3",
"",
"Escribe el numero de la opcion",
];
await flowDynamic(msg.join("\n"));
await flowDynamic("Seleccione una opción")
})
.addAction(
{ capture: true },
async (ctx, { fallBack, flowDynamic, endFlow }) => {
if (!["1", "2", "3"].includes(ctx.body)) {
console.log("Entro en la validación");
return fallBack("opcion no valida");
}
console.log("Finaliza");
return endFlow;
}
);
Buen día, existe alguna novedad respecto a esta issue?
El problema aun persiste, al acceder a un flow desde un gotoFlow los delay no funcionan enviándose de inmediato uno detrás del otro sin esperar el tiempo correspondiente.
¿Que versión estas usando?
v2
¿Sobre que afecta?
Flujo de palabras (Flow)
Describe tu problema
Cuando se entra a un flujo por medio de gotoFlow, se ignora la opción de delay que tiene un mensaje y se envía de inmediato.
Reproducir error
No response
Información Adicional
Ejemplo de codigo:
archivo20.js
archivo21.js
**Problema:
Si entras directamente al flujo del archivo21.js si se respeta el delay de cada addAnswer ( o en su caso si se usa la función delay() en el callback) pero cuando entras al flujo por medio del gotoflow que esta en el archivo20.js los mensajes no respetan el delay y se envían al instante uno tras otro.**