Un bot inteligente de WhatsApp que utiliza la API de OpenAI para proporcionar respuestas conversacionales naturales. Admite múltiples tipos de contenido multimedia y búsqueda en documentos utilizando vector stores.
- 🗣️ Conversaciones naturales con GPT-4.1
- 📷 Análisis de imágenes con visión artificial
- 📄 Búsqueda inteligente en documentos usando vector stores
- 🌍 Soporte multimedia completo: texto, imágenes, audio, documentos, ubicaciones, contactos y stickers
- 🔄 Reenvío automático de contenido multimedia
- 🚀 Respuestas en tiempo real a través de webhooks
- 🛡️ Verificación segura de webhooks
- 📊 Logging detallado para debugging
- 🔧 Endpoints de prueba integrados
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ WhatsApp │ │ WaChat Bot │ │ OpenAI API │
│ Cloud API │◄──►│ (FastAPI) │◄──►│ GPT-4.1 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Vector Store │
│ File Search │
└─────────────────┘
git clone <repository-url>
cd wachatpip install -r requirements.txtCrea un archivo .env en la raíz del proyecto:
# WhatsApp Cloud API
WHATSAPP_TOKEN=tu_token_de_whatsapp
PHONE_NUMBER_ID=tu_phone_number_id
VERIFY_TOKEN=tu_token_de_verificacion
# OpenAI API
OPENAI_API_KEY=tu_api_key_de_openai
VECTOR_STORE_ID=tu_vector_store_id
# Opcional
ENVIRONMENT=development# Desarrollo
uvicorn app:app --reload --host 0.0.0.0 --port 8000
# Producción
uvicorn app:app --host 0.0.0.0 --port 8000-
Crear una aplicación en Meta for Developers
-
Configurar WhatsApp Business API
-
Obtener credenciales:
WHATSAPP_TOKEN: Token de acceso de la aplicaciónPHONE_NUMBER_ID: ID del número de teléfono de WhatsApp BusinessVERIFY_TOKEN: Token personalizado para verificación de webhook
-
Configurar webhook:
- URL:
https://tu-dominio.com/webhook - Verificar token: el mismo valor que
VERIFY_TOKEN - Suscribirse a:
messages
- URL:
- Obtener API Key de OpenAI Platform
- Crear Vector Store (opcional) para búsqueda en documentos
- Cargar documentos al vector store para respuestas basadas en conocimiento
| Tipo | Descripción | Procesamiento IA | Reenvío |
|---|---|---|---|
| 📝 Texto | Mensajes de texto plano | ✅ Conversación natural | ❌ |
| 📷 Imágenes | Fotos y capturas | ✅ Análisis visual | ✅ Con descripción |
| 🎵 Audio | Mensajes de voz | ✅ Reconocimiento de contexto | ✅ |
| 📄 Documentos | PDFs, Word, etc. | ✅ Procesamiento de contenido | ✅ Con resumen |
| 📍 Ubicaciones | Coordenadas GPS | ✅ Información contextual | ✅ |
| 👤 Contactos | Información de contactos | ✅ Procesamiento de datos | ❌ |
| 😀 Stickers | Emojis animados | ✅ Interpretación emocional | ✅ |
GET /webhook- Verificación de webhook de WhatsAppPOST /webhook- Recepción de mensajes de WhatsApp
GET /- Estado básico del botGET /health- Verificación detallada del entorno
POST /test-whatsapp- Enviar mensaje de pruebaPOST /test-file-search- Probar búsqueda en documentos
Usuario: "¿Cuál es la capital de Francia?"
Bot: "La capital de Francia es París. Es conocida como la Ciudad de la Luz y es famosa por la Torre Eiffel, el Louvre y su rica historia cultural."
Usuario: [Envía foto de un gato]
Bot: "¡Qué hermoso gato! Puedo ver que es un felino doméstico con pelaje [descripción]. Los gatos son mascotas maravillosas conocidas por su independencia y cariño."
Usuario: "¿Cuáles son las políticas de la empresa sobre trabajo remoto?"
Bot: [Busca en documentos cargados] "Según las políticas de la empresa, el trabajo remoto está permitido hasta 3 días por semana..."
Este proyecto incluye configuración para despliegue en Render:
- Conectar repositorio en Render
- Configurar variables de entorno en el dashboard
- Desplegar automáticamente con
render.yaml
Las variables de entorno requeridas se configuran automáticamente según render.yaml.
wachat/
├── app.py # Aplicación principal FastAPI
├── requirements.txt # Dependencias Python
├── render.yaml # Configuración de despliegue
├── .env # Variables de entorno (crear)
└── README.md # Este archivo
get_openai_response_with_media()- Genera respuestas IA con soporte multimediasend_whatsapp_message()- Envía mensajes de textosend_whatsapp_media()- Envía contenido multimediadownload_media_file()- Descarga archivos de WhatsAppextract_message_data()- Procesa webhooks entrantes
El bot incluye logging detallado para debugging:
- Mensajes entrantes y salientes
- Errores de API
- Procesamiento de multimedia
- Respuestas de OpenAI
- ✅ Verificación de tokens de webhook
- ✅ Validación de variables de entorno
- ✅ Manejo seguro de credenciales
- ✅ Logging sin exposición de datos sensibles
- Fork el proyecto
- Crear una rama feature (
git checkout -b feature/nueva-caracteristica) - Commit los cambios (
git commit -m 'Agregar nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Abrir un Pull Request
Este proyecto está bajo la licencia MIT. Ver el archivo LICENSE para más detalles.
Si encuentras algún problema o tienes preguntas:
- Revisa los logs del servidor para errores específicos
- Verifica las variables de entorno con
/health - Prueba los endpoints con
/test-whatsappy/test-file-search - Abre un issue en GitHub con detalles del problema
WaChat Bot - Transformando conversaciones de WhatsApp con IA 🚀