Closed estebancores closed 2 months ago
Hola @estebancores Me sucede lo mismo. Si sien se ejecuta addAnswer, no se llama a addAction.
Ejemplo:
const endFlow = import BotWhatsapp from '@bot-whatsapp/bot';
export default BotWhatsapp .addKeyword(BotWhatsapp.EVENTS.ACTION) .addAction((_, { endFlow, state }) => {
const currentState = state.getMyState();
const baned = currentState?.baned ?? false
console.log('baned2', baned)
if (baned) return endFlow();
}) .addAnswer(["Lo siento, no podre seguir asistiendote"]);
const welcomeFllow = BotWhatsapp.addKeyword(BotWhatsapp.EVENTS.WELCOME) .addAnswer("⏱️") .addAction(async (ctx, ctxFn) => {
const currentState = ctxFn.state.getMyState();
const baned = currentState?.baned ?? false
console.log('baned1', baned)
ctxFn.gotoFlow(endFlow);
});
¿Alguna novedad sobre esta ISSUE?
¿Alguna novedad sobre esta ISSUE?
Nada, al parecer no estan soportando mas la libreria, te toca buscar la manera de no usar gotoflow
@estebancores A mi me paso algo similar. Pude resolverlo agregando al addAnswer, como ultimo parametro, el flow al que lo queria redirigir entre corchetes. trato de dejar un ejemplo con tu codigo con el flow que dijiste que no te funcionaba:
// Select hours options, Step 5
const flowShowHoursAvailable = addKeyword(['1', '2'])
.addAnswer([
'Los horarios disponibles son:',
'*Recuerda que es horario militar (24h)*'
],
null,
async (ctx, { state, flowDynamic, gotoFlow }) => {
const currentState = state.getMyState()
const hours = _getMessageFormatedHours(currentState?.reservation.selectedDate, ctx.body)
await state.update({ indexedHours: hours['indexedHours'] })
await state.update({ hoursText: hours['optionsFormatHours'] })
await flowDynamic(hours['optionsFormatHours'].join('\n'))
}
)
.addAnswer(
'Cual horario te parece mejor?',
{ capture: true },
async (ctx, { state, gotoFlow }) => {
const { body } = ctx
const currentState = state.getMyState()
await state.update({
...currentState,
reservation: {
...currentState.reservation,
selectedHour: currentState?.indexedHours[parseInt(body) - 1] // Codigo interno de set en field object Mongo
}
})
await gotoFlow(flowConfirmReservation)
},
[flowConfirmReservation] // <-------- AGREGA ESTA LINEA ----------
)
Contame si te sirvio.
@franmastromarino en tu caso seria:
const endFlow = import BotWhatsapp from '@bot-whatsapp/bot';
export default BotWhatsapp
.addKeyword(BotWhatsapp.EVENTS.ACTION)
.addAction((_, { endFlow, state }) => {
const currentState = state.getMyState();
const baned = currentState?.baned ?? false
console.log('baned2', baned)
if (baned) return endFlow();
})
.addAnswer(["Lo siento, no podre seguir asistiendote"]);
const welcomeFllow = BotWhatsapp.addKeyword(BotWhatsapp.EVENTS.WELCOME)
.addAnswer("⏱️")
.addAction(async (ctx, ctxFn) => {
const currentState = ctxFn.state.getMyState();
const baned = currentState?.baned ?? false
console.log('baned1', baned)
ctxFn.gotoFlow(endFlow);
},
[endFlow] // <-------- AGREGA ESTA LINEA ----------
);
@franmastromarino @estebancores tambien es importante agregar todos los flows al adapterFlow
!!
¿Alguna novedad sobre esta ISSUE?
¿Que versión estas usando?
v2
¿Sobre que afecta?
Flujo de palabras (Flow)
Describe tu problema
Como puede ver el flujo
flowConfirmReservation
tiene en el callback, un flowDynamic que se supone debe mostrar el mensaje con los datos, sin embargo, nisiquiera entra al callback, lo cual no entiendo, cosa que si pasa si lo llamara desde un contexto anidado en el flujoflowShowHoursAvailable
este es todo el código, deberia funcionar con copiar y pegar.Reproducir error
No response
Información Adicional
No response