Closed devrlbusiness closed 1 year ago
Dejare esto para tenerlo como base de pruebas
const {
createBot,
createProvider,
createFlow,
addKeyword,
} = require('@bot-whatsapp/bot')
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
const MockAdapter = require('@bot-whatsapp/database/mock')
const delay = (ms) => new Promise((res) => setTimeout(res, ms))
/***
* Simular peticion async http 0.5 segundos
*/
const fakeHTTP = async (fakeData = []) => {
console.log('⚡ Server request!')
await delay(1500)
console.log('⚡ Server return!')
const data = fakeData.map((u, i) => ({ body: `${i + 1} ${u}` }))
console.log(data)
return Promise.resolve(data)
}
const flujoPrincipal = addKeyword(['hola'])
.addAnswer(
'🤐 Bienvenido te envio muchas marcas (5510)',
null,
async (ctx, { flowDynamic }) => {
console.log('execute...')
const data = await fakeHTTP(['Ford', 'GM','BMW'])
return flowDynamic(data)
}
)
.addAnswer(
'🙌 Seleccione marca del auto a cotizar, con el *número* correspondiente',
null,
async (ctx, { flowDynamic }) => {
const data = await fakeHTTP(['Ranger', 'Explorer'])
return flowDynamic(data)
}
)
.addAnswer(
'🚗 Seleccione la sub marca del auto a cotizar, con el *número* correspondiente:',
null,
async (ctx, { flowDynamic }) => {
const data = await fakeHTTP(['Usado', 'Nuevos'])
return flowDynamic(data)
}
)
.addAnswer(
'⚡ Los precios rondan:',
null,
async (ctx, { flowDynamic }) => {
const data = await fakeHTTP(['1000', '2000','3000'])
return flowDynamic(data)
}
)
const main = async () => {
const adapterDB = new MockAdapter()
const adapterFlow = createFlow([flujoPrincipal])
const adapterProvider = createProvider(BaileysProvider)
createBot({
flow: adapterFlow,
provider: adapterProvider,
database: adapterDB,
})
}
main()
Probar con esta version!
npm install @bot-whatsapp/bot@0.0.73-alpha.0
@devrlbusiness
Buenos días Leifer,
A mi me da el mismo error cuando uso flowDynamics, así que instale el bot:
npm create bot-whatsapp@latest (baileys-memory)
me cambié al directorio base, instalé y después corrí:
npm install @bot-whatsapp/bot@0.0.73-alpha.0 @devrlbusiness
Y funciona al parecer todo bien ... pero noté que si agrego un segundo addAnswer y trato de usar una variable del flowDynamic ahí, no la muestra, y en addAnswers's posteriores SI, te pongo aquí el ejemplo para que quede más claro:
let externa = ""
/***
* Simular peticion async http 0.5 segundos
*/
const fakeHTTP = async (fakeData = []) => {
console.log('⚡ Server request!')
const data = "Este es un texto desde el servidor"
return Promise.resolve(data)
}
const flowPrincipal = addKeyword(['hola', 'alo', 'ole'])
.addAnswer('🙌 Ingresa un texto.',{capture:true},
async (ctx, {flowDynamic})=> {
console.log('Callback 1')
const a = await fakeHTTP(ctx.body)
flowDynamic([{body:a}])
externa = ctx.body
console.log("externa=",externa)
}
)
.addAnswer("HOLA 1 : |" + externa + "|", {capture:true}, //Aqui trato de mostrar la variable "externa" y NO SE VE.
(ctx, {flowDynamic}) => {
console.log("callback 2")
externa = ctx.body
console.log("externa=" + externa)
flowDynamic([{body:"HOLA 2 : |" + externa + "|"}]) //Aqui Si se ve
}
)
.addAnswer("HOLA 3 : |" + externa + "|", {capture:true}, //Aqui Si se ve
(ctx, {flowDynamic}) => {
console.log("callback 3")
externa = ctx.body
console.log("externa=" + externa)
flowDynamic([{body:"HOLA 4 : |" + externa + "|"}]) //Aqui Si se ve
}
)
Saludos
Excelente trabajo @leifermendez quedo espectacular @cheveguerra dentro de los addAnswer no hagas asignaciones por que es inmutable lo que hagas dentro de esta función, lo que yo hice enviarme a una función fuera del addAnswer el texto guardarlo en una variable global y listo
@devrlbusiness por confirmar ya funcionó bien ?
FIX: #533
¿Cual proveedor usaste?
bailey
¿Cual base de datos usaste?
memory
Conclusion de la prueba
muy buena
Describe tu caso
Error al concatenar
¿Logs Importantes?
No response
Información Adicional
¿Quieres que te mencionemos?
No response