🛠️ 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:
| Variable | Rol | Descripción |
|---|---|---|
adapterDB | Base de datos | Guarda el historial de conversaciones. |
adapterFlow | Flujos | Une todos los flujos definidos. |
adapterProvider | Proveedor | Conecta 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
| Concepto | Descripció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. |
| MockAdapter | Guarda 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.