Closed JoelVeloz closed 1 year ago
Considero que la funcionalidad 1 es fundamental para que tenga sentido el bot, ya que si el usuario no sabe como iniciar el flujo conversacional, no podría acceder a todas las opciones del bot. Se que ya se puede hacer un mensaje de bienvenida via ws bussiness, pero me gastaría tener mayor control de las opciones, haciendo la logia vía código.
Considero que la funcionalidad 1 es fundamental para que tenga sentido el bot, ya que si el usuario no sabe como iniciar el flujo conversacional, no podría acceder a todas las opciones del bot. Se que ya se puede hacer un mensaje de bienvenida via ws bussiness, pero me gastaría tener mayor control de las opciones, haciendo la logia vía código.
Con respecto a este ya tengo la tarea #496 ya estamos con ella!
hola @JoelVeloz buen dia,
con respecto a tu issue hemos generado un nuevo atributo llamado provider el cual se encargara de darte la libertad de usar las opciones que te genera el proveedor OJO EL PROVEEDOR no las funcionas nativas de whatsapp para ello te dejo el siguiente codigo de ejemplo, estamos haciendo uso del proveedor de baileys y estamos usando la funcion de baileys para enviar una Vcard
const flowVCard = addKeyword('vcard').addAnswer(':triangular_flag_on_post::triangular_flag_on_post::triangular_flag_on_post:', null, async (ctx, { provider }) => {
const id = ctx.key.remoteJid
const templateButtons = [
{index: 1, urlButton: {displayText: ':star: Star Baileys on GitHub!', url: 'https://github.com/adiwajshing/Baileys'}},
{index: 2, callButton: {displayText: 'Call me!', phoneNumber: '+1 (234) 5678-901'}},
{index: 3, quickReplyButton: {displayText: 'This is a reply, just like normal buttons!', id: 'id-like-buttons-message'}},
]
const templateMessage = {
text: "Hi it's a template message",
footer: 'Hello World',
templateButtons: templateButtons
}
const abc = await provider.getInstance()
await abc.sendMessage(id, templateMessage)
console.log('->', abc)
return
})
importante aun no se ha desplegado a publico esta funcion, sin embargo puedes hacer uso de ellas realizando la siguente instalacion en el terminal de tu proyecto de bot. npm i @bot-whatsapp/bot@dev npm i @bot-whatsapp/provider@dev
cualquuier duda o inquietud puedes gestionarla a travez del canal de discord.
ya desplegaron esta opcion?
me funciona con el texto..... pero cómo se hace con imágenes? quiero hacer algo como lo que viene así en la página del proveedor:
await sock.sendMessage( id, { video: "./Media/ma_gif.mp4", caption: "hello!", gifPlayback: true } )
///////////////////////// lo tengo así en mi app.js:
const flowProb = addKeyword('prov')
.addAction(
async (ctx, {provider}) =>{
Nombre = ctx.pushName
Telefono = 5215559099956@s.whatsapp.net
id = 5215559099956@s.whatsapp.net
const refProvider = await provider.getInstance()
//await refProvider.sendMessage(id, { text: texto del proveedor
})
await refProvider.sendMessage(id,
{
video: "https://renacerjusticiaylibertad.org/publia/gif/termipubliamex.gif",
caption: "hello!",
gifPlayback: true
}
)
} )
/////////////pero nada, tira el siguiente error:
TypeError: Cannot use 'in' operator to search for 'stream' in https://renacerjusticiaylibertad.org/publia/gif/termipubliamex.gif at getStream (C:\Users\Abraham\chatbot\publia\node_modules\baileys\lib\Utils\messages-media.js:229:18) at encryptedStream (C:\Users\Abraham\chatbot\publia\node_modules\baileys\lib\Utils\messages-media.js:278:58) at prepareWAMessageMedia (C:\Users\Abraham\chatbot\publia\node_modules\baileys\lib\Utils\messages.js:101:152) at generateWAMessageContent (C:\Users\Abraham\chatbot\publia\node_modules\baileys\lib\Utils\messages.js:327:53) at generateWAMessage (C:\Users\Abraham\chatbot\publia\node_modules\baileys\lib\Utils\messages.js:468:102) at Object.sendMessage (C:\Users\Abraham\chatbot\publia\node_modules\baileys\lib\Socket\messages-send.js:606:69) at Object.ans_2c39e980-db09-4320-85c2-324345ab3825 (C:\Users\Abraham\chatbot\publia\app.js:53:23) at async cbEveryCtx (C:\Users\Abraham\chatbot\publia\node_modules@bot-whatsapp\bot\lib\bundle.bot.cjs:775:13) at async resolveCbEveryCtx (C:\Users\Abraham\chatbot\publia\node_modules@bot-whatsapp\bot\lib\bundle.bot.cjs:751:55)
Node.js v18.15.0
¿Que versión estas usando?
v2
¿Sobre que afecta?
Flujo de palabras (Flow)
Describe tu problema
Como es posible poner funciones adicionales que dependan de variables externas al Mensaje. Considerando que en el proveedor podemos tenemos referencia a la clase de Message y sus atributos, me gastaría acceder a otras variables del propio cliente de ws.
Esto con el propósito de poder generar funcionalidades extras. Por ejemplo:
Como podría añadir un mensaje de bienvenida? Es decir que el usuario al mandar un mensaje, se le active un flow una sola vez por ser usuario nuevo, o por no haber enviado mensajes en las ultimas 48 horas, (Asumiria que requiero de obtener los mensajes respecto a un numero, pero cual es la función? y con que variable la ejecutaría?)
Si requiero que se envien mensajes programados con crons, en que seccion del código lo enviaría?
Si requiero que los flows solo de generen con sesiones, es decir que te mande un mensaje diciendo que si no responde se le enviara, se cerrara la conversación y tendrá que empezar desde el menu principal?
Toda esta lógica creo que podría ser posible obteniendo la referencia del cliente de Whatsapp y jugar con sus funciones, donde puedo obtener mas información de aquello?
Reproducir error
No response
Información Adicional
No response