34 Envio de Recordatorios por WhatsApp API y Email en 1 Click Envio de Comprobante de Pagos Laravel
Duración: 13 minDescripción
🎓 Lección 34: Envío de Recordatorios por WhatsApp API, Mailtrap y Comprobantes de Pago en Laravel
Objetivo General: Configurar la infraestructura de notificaciones omnicanal en el sistema odontológico para enviar automáticamente recordatorios de citas por WhatsApp y correo electrónico (SMTP Mailtrap), además de adjuntar comprobantes de pago en PDF mediante acciones de un solo clic.
🚀 Pasos Clave con Timestamps
- ⏱️ 00:00 📌 Introducción y Estado de Caja/Pagos: Resumen del progreso de la lección previa sobre pagos parciales/completados y la necesidad de gestionar el campo recordatorio_enviado de las citas.
- ⏱️ 00:01:31 🤝 Comunidad y Respuestas: Bienvenida a nuevos miembros y resolución de dudas técnicas sobre vistas en Blade y compatibilidad con plantillas.
- ⏱️ 00:04:35 🛠️ Configuración del Entorno de Pruebas SMTP: Explicación y registro en Mailtrap Sandbox para capturar correos en entorno local sin enviar emails reales a pacientes.
- ⏱️ 00:05:42 ⚙️ Ajuste de Variables de Entorno .env: Configuración del protocolo SMTP (MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD) y dirección remitente (MAIL_FROM_ADDRESS).
- ⏱️ 00:07:43 🛣️ Definición de Rutas y Controladores: Creación de endpoints HTTP en web.php para disparar el envío de recordatorios por WhatsApp, email y emisión de comprobantes en CitaController y PagoController.
- ⏱️ 00:08:48 📱 Plantilla de Enlace de WhatsApp API: Implementación de la lógica en el modelo Cita para formatear el mensaje con plantilla dinámica (wa.me) que incluye datos del paciente, fecha, hora y doctor.
- ⏱️ 00:09:13 📧 Modelado y Clases Mailable: Creación y vinculación del modelo Paciente con User para extraer el correo, definiendo las clases Mailable CitaConfirmacionMail y ComprobantePagoMail.
- ⏱️ 00:10:08 🌐 Diseño de Vistas y Botones de Acción: Integración de los botones de interacción en la vista Blade de citas para disparar las peticiones de notificación.
- ⏱️ 00:10:39 📲 Prueba de Notificación vía WhatsApp: Demostración interactiva de cómo la plataforma redirige al chat de WhatsApp con el mensaje estructurado de confirmación de cita.
- ⏱️ 00:12:03 ⚡ Optimización y Limpieza de Caché: Ejecución del comando de optimización en Laravel para refrescar la configuración cargada desde el archivo .env.
- ⏱️ 00:12:38 📬 Verificación de Email en Mailtrap: Visualización de la plantilla HTML recibida en el Sandbox con el diseño adaptativo y detalles de la consulta médica.
- ⏱️ 00:13:37 📄 Envío de Comprobante de Pago Adjunto (PDF): Demostración del envío automatizado de recibos y facturas en formato PDF adjunto al correo del paciente.
- ⏱️ 00:14:40 🏁 Cierre del Desarrollo y Preparación para Despliegue: Conclusión de la construcción del sistema y planteamiento del siguiente paso: despliegue a producción en el servidor.
🛠️ Comandos y Rutas Principales
| Tipo / Capa | Comando / Ruta | Propósito |
|---|---|---|
| 💻 Artisan | php artisan optimize:clear | Limpia las cachés de configuración, rutas y vistas tras actualizar el archivo .env. |
| 💻 Artisan | php artisan make:mail CitaConfirmacionMail | Genera la clase Mailable encargada de estructurar el correo del recordatorio. |
| 💻 Artisan | php artisan make:mail ComprobantePagoMail | Crea la clase Mailable para adjuntar el PDF de recibos de pago. |
| 🌐 Ruta HTTP | GET /citas/{id}/recordatorio-whatsapp | Marca la cita como notificada y genera el enlace directo de WhatsApp API. |
| 🌐 Ruta HTTP | POST /citas/{id}/recordatorio-email | Procesa y despacha el correo electrónico de recordatorio al paciente. |
| 🌐 Ruta HTTP | POST /pagos/{id}/enviar-comprobante | Genera el comprobante en PDF y lo envía al correo registrado del paciente. |
🔒 Buenas Prácticas y Seguridad
- 🔐 Protección de Credenciales Sensibles: Mantener la configuración del servidor de correo (MAIL_USERNAME, MAIL_PASSWORD) únicamente dentro del archivo .env sin exponer credenciales en el repositorio de control de versiones.
- 🚀 Procesamiento Asíncrono con Colas (Queues): Utilizar la interfaz ShouldQueue en los Mailables (Mail::to()->queue()) para evitar retardos en la respuesta HTTP del usuario mientras se conecta con los servidores SMTP.
- 🧹 Gestión y Limpieza de Caché de Configuración: Ejecutar php artisan optimize:clear en entornos de desarrollo y php artisan config:cache en producción para garantizar que Laravel aplique los valores más recientes del entorno.
- 📱 Escape y Codificación de URLs de WhatsApp: Utilizar urlencode() al construir parámetros del enlace de WhatsApp API ([https://wa.me/NUMBER?text=](https://wa.me/NUMBER?text=)...) para asegurar que espacios, tildes y caracteres especiales se interpreten correctamente.