Saltar al contenido principal

🛠️ Módulo 2: Entorno de desarrollo con bot-whatsapp

En este módulo configuraremos el entorno para construir chatbots con bot-whatsapp. Veremos la instalación CLI, estructura del proyecto, explicaremos el código base y crearemos un primer flujo funcional.


2.1 Requisitos del sistema

Asegúrate de tener:

  • ✅ Node.js v16+ (versión LTS recomendada)
  • ✅ Git
  • ✅ Editor de código como VSCode
  • ✅ Terminal compatible (CMD, PowerShell, Git Bash, terminal de Linux/macOS)
  • ✅ Cuenta de WhatsApp (para pruebas con un proveedor como Baileys, Meta, Evolution, etc.)

Verifica tu instalación:

node -v
npm -v

2.2 Instalación con CLI y configuración del bot

La forma más rápida de iniciar es usando el CLI oficial:

npm create bot-whatsapp@latest

Este comando descarga una plantilla de bot personalizable, detecta tu versión de Node.js y sistema operativo, y configura automáticamente las dependencias necesarias como @bot-whatsapp/bot, @bot-whatsapp/cli, adaptadores de base de datos y de proveedor.


2.3 Instalación manual de dependencias

npm init -y
npm install @bot-whatsapp/bot @bot-whatsapp/provider-baileys @bot-whatsapp/database-json
npm install --save-dev nodemon

2.4 Código base con Baileys

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

const QRPortalWeb = require("@bot-whatsapp/portal");
const BaileysProvider = require("@bot-whatsapp/provider/baileys");
const MockAdapter = require("@bot-whatsapp/database/mock");

const flowPrincipal = addKeyword(["hola", "ole", "alo"]).addAnswer(
"🙌 Hola, bienvenido a este *Curso de desarrollo de Chatbot con Node.js*! "
);

const main = async () => {
const adapterDB = new MockAdapter();
const adapterFlow = createFlow([flowPrincipal]);
const adapterProvider = createProvider(BaileysProvider);

createBot({
flow: adapterFlow,
provider: adapterProvider,
database: adapterDB,
});

QRPortalWeb();
};

main();

🧠 Explicación del código

1️⃣ Importación de funciones principales

Estas funciones de @bot-whatsapp/bot son el corazón del chatbot:

  • createBot() → inicia el bot.
  • createProvider() → conecta con WhatsApp.
  • createFlow() → une los flujos de conversación.
  • addKeyword() → define las palabras clave que activan respuestas.

2️⃣ Dependencias externas

  • QRPortalWeb: genera una interfaz web para escanear el código QR.
  • BaileysProvider: usa la API Baileys para conectarse a WhatsApp Web.
  • MockAdapter: base de datos temporal para pruebas locales.

3️⃣ Flujo principal

Define un flujo simple con una palabra clave y una respuesta:

const flowPrincipal = addKeyword(["hola", "ole", "alo"]).addAnswer(
"🙌 Hola, bienvenido a este *Curso de desarrollo de Chatbot con Node.js*! "
);

📩 Si el usuario escribe “hola”, “ole” o “alo”, el bot responderá con el mensaje definido.

4️⃣ Función principal main()

Aquí se configuran los adaptadores:

VariableRolDescripción
adapterDBBase de datosGuarda el historial de conversaciones.
adapterFlowFlujosUne todos los flujos definidos.
adapterProviderProveedorConecta con WhatsApp (Baileys).

5️⃣ Creación del bot

createBot({
flow: adapterFlow,
provider: adapterProvider,
database: adapterDB,
});

Combina los tres adaptadores para inicializar el bot.

6️⃣ Mostrar el QR

QRPortalWeb();

Muestra un QR en el navegador (http://localhost:3000) para vincular tu cuenta de WhatsApp.

7️⃣ Ejecutar el bot

main();

Llama a la función principal y ejecuta todo el flujo.

✅ Resumen

ConceptoDescripción
addKeyword()Define las palabras clave que activan una respuesta.
addAnswer()Envía un mensaje de texto o multimedia.
createFlow()Agrupa varios flujos.
createProvider()Conecta con el proveedor de WhatsApp.
MockAdapterGuarda los mensajes temporalmente.
QRPortalWeb()Muestra el QR para conectar el bot.

📦 Próximo módulo

En el Módulo 3, exploraremos flujos avanzados: flowDynamic, gotoFlow, state, captura de datos y estructura modular del chatbot.