Conceptos

El desarrollo de la librería se base en tres (3) piezas claves para su correcto funcionamiento:

  • Flow: Encargado de construir todo el contexto de la conversación, finalmente su objetivo es brindar una capa amigable al desarrollador.
  • Provider: Como si de un conector se tratara el objetivo es poder cambiar facilmente de proveedor de Whatsapp en minutos sin el riesgo de dañar otras partes del bot
  • Database: Siguiendo la linea de pensamiento de conectores, de igual manera que el provider nos brinda la capacidad de poder cambiar de capa de persistencia de datos (guardar datos) sin invertir tiempo en reescribir nuestro flujo.

Flow

Los flujos hacen referencia al hecho de construir un flujo de conversacion. Esto es un flow podemos observar que estan presentes dos metodos importantes addKeyword y addAnswer.

Tan sencillo como decir palabra/s clave y mensaje a responder

Ambos metodos addKeyword y addAnswer tienen una serie opciones disponibles.

const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot')

const flowPrincipal = addKeyword(['hola', 'alo'])
    .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
    .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])

Provider

Es la pieza que conectara tu flujo con WhatsApp. En este chatbot tenemos varios proveedores disponibles la mayoria gratis pero tambien tenemos integración con la api oficial de whatsapp o twilio

const WhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
....
const adapterProvider = createProvider(WhatsappProvider)

Los proveedores disponibles hasta el momento son los siguientes:

whatsapp-web.js require('@bot-whatsapp/provider/web-whatsapp')

Venom require('@bot-whatsapp/provider/venom')

Baileys require('@bot-whatsapp/provider/baileys')

Meta Official require('@bot-whatsapp/provider/meta')

Twilio Official require('@bot-whatsapp/provider/twilio')


DataBase (Base de datos)

Es la pieza encargada de mantener el "historial" de una conversación, para mayor facilidad la libreria te proporcia diferentes conectores que se de adapten mejor a tu desarrollo

const MongoAdapter = require('@bot-whatsapp/database/mongo')
....
const adapterDB = new MongoAdapter({
    dbUri: 'mongodb://0.0.0.0:27017',
    dbName: 'db_bot',
})

Los conectores disponibles hasta el momento son los siguientes:

require('@bot-whatsapp/database/mock')

require('@bot-whatsapp/database/mongo')

require('@bot-whatsapp/database/mysql')

require('@bot-whatsapp/database/json')