codigoencasa / bot-whatsapp

🤖 Crear Chatbot WhatsApp en minutos. Únete a este proyecto OpenSource (Typescript Version Pronto)
https://bot-whatsapp.netlify.app
MIT License
2.32k stars 801 forks source link

gotoFlow falla en version mysql [🐛] #1090

Open aleangelico opened 1 month ago

aleangelico commented 1 month ago

¿Que versión estas usando?

v1

¿Sobre que afecta?

Flujo de palabras (Flow)

Describe tu problema

Este codigo funciona con el paquete starter "base-baileys-json" pero falla con "base-baileys-mysql".

const { createBot, createProvider, createFlow, addKeyword, EVENTS } = require('@bot-whatsapp/bot')

const BaileysProvider = require('@bot-whatsapp/provider/baileys')
const JsonFileAdapter = require('@bot-whatsapp/database/json')

let plato;

const flowMenu = addKeyword(['menu']).
    addAnswer('Aca tienes el menu',
    null,
    async (ctx, {flowDynamic})=> {
        await flowDynamic("SOPA")
    })
    .addAnswer('Ingresa el plato, FIN  para terminar', {capture: true},  
        async (ctx, {flowDynamic, gotoFlow}) => {
        plato = ctx.body;
        if (plato !== 'SOPA') {            
            return gotoFlow(flowNoExistePlato);
        } else {            
            await flowDynamic(`Elegiste *${plato}*`)
            return gotoFlow(flowCantidadDePlatos);
        }

});

const flowNoExistePlato = addKeyword(EVENTS.ACTION)
.addAnswer("No te he entendido!", null, async (_, { gotoFlow }) => {
    return gotoFlow(flowMenu);
  });

const flowCantidadDePlatos = addKeyword(EVENTS.ACTION)
.addAnswer("Cuantos querés?", null, async (_, { gotoFlow }) => {
    return gotoFlow(flowMenu);
});

const main = async () => {
    const adapterDB = new JsonFileAdapter()
    const adapterFlow = createFlow([flowNoExistePlato, flowCantidadDePlatos, flowMenu])
    const adapterProvider = createProvider(BaileysProvider)

    createBot({
        flow: adapterFlow,
        provider: adapterProvider,
        database: adapterDB,
    })
}

main()

El funcionamiento esperado es que si el usuario escribe "SOPA", le pregunte "cuantos queres" y luego vuelva al menu de pedido. Si escribe algo distinto de "SOPA", entonces muestra "No te he entendido".

Esto funciona bien con el starter "base-baileys-json" .

Si se usa "base-baileys-mysql" cuando va al otro flujo con gotoFlow(), luego el return gotoFlow(flowMenu); ya no regresa al flowMenu

Reproducir error

No response

Información Adicional

No response

leifermendez commented 1 month ago

Buenas pruba actualizando a builderbot te dejo la guia https://www.builderbot.app/en/tutorials/migrate-to-builderbot

aleangelico commented 1 month ago

Buenas pruba actualizando a builderbot te dejo la guia https://www.builderbot.app/en/tutorials/migrate-to-builderbot

así lo haré, gracias