Cargando…

Esto está tardando más de lo esperado.

Avisos

Publica un aviso para todos los usuarios por megáfono, correo y web push.

Los avisos son comunicados que un administrador publica para todos: una ventana de mantenimiento, una función nueva, un cambio de términos. Cada uno es una página dentro de la aplicación, una entrada en un desplegable con icono de megáfono y, opcionalmente, un correo. Esta guía cubre publicar, lo que ven los usuarios, cómo se registra la lectura y qué se envía.

Enciéndelo

Los avisos están apagados hasta que quien opera el producto los enciende; Para desarrolladores dice cómo. Mientras están encendidos, Anuncios aparece en el panel de administración, el megáfono aparece en la barra superior de la aplicación y cada cuenta tiene su lista de avisos. Mientras están apagados, no se ve nada de eso.

Publica uno

Abre Anuncios en el panel de administración y haz clic en Crear. El formulario:

Campo Reglas Notas
Título obligatorio, hasta 255 caracteres Se muestra en el desplegable, la lista, la página y el asunto del correo.
Slug opcional, único Si lo dejas vacío, se arma a partir del título. Es la última parte de la dirección web del aviso.
Descripción obligatorio Un editor de texto con formato: títulos, negritas, listas, enlaces. No tiene botón de imagen. Se muestra con formato en la página y en el correo.
Estado obligatorio, por omisión Borrador Borrador o Publicado. Sólo los avisos publicados son visibles para los usuarios.
Enviar correo electrónico por omisión apagado Si la publicación además envía un correo. Oculto en la lista y en la página de detalle.

El formulario de un anuncio

Dos campos más, Publicado en y Creado el, son de sólo lectura en la página de detalle.

No hay selector de audiencia ni publicación programada: cada aviso publicado llega a todas las cuentas en el momento en que lo guardas con el estado Publicado. Publica los borradores cuando lo digas en serio.

Lo que pasa al guardar:

  • Guardar con estado Publicado por primera vez llena Publicado en con la hora actual. Regresar a Borrador lo limpia; publicar de nuevo estampa una hora nueva, así que el aviso vuelve arriba como no leído para todos.
  • Cada vez que el estado se vuelve Publicado — al crear o tras un cambio — empiezan a salir los correos y los push. Editar el título o el cuerpo de un aviso que ya está publicado no envía nada.

Un aviso eliminado pasa a la vista de papelera de la lista, desde donde se puede restaurar. Quién puede crear, ver, editar y eliminar avisos se define en la fila Anuncio de la pantalla Roles; ve Roles y permisos.

Lo que ven los usuarios

El megáfono. La barra superior de la aplicación muestra un icono de megáfono junto a la campana de notificaciones. Una insignia roja lleva el número de avisos no leídos, hasta "9+". Al hacer clic se abre un desplegable con los diez avisos publicados más recientes, del más nuevo al más viejo, cada uno con su título y un extracto corto; los no leídos llevan un borde izquierdo de color. El desplegable tiene Marcar como leído, que marca todo como leído de una vez, y Ver todos los anuncios.

La lista. Anuncios, en la barra lateral de la cuenta, pagina los avisos publicados, diez por página, con título, un extracto más largo y fecha de publicación.

La página. Cada aviso abre en su propia página, con el texto completo, la fecha de publicación y un enlace de regreso a la lista. Sólo abren los avisos publicados; la página de un borrador no se encuentra.

Cómo se registra la lectura

Cada cuenta guarda un momento: la última vez que leyó los avisos. Un aviso está sin leer cuando se publicó después de ese momento, o cuando la cuenta nunca leyó ninguno. Dos cosas mueven ese momento a ahora: abrir la página de cualquier aviso, y Marcar como leído en el desplegable. Ambas marcan todos los avisos como leídos, no sólo uno.

No hay registro de lectura por aviso ni conteo de lecturas. El panel de administración no muestra nada sobre quién leyó qué; lo que sí guarda es qué correos salieron, descrito abajo.

Correo y web push

Cada cuenta recibe el aviso salvo las bloqueadas; las cuentas que no han verificado su correo sí entran. Cada cuenta lo recibe por estos canales:

Canal Se envía cuando
Correo Enviar correo electrónico está encendido para el aviso Y la cuenta tiene activado Notificarme por correo electrónico de todas las acciones de mi cuenta en su perfil.
Web push La cuenta encendió las notificaciones push en al menos un navegador, esté o no encendido Enviar correo electrónico. Ve Web push y la PWA.

El aviso no aparece en el centro de notificaciones; el megáfono es su lugar dentro de la aplicación. Una cuenta que no cumple ninguna de las dos condiciones no recibe nada más que la insignia del megáfono.

El correo usa el diseño de correo estándar de la aplicación: el asunto es el nombre de la aplicación seguido del título, el cuerpo es el texto del aviso, y un botón Leer anuncio abre la página del aviso. Cada correo que de verdad se envía queda registrado en Registros de comunicación, en el panel de administración, con el destinatario, el asunto y el cuerpo; un envío fallido también queda registrado ahí con su estado. Ese registro es lo más cercano a un reporte de entrega que ofrece el panel.

Los correos y los push se envían en segundo plano, un momento después de publicar: el aviso queda publicado y visible en el megáfono de inmediato. Antes de encender Enviar correo electrónico para una base de usuarios grande, asegúrate de que el envío de correo funciona: una publicación envía un correo por cuenta.

Para desarrolladores

Opción Variable de entorno Por omisión Qué cambia
features.announcements FEATURE_ANNOUNCEMENTS false Encendida: el recurso Announcements aparece en /admin/announcements, el desplegable del megáfono aparece en la barra superior de la aplicación y /account/announcements abre. Apagada: el recurso se oculta y sus rutas devuelven 403, las páginas de cuenta devuelven 404, el desplegable no se dibuja.

FEATURE_ANNOUNCEMENTS no está en .env.example; agrégala tú.

FEATURE_ANNOUNCEMENTS=true

La bandera se lee desde config/features.php, así que surte efecto después de php artisan config:clear cuando la configuración está en caché.

  • El formulario. El slug es el último segmento de /account/announcements/{slug}. La descripción es un editor Markdown (Toast UI), guardado como Markdown y dibujado como HTML. El estado es draft o published, los casos de App\Enums\AnnouncementStatus.

  • Al guardar, App\Observers\AnnouncementObserver estampa Publicado en y, cada vez que el estado se vuelve Publicado, despacha App\Jobs\SendAnnouncementEmailsJob a la cola. Los avisos hacen borrado suave. Los permisos son create announcement, retrieve announcement, update announcement y delete announcement.

  • El lado del lector son tres componentes Livewire en app/Livewire/Auth/Announcements/: Dropdown, Index y Show. El extracto del desplegable es de 60 caracteres y el de la lista de 150; el slug de un borrador devuelve 404.

  • El estado de lectura es users.last_announcement_read_at.

  • El envío. El job recorre User::whereNull('blocked_at') en bloques de 100 y envía a cada cuenta App\Notifications\Announcements\AnnouncementNotification, que no usa el canal de base de datos. El web push necesita una suscripción push. La vista del correo es resources/views/emails/announcements/announcement.blade.php, con el asunto {nombre de la app} — {título}. Registros de comunicación es /admin/communication_logs, y también registra la clase de notificación.

  • El job y la notificación implementan ShouldQueue, así que nada se envía hasta que corre un worker:

    php artisan queue:work
    

    Sin worker sólo esperan los correos y los push. Configura el worker como servicio en producción, como describe /help/queues-and-scheduled-work, y asegúrate de que el correo de .env funciona.

Volver