34 Envio de Recordatorios por WhatsApp API y Email en 1 Click Envio de Comprobante de Pagos Laravel

Duración: 13 min
Módulo: Notificaciones, Finanzas & Seguridad de Datos Lección 2 de 6

Descripció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:03Optimizació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 / CapaComando / RutaPropósito
💻 Artisanphp artisan optimize:clearLimpia las cachés de configuración, rutas y vistas tras actualizar el archivo .env.
💻 Artisanphp artisan make:mail CitaConfirmacionMailGenera la clase Mailable encargada de estructurar el correo del recordatorio.
💻 Artisanphp artisan make:mail ComprobantePagoMailCrea la clase Mailable para adjuntar el PDF de recibos de pago.
🌐 Ruta HTTPGET /citas/{id}/recordatorio-whatsappMarca la cita como notificada y genera el enlace directo de WhatsApp API.
🌐 Ruta HTTPPOST /citas/{id}/recordatorio-emailProcesa y despacha el correo electrónico de recordatorio al paciente.
🌐 Ruta HTTPPOST /pagos/{id}/enviar-comprobanteGenera el comprobante en PDF y lo envía al correo registrado del paciente.

🔒 Buenas Prácticas y Seguridad

  1. 🔐 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.
  2. 🚀 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.
  3. 🧹 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.
  4. 📱 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.