Envío de SMS
Requisitos previos de acceso
- Permiso (módulo): acceso otorgado por el guard administrativo de la ruta (
admin). No existe un módulo dinámico específico para esta pantalla. - Licencia/Feature: Ninguna.
- Contenedor del menú: GENERAL → grupo Comunicación (ícono
campaign) → Envío de SMS.
Qué es / cuándo usar
Pantalla para crear y programar envíos masivos de SMS o a una lista específica de destinatarios. La mecánica es idéntica a la de Envío de e-mail: cada envío se convierte en una "acción masiva" (MassActions con action = 'SMS') que entra en la cola del CommunicationScheduler. Úsela para avisos breves, confirmaciones y campañas por canal SMS.
Requisitos previos
- Permiso: ítem bajo el guard
adminde la ruta. El permiso en Axia es doble (enum CPM en el backend + módulo dinámico en la DB); el gate efectivo aquí es el guard de ruta — valide el perfil administrativo. - Licencia/Feature: ninguna.
- Dependencias de otras pantallas: en el modo Individual, el destinatario se valida contra la base de usuarios (misma verificación que el e-mail).
Paso a paso
- Acceda al menú Comunicación → Envío de SMS.
- La pantalla lista los envíos existentes (columnas Cuándo, Asunto, Estado, editar/eliminar).
- Haga clic en Nuevo / Crear para abrir el modal.
- Elija el público: Todos (
all) o Individual (single). - En el modo Individual, agregue cada destinatario (validado contra la base, se convierte en chip).
- Complete Mensaje y Fecha.
- Confirmar. El envío entra en la cola.
Campos
Listado
| Columna | Qué muestra | Origen del dato |
|---|---|---|
Cuándo (when) | Fecha de creación/programación | MassActions.when/scheduleTo |
Asunto (subject) | Para SMS se almacena vacío | MassActions.subject (cadena vacía en SMS) |
| Estado | CREATED/PENDING, EXECUTED, CANCELLED | MassActions.status |
| Editar / Eliminar | Reabre el modal / cancela (marca CANCELLED) | — |
Modal de creación/edición
| Campo | Qué es | ¿Obligatorio? | Efecto en el sistema/backend |
|---|---|---|---|
| Público (Todos / Individual) | Toda la base o lista específica | Sí | all = true encola un registro PENDING por usuario de la base; all = false por destinatario de la lista. En modo edición, el público queda bloqueado. |
| E-mail/destinatario (solo en modo Individual) | Identifica al usuario objetivo | Condicional (≥1 en modo Individual) | Validado contra la base vía getUserByEmailWallet; solo se acepta quien existe. Se convierte en chip. |
Mensaje (message) | Texto del SMS | Sí | Almacenado en MassActions.message. A diferencia del e-mail, no hay campo de asunto (almacenado vacío). |
Fecha (when) | Fecha a partir de la cual puede ser procesado | Sí | Mínimo = hoy. El scheduler se ejecuta cada 30 minutos. |
Acciones y modales
- Crear (Confirmar): crea la
MassActions(action = 'SMS',status = 'CREATED') y los destinatariosPENDING. La pantalla se recarga. - Editar: ajusta Mensaje y Fecha; el público y la lista quedan solo lectura. Guardar devuelve el envío a
CREATED. - Eliminar: marca
CANCELLED(no borra).
Reglas de negocio / precauciones
Atención
- Advertencia sobre entrega de SMS: en el
CommunicationScheduleractual, la ramaaction === 'SMS'del lazo de procesamiento está vacía (sin implementación de envío real). En la práctica, los envíos de SMS creados en esta pantalla se registran y programan, pero el envío real depende de la implementación del proveedor de SMS en el scheduler. Confirme con el equipo de plataforma si el canal SMS está activo en el ambiente antes de prometer entrega al cliente. El flujo de e-mail, en cambio, sí es procesado efectivamente. - El destinatario individual solo se acepta si existe en la base.
- El envío no es inmediato: depende del ciclo de 30 min del scheduler.
Irreversible
- Una vez enviado por el proveedor, no hay rollback del SMS. Cancelar solo impide los envíos que aún están
PENDING.
- Idempotencia: procesamiento por destinatario (
PENDING→EXECUTED); la re-ejecución no reenvía a quienes ya lo recibieron.