[🐛] gotoFlow no hace capture ni entra en la funcion de callBack
decode9 opened this issue · comments
¿Que versión estas usando?
v2
¿Sobre que afecta?
Flujo de palabras (Flow)
Describe tu problema
Tengo problemas al realizar una captura utilizando goToFlow, estuve revisando el codigo fuente y no se si se deba que al realizar el goToFlow realiza un endFlow al final de la funcion
const gotoFlow =
(flag) =>
async (flowInstance, step = 0) => {
const promises = []
flag.gotoFlow = true
if (!flowInstance?.toJson) {
printer([
`[POSSIBLE_CIRCULAR_DEPENDENCY]: Se ha detectado una dependencia circular.`,
`Para evitar problemas, te recomendamos utilizar 'require'('./ruta_del_flow')`,
`Ejemplo: gotoFlow(helloFlow) --> gotoFlow(require('./flows/helloFlow.js'))`,
`[INFO]: https://bot-whatsapp.netlify.app/docs/goto-flow/`,
])
return
}
await delay(flowInstance?.ctx?.options?.delay ?? 0)
const flowTree = flowInstance.toJson()
const flowParentId = flowTree[step]
const parseListMsg = await this.flowClass.find(flowParentId?.ref, true, flowTree)
for (const msg of parseListMsg) {
const msgParse = this.flowClass.findSerializeByRef(msg?.ref)
const ctxMessage = { ...msgParse, ...msg }
// Enviar el mensaje al proveedor y guardarlo
await this.sendProviderAndSave(from, ctxMessage).then(() => promises.push(ctxMessage))
}
await endFlow(flag)(promises)
return
}
Mi Codigo es el siguiente
import whatsappBot from "@bot-whatsapp/bot";
import data from "../../data/availability.json" assert { type: "json" };
import rooms from "../../data/roomsAvailable.json" assert { type: "json" };
import { GoodbyeFlow } from "../getStarted/endFlow.js";
const { addKeyword } = whatsappBot;
export const createFlowSearch = (hotels) => {
return whatsappBot.addKeyword(['FLOW_SEARCH']).addAnswer(
[
'Hoteles disponibles',
...hotels.map((hotel) => {
return `👉 ${hotel["Hotel Name"]}`
}),
"\n Indique el hotel deseado",
],
{ capture: true },
(ctx, { fallBack, gotoFlow }) => {
console.log("Mensaje entrante: ", ctx.body);
}
)
}
export const flowCotizar = addKeyword("1").addAnswer(
[
"Elige entre las siguientes ciudades:",
"👉 *New York*",
"👉 *Los Angeles*",
"👉 *Chicago*",
"👉 *San Francisco*",
"👉 *Miami*",
"👉 *Las Vegas*",
"👉 *Orlando*",
"👉 *Seattle*",
"👉 *Boston*",
"👉 *Washington*",
"\n*0* Para volver al menú principal.",
],
{ capture: true },
async (ctx, { fallBack, gotoFlow, flowDynamic }) => {
const result = data.filter((hotel) => hotel.City === ctx.body);
if (result.length === 0) {
return fallBack();
}
await gotoFlow(createFlowSearch(result))
},
[GoodbyeFlow]
)
Una captura de la conversacion
Captura de la consola donde no muestra el console log de Mensaje entrante:
Si utilizo dicho flow como un nested si entra en la funcion que hace la captura de datos, pero no lo hace cuando utilizo gotoFlow.
Dependencias utilizadas
"@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest",
"@bot-whatsapp/portal": "latest",
"@bot-whatsapp/provider": "latest",
Si necesitan alguna informacion adicional a la orden, muchas gracias.
Reproducir error
No response
Información Adicional
No response
Lo pudiste solucionar tengo el mismo error :(
¿Alguna novedad sobre esta ISSUE?