Laravel Reverb Chat es un sistema de mensajería en tiempo real construido con Laravel Reverb, que permite la comunicación instantánea entre usuarios. Este proyecto incorpora buenas prácticas de desarrollo, separación de responsabilidades y funcionalidad extendida mediante integración con la API de OpenAI para respuestas automáticas.
- Eventos en tiempo real:
MessageReadEventMessageSentEventUserTypingEvent
- Controladores:
ConversationControllerpara la gestión de conversaciones.MessageControllerpara la administración de mensajes.
- Integración con Axios para manejar los datos JSON en las vistas.
- Laravel Echo para gestionar las suscripciones en tiempo real.
- Chatbot integrado usando la API de OpenAI con el modelo GPT-4o-mini.
- Autorización de conversaciones mediante policies.
- PHP >= 8.2
- Composer
- Node.js & npm
- MySQL/SQLite
- Laravel 10/11
- Laravel Reverb
- Laravel Echo JS
- Axios
- Laravel Open AI
- Open AI API KEY
- Clonar el repositorio
git clone https://github.com/StevenU21/laravel-reverb-chat.git- Instalar dependencias
composer install
npm install- Configurar el entorno
Copiar el archivo
.env.exampley renombrarlo como.env. Luego, configurar las siguientes variables:
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
LARAVEL_ECHO_SERVER_PORT=6001
OPENAI_API_KEY=tu-clave-api- Migrar la base de datos
php artisan migrate- Levantar el servidor
- Para iniciar el servicio Reverb en modo normal:
php artisan reverb:start
- Para iniciar con depuración:
php artisan reverb:start ---debug
- Crear una conversación:
- Una conversación solo puede incluir a dos participantes.
- Enviar y recibir mensajes:
- Los mensajes se sincronizan en tiempo real entre ambos usuarios.
- Interacciones con el chatbot:
- Haz preguntas al chatbot integrado y recibe respuestas basadas en GPT-4o-mini.
- Services:
ChatbotServicepara manejar la lógica del chatbot.
- Requests personalizados:
ChatbotRequestMessageRequestConversationRequest
- Policies:
ConversationPolicyasegura que solo los usuarios participantes puedan acceder a una conversación.
- Eventos:
- Manejo eficiente de eventos en tiempo real.
- Laravel Reverb: Comunicación en tiempo real.
- Laravel Echo: Integración con WebSockets.
- Axios: Para manejar solicitudes HTTP desde las vistas.
- Redis: Como backend para colas y broadcasting.
- OpenAI GPT-4o-mini: Para funcionalidades de chatbot.
- Policies:
- Implementadas para asegurar que solo los usuarios autorizados puedan acceder a sus respectivas conversaciones.
- Validación de Requests:
- Uso de Requests personalizados para garantizar datos consistentes y seguros.
- Iniciar el servicio Reverb:
php artisan reverb:start
- Modo depuración:
php artisan reverb:start ---debug