Closed goldentgd closed 20 hours ago
Buenas eso lo puedes controlar con la propiedad sensitive true or false https://www.builderbot.app/en/add-functions#sensitive
Otra forma de solucionarlo es validad la respuesta del usuario, en ctx.body llega la respuesta, validas si lo que te respondio concuerda con algun flujo que debe dispararse, ejemplo: un if o switch con los flujos habilitados, usando gotoFlow puedes enviar al usuario al flujo que sea correcto.
¿Alguna novedad sobre esta ISSUE?
¿Que versión estas usando?
v2
¿Sobre que afecta?
Flujo de palabras (Flow)
Describe tu problema
Cuando un usuario escribe una palabra clave (Key_Words), inicia el flujo, pero si el usuario pone un hola en cualquier parte de la conversación, se traba y vuelve a entrar al inicio y no continua el flujo, esta es una parte del flujo principal:
const KEY_WORDS = ['hola', 'hi', 'buenas tardes', 'buen dia', 'buenos días', 'buenas noches']; const MSG_INITIAL = ['Bienvenido(a)']; const MSG_RFC = ['¿Me podría proporcionar su RFC?']; const MSG_CLIENTE = ['¿Me podría proporcionar su grupo de cliente?']; const MSG_OPTIONS = ['Escribe un mensaje con la palabra o número resaltado en el menú.']; const MSG_OPTIONS_ERROR = 'Opción no valida, seleccione la opción correcta'; const MSG_VALIDATERFC = ['Su número de RFC es: '] const MSG_VALIDATE = ['Su número de Grupo de cliente es: '] const MSG_ERRORRFC = 'El RFC es incorrecto'; const MSG_ERRORCLIENTE = 'El Grupo de cliente es incorrecto';
let clienteInfo = {};
const initialFlow = addKeyword(KEY_WORDS) .addAnswer(MSG_INITIAL, null, async(ctx, ctxFn) => { await getParameterGlobal("MIN-INAC").then(data => { start(ctx, ctxFn, data[0].value); saveState(ctxFn, ctx, MSG_INITIAL) }); }) .addAnswer(MSG_RFC, {capture:true}, async(ctx, ctxFn) => { const resultado = await validateText(ctx); if(resultado.error) { ctxFn.flowDynamic("Favor de proporcionar una información correcta"); return ctxFn.fallBack(resultado.message); } const rfcInput = ctx.body.trim().toUpperCase(); clienteInfo.rfc = rfcInput; await getCliente(clienteInfo.grupoCliente, clienteInfo.rfc).then(cliente => { if (cliente.error) { console.error('Error encontrado:', cliente.mensaje); return ctxFn.fallBack(MSG_ERRORRFC); } else { saveOrderState(ctx.body.trim(), ctxFn.state); const estRFC = MSGVALIDATERFC + cliente.cliente["VAT Registration No"]; ctxFn.flowDynamic(estRFC); var data = ctxFn.state.getMyState()?.history || {}; data.cliente = cliente; ctxFn.state.update({ history: data }); saveState(ctxFn, null, estRFC); } }) await saveState(ctxFn, null, MSG_RFC); await saveState(ctxFn, ctx, null) }) .addAnswer(MSG_CLIENTE, {capture:true}, async(ctx, ctxFn) => { const resultado = await validateText(ctx); if(resultado.error) { ctxFn.flowDynamic("Favor de proporcionar una información correcta"); return ctxFn.fallBack(resultado.message); } const grupoClienteInput = ctx.body.trim().toUpperCase(); clienteInfo.grupoCliente = grupoClienteInput; //saveState(ctxFn, null, 'Grupo de Cliente'); await getCliente(clienteInfo.grupoCliente, clienteInfo.rfc).then(cliente => { if (cliente.error) { console.error('Error encontrado:', cliente.mensaje); return ctxFn.fallBack(MSG_ERRORCLIENTE); } else { if (cliente.cliente["Grupo Cliente"] !== clienteInfo.grupoCliente) { console.error('Error: Grupo de Cliente no coincide con el RFC'); return ctxFn.fallBack(MSG_ERRORCLIENTE); }
saveOrderState(ctx.body.trim(), ctxFn.state); const estCliente = MSG_VALIDATE + cliente.cliente["Grupo Cliente"]; const estName = 'Bienvenido(a) ' + cliente.cliente["Name"].trim() + ''; const datosCliente =
${estCliente}\r\n${estName}
; var data = ctxFn.state.getMyState()?.history || {}; data.cliente = cliente; ctxFn.state.update({ history: data });Reproducir error
No response
Información Adicional
Estoy usando builderbot y Baileys como proveedor, así se ve en whatsapp al poner hola en lugar de un RFC me activa de nuevo el flujo y se queda trabado y ya no pasa de ahí al menos que reinicie el sistema de nuevo: [28/08/2024 10:55 a. m.]usuario: Buenos días [28/08/2024 10:55 a. m.]Chat : Bienvenido(a), soy tu agente virtual [28/08/2024 10:55 a. m.]Chat: ¿Me podría proporcionar su RFC? [28/08/2024 10:56 a. m.] usuario: Hola usuario: Hola [28/08/2024 10:56 a. m.] Chat: El RFC es incorrecto [28/08/2024 10:56 a. m.] Chat: Bienvenido(a), soy tu agente virtual
Este es otro ejemplo de como se ve en whatsapp y se traba después del primer hola y ya no funciona, se cicla: