Este bot de WhatsApp está construido utilizando BuilderBot y puede procesar mensajes de texto, notas de voz y documentos PDF.
- Node.js v21 o superior
- pnpm (recomendado) o npm
- Una instancia de n8n corriendo con el flujo de trabajo configurado
- WhatsApp en tu teléfono móvil
- Clona este repositorio:
git clone https://github.com/zanellig/whatsapp-bot.git
cd whatsapp-bot
- Instala las dependencias:
pnpm install
- Crea un archivo
.env
en la raíz del proyecto con la siguiente variable:
API_ENTRY=http://tu-servidor-n8n:puerto/webhook/tu-webhook-id
- Asegúrate de tener n8n instalado y corriendo
- Crea tres flujos de trabajo separados:
- Uno para procesar mensajes de texto
- Otro para procesar notas de voz (archivos de audio)
- Otro para procesar documentos PDF
- Configura un webhook en n8n que acepte:
- Peticiones POST para mensajes de texto
- Peticiones POST con archivos multipart/form-data para notas de voz y PDFs
- El webhook debe devolver el texto que quieres que el bot responda
Para ejecutar el bot en modo desarrollo:
pnpm dev
Para compilar y ejecutar en producción:
pnpm build
pnpm start
También puedes ejecutar el bot usando Docker:
- Asegúrate de que tu archivo
.env
contenga las siguientes variables:
API_ENTRY=http://tu-servidor-n8n:puerto/webhook/tu-webhook-id
PORT=3008
- Construye la imagen:
docker build -t whatsapp-bot .
- Ejecuta el contenedor:
docker run \
-d --name whatsapp-bot-container \
-p 3008:3008 \
--env-file .env \
whatsapp-bot
Este comando:
- Ejecuta el contenedor en modo detached (-d)
- Le asigna un nombre al contenedor (--name whatsapp-bot-container)
- Mapea el puerto 3008 del contenedor al puerto 3008 del host (-p 3008:3008)
- Carga las variables de entorno desde el archivo .env (--env-file .env)
El proyecto está organizado de la siguiente manera:
src/app.ts
: Punto de entrada de la aplicaciónsrc/flows/
: Contiene los flujos de conversacióntext-flow.ts
: Maneja mensajes de textovoice-note-flow.ts
: Maneja notas de vozpdf-flow.ts
: Maneja documentos PDF
src/utils/
: Utilidades generalesfile-transformer.ts
: Transformación de archivos para envíotmp-dir.ts
: Gestión de directorios temporales
- Procesamiento de mensajes de texto
- Procesamiento de notas de voz
- Procesamiento de documentos PDF
- Integración con n8n para el procesamiento de mensajes
- Almacenamiento temporal de archivos
- Sistema de respuestas dinámicas
- Soporte para múltiples formatos de audio (.mp3, .wav, .m4a, .ogg)
- Al iniciar el bot por primera vez, necesitarás escanear un código QR con WhatsApp para autenticar la sesión
- Asegúrate de que la URL en
API_ENTRY
sea accesible desde donde se ejecuta el bot - Los archivos temporales se almacenan en el directorio
tmp/
y se limpian automáticamente - El puerto predeterminado es 3008, pero puede cambiarse mediante la variable de entorno
PORT
Si encuentras problemas:
- Verifica que las variables de entorno estén correctamente configuradas
- Asegúrate de que n8n esté accesible desde el bot
- Comprueba los logs para mensajes de error
- Verifica que el teléfono con WhatsApp tenga conexión a internet
Las contribuciones son bienvenidas. Por favor, asegúrate de seguir las guías de estilo existentes y ejecutar el linter antes de enviar un PR:
pnpm lint