Mensajes
Mensajes — /messages

Lista completa con búsqueda y filtro por estado, aplicación, interfaz, definición y período — los filtros incluyen las herramientas de Help Desk, para encontrar el mensaje de un ticket y ver qué respondió la herramienta. Cada fila lleva al detalle del mensaje — y el icono que abre el mensaje sigue el color del estado de esa fila, como los totales del pie siguen el estado que cuentan. En una grilla de cien filas, es lo que permite encontrar el error sin leer la columna de estado.
El filtro de estado usa el mismo icono de la fila que filtra — elegir “error de entrega” en el combo y encontrar la fila correspondiente en la grilla es reconocer la misma marca, no traducir una etiqueta.
Período
El período es un solo botón, con el reloj, que muestra lo que está vigente — Hoy, Última hora o las fechas, cuando son fijas. Abre un panel con:
| Grupo | Opciones |
|---|---|
| Relativos | Últimos 15 minutos, Última hora, Últimas 4 horas, Últimas 24 horas, Últimos 7 días |
| Calendario | Hoy, Ayer |
| Últimos X | Cualquier cantidad de minutos, horas o días, hasta 999 |
| Intervalo personalizado | Los campos Desde y Hasta, para una ventana fija |
Los atajos siguen el reloj. “Última hora” no se convierte en dos fechas al hacer clic: en cada actualización de la lista la ventana termina ahora, y quien vuelve a la pantalla más tarde sigue viendo la última hora de verdad. Hoy llega hasta las 23:59:59, así que el mensaje que llega dentro de un minuto también aparece. Escribir una fecha fija el intervalo — el botón pasa a mostrar las fechas, y el otro extremo ya viene con la ventana que cubría el atajo.
Fecha de recepción o de retorno. La parte de arriba del panel tiene Filtrar por la fecha de, con dos opciones. Recepción, la predeterminada, filtra por el instante en que el mensaje llegó al CMS. Retorno (destino) filtra por el instante en que terminó — procesado o con error —, aunque haya llegado antes: el mensaje recibido ayer que falló hoy entra en “Hoy” por retorno y queda fuera por recepción. Por retorno, el botón muestra la elección junto al período (Hoy · por retorno), y el mensaje que todavía no terminó no aparece. Limpiar filtros vuelve a la recepción.
Es la cuenta de los paneles: el Panel de Aplicaciones, el pie de página y el Rayo X del Día cuentan Error y Procesadas por la fecha de retorno y sin el tráfico de prueba. Por eso el clic en esos números abre la lista ya por retorno y solo con tráfico real — y la lista coincide con el número clicado.

Tráfico real y tráfico de prueba
Un mensaje disparado desde el Banco de Pruebas aparece aquí con un frasco ámbar junto al estado; al pasar el mouse se ve quién lo disparó. Está en la lista a propósito: quien probó necesita encontrar lo que acaba de mandar.
Lo que no hace es entrar en la contabilidad — paneles, informes y Radiografía del Día lo ignoran. Por eso el filtro de tráfico tiene tres posiciones:
| Posición | Muestra |
|---|---|
| Reales y de prueba | Todo |
| Solo tráfico real | Lo que vino del mundo, sin las pruebas |
| Solo del Banco de Pruebas | Lo que alguien disparó probando |
La excepción es el modo Publicar en el origen del Banco de Pruebas: produce el estímulo en el broker, en el PLC o en la carpeta, y el mensaje que nace de ahí es real — el CMS no tiene cómo distinguir lo que usted publicó de lo que publicó el equipo.
De dónde vino el mensaje
Al lado del estado, un ícono pequeño avisa cuando el mensaje no vino del sistema de origen habitual:
| Marca | Qué significa | Al pasar el mouse |
|---|---|---|
| Rayo | Lo disparó un Disparador | El nombre del Disparador |
| Salvavidas | Es la apertura de un ticket de Help Desk | El destino del ticket |
| Robot violeta | Lo creó un agente de IA, por una tool MCP | La tool y la credencial que la llamó |
Las marcas aparecen en la grilla, en el popup y en la página del mensaje. Son solo información de origen, sin atajo: a diferencia del frasco de prueba, todas son tráfico real y cuentan en paneles e informes.
Mensajes Procesados — /messages/processed

Filtra solo lo que fue entregado con éxito. Útil para comprobar la entrega cuando el sistema destino alega no haber recibido: el historial guarda la respuesta que el destino devolvió.
Cuando la Definición tiene Permitir reenvío activado, la fila gana el botón de reenvío (el avión de papel, en naranja) — ver Reenviar un mensaje procesado.
Errores de Entrega — /messages/delivery-errors

Fallas técnicas (ERRO_ENTREGA) y de negocio (ERRO_NEGOCIO), con reproceso individual o en
lote. El reproceso crea un nuevo intento; el historial anterior se preserva.
Cada reproceso queda en el Log de Auditoría, como REPROCESSAR_MENSAGEM.
Cancelación — /messages/cancellation

Cancelación en lote, con pantalla de confirmación. Un mensaje cancelado (CANCELADA) ya no se
entrega ni se reprocesa automáticamente.
Cancelar es una decisión de negocio, no una limpieza técnica: el mensaje sale del flujo de entrega pero sigue en la base y en los informes hasta la purga por retención.
Búsqueda por Contenido — /messages/content-search

Busca dentro del payload, y no solo por los metadatos. Responde preguntas del tipo “¿el pallet PAL001 llegó a enviarse?”.
Los payloads cifrados no son buscables por contenido — el cifrado es justamente lo que lo impide.
El atajo Ctrl+K
La misma búsqueda existe como atajo global: Ctrl+K abre un campo desde cualquier pantalla del
sistema, sin elegir Aplicación, Interfaz ni período antes. Es el camino para cuando alguien llega con
un número de orden en la mano y la pregunta es solo si pasó por aquí.
El popup muestra como máximo diez resultados, cada uno con el fragmento alrededor del término — lo suficiente para reconocer el mensaje correcto antes de abrirlo. Quien necesita la lista entera sigue hacia la Búsqueda por Contenido por el pie del popup.
La búsqueda rápida respeta los mismos permisos de la pantalla: alcanza solo las Interfaces del usuario, y ni siquiera aparece para quien no tiene ninguna Herramienta de mensaje. Un mensaje cuyo término coincidió por casualidad dentro de un fragmento cifrado se omite del resultado — mostrar el pedazo sería sortear la regla de cifrado que existe justamente para esconderlo.
Exportar a Excel
Todas las pantallas de mensajes tienen el botón Exportar Excel, que descarga exactamente el recorte que está en pantalla: los mismos filtros, sin la paginación. La planilla se arma en tu navegador — ningún archivo con datos de producción se graba en el servidor — y se detiene en 50 mil filas.
Llegar aquí por un enlace
Los filtros de estas pantallas caben en la URL: Aplicación, Interfaz, Definición, estado, id del
mensaje, período y el término de contenido. Así funcionan el ícono de mensajes en las grillas de
Recolección y Entrega, el “profundizar análisis” del gráfico de período, el pie del Ctrl+K y los
atajos del Asistente de IA.
Consecuencias que vale conocer:
- El enlace manda en toda la pantalla. Llegar por una dirección con filtro limpia la Interfaz y la Definición que habían quedado de la visita anterior. Sin eso, la pantalla abriría más estrecha de lo que el enlace prometió, y nada explicaría por qué.
?export=1ya descarga la planilla. La pantalla abre filtrada y dispara Exportar Excel sola, una sola vez. Es lo que usa el Asistente de IA cuando alguien pide “exporta los mensajes de hoy”.?periodo=lleva el atajo, no las fechas.?periodo=24h,?periodo=hojeo?periodo=7dabren la pantalla en un período que sigue el reloj — el enlace sigue correcto días después.dataInicio/dataFimsiguen valiendo para una ventana fija.?campoData=retornocambia la fecha del período a la de retorno, y?teste=falsedeja solo el tráfico real — los dos que usan los paneles para que el número clicado coincida con la lista.- Un enlace pegado sin sesión no se pierde. Abrir una dirección del CMS sin haber iniciado sesión lleva al login y, al entrar, a la pantalla pedida — siempre que sea una ruta de esta misma instalación. Una dirección de otro dominio se descarta en el camino, para que el login no se vuelva un redireccionador abierto.
El enlace es solo un atajo al filtro: quien ejecuta la búsqueda es el servidor, con tu permiso. Una dirección que apunta a una Interfaz que no ves abre vacía, nunca con sus datos.
Detalle del Mensaje — /messages/:id
Concentra todo sobre un mensaje:
- Payload recibido (y el transformado, cuando hay Transformador)
- Historial de intentos: hora, resultado, respuesta del destino, mensaje de error
- Tiempo hasta la entrega, descompuesto en partes — ver abajo
- Acción de descifrar, cuando el payload está cifrado — exige autorización, reautenticación y justificación (ver Seguridad)
- Enviar por e-mail, que manda el PDF del mensaje a usuarios del CMS — ver abajo
- Reenviar, en un mensaje ya procesado cuya Definición lo permite — ver abajo
- Abrir ticket, en un mensaje con error: abre un ticket en el Help Desk ya completado con la Aplicación, la Interfaz, el error y el enlace del mensaje — ver Help Desk
- Reenvíos no realizados, cuando la condición de un reenvío de la Recolección o de Reenviar Respuesta no se cumplió: el destino y el motivo, regla por regla. Un mensaje Procesado sin hijo en un destino deja de parecer pérdida de datos — fue la regla la que decidió
Cuando la productora tiene Transformador propio
En una Entrega con Transformador por Aplicación productora, el mensaje que pasó por él tiene un contenido más, y el detalle muestra los tres en el orden en que ocurrieron:
| Bloque | Qué es |
|---|---|
| Payload Recibido de la Aplicación productora | Lo que la productora envió, en su propio formato |
| Convertido al formato de la Entrega | Lo que salió del Transformador de la productora — la entrada del Transformador de la Entrega |
| Payload Transformado (Entregado) | Lo que se entregó al destino |
Sin Transformador en la propia Entrega, lo convertido es lo entregado, y el bloque del medio no aparece. El campo Transformador de la Aplicación productora dice cuál se ejecutó: es el nombre grabado en el momento, que sigue ahí aunque el Transformador cambie de nombre o se elimine después. El PDF y el correo siguen el mismo orden, con el enlace de cada parte.
Lo que la productora envió también sigue la Regla de Cifrado de la Entrega — ver Seguridad.
El contenido crudo, y el enlace hacia él
El icono de ampliar en cada bloque de contenido — recibido, convertido, entregado, retorno — abre el visor, que hace más que mostrar el texto:
| Botón | Qué hace |
|---|---|
| Formateado / Original | Formateado reindenta el JSON para leerlo; Original muestra el contenido exactamente como fue grabado — es el modo que sirve para comparar con lo que el otro sistema dice haber enviado |
| Copiar | Copia el texto al portapapeles |
| Descargar | Guarda el contenido original en un archivo, con la extensión deducida del propio contenido |
| Enlace | Copia una dirección que abre esta pantalla ya con este contenido abierto |
El contador de bytes al lado es del contenido original, nunca del formateado: es el número que se coteja contra el log del otro lado. Y cuenta bytes UTF-8, no caracteres — un payload con acentos tiene más bytes que letras.
Descargar y Enlace solo aparecen cuando el contenido es de un mensaje. El mismo visor abre el ejemplo de payload de una Definición y el detalle del Log de Auditoría, y allí sigue siendo solo leer, copiar y buscar.
La dirección que copia el botón Enlace es /messages/:id?view=received|converted|delivered|return — más
&attempt=N cuando apunta a un intento específico. Es el mismo enlace que sale impreso en el PDF
del mensaje y en el correo: el PDF trunca payload largo, y es por ahí que quien recibió el adjunto
llega al texto completo.
El enlace no entrega contenido a quien solo tiene la URL: abre la pantalla, que pide inicio de sesión y aplica su Herramienta y su recorte por Interfaz como cualquier otra. Una dirección que entregara el payload directo terminaría en el servidor de correo, en los reenvíos y en el log del proxy — y allí valdría como contraseña. El contenido cifrado tampoco se abre por enlace: sigue exigiendo el flujo de descifrado, con autorización, justificación y registro.
Para quien necesita el texto fuera de la pantalla — comparar, contar bytes, reproducir un caso —
existe GET /api/messages/:id/raw/:parte, con parte en received, converted, delivered o
return y el ?attempt=N opcional. Responde el contenido como adjunto, sin reformatear nada y sin
descifrar nada. En un mensaje que pasó por el Transformador de la productora, received es lo que
ella envió y converted lo convertido al formato de la Entrega; fuera de ese caso, converted
responde 404 en vez de repetir lo recibido con otro nombre. Pegada en la barra de direcciones devolvería 401, porque la API solo autentica por cabecera;
por eso existe también la página /messages/:id/raw/:parte, el mismo contenido abierto con la
sesión del navegador, ocupando la pantalla entera y sin menú alrededor — la URL que se pega en un
ticket.
El tiempo total, descompuesto
El intervalo “recibido → entregado” por sí solo engaña. En una Interfaz programada cada 55 segundos, un mensaje que llegó justo después de un ciclo queda casi un ciclo entero parado antes de que ocurra cualquier procesamiento — y el total se lee como lentitud del CMS cuando en realidad es el intervalo de programación sumado al tiempo de respuesta del destino.
Por eso el detalle muestra el total y, al lado, las partes:
| Parte | Qué es |
|---|---|
| Espera en la cola | Desde la recepción hasta el primer despacho: el ciclo del programador de la Interfaz |
| CMS | El procesamiento interno — transformación, grabación |
| Destino | Cuánto tardó en responder el sistema de destino, en el último intento |
| Intentos | Cuántas veces se intentó, cuando fue más de una |
Es lo que separa “el CMS está lento” de “la programación es de un minuto” y de “el ERP está tardando ocho segundos por llamada”.
Enviar por e-mail
El botón Enviar por e-mail genera el PDF del mensaje y lo manda adjunto a uno o más usuarios del CMS. Tres detalles vale conocer:
- El PDF es el mismo del botón de descarga: mismo generador, mismo documento.
- Los destinatarios vienen del registro de usuarios, filtrados por quien ve esa Interfaz. No existe campo para escribir una dirección — eso convertiría el botón en un camino para mandar payload de producción a cualquier lado.
- El envío queda en el Log de Auditoría con el hash del adjunto: se puede probar después qué archivo salió, sin que el CMS guarde una copia.
La acción tiene Herramienta propia, /messages/email. Poder ver un mensaje no otorga, junto, el
derecho de mandarlo hacia afuera.
Reenviar un mensaje procesado
A veces el destino recibió, pero perdió o deshizo lo que recibió — y pedirle al sistema productor que genere todo de nuevo es el camino caro. El botón Reenviar manda el mensaje otra vez por el CMS.
Aparece en el detalle del mensaje, en el popup de resumen y en la fila de Mensajes Procesados, cuando todo esto se cumple:
- el mensaje está Procesado;
- su Definición tiene Permitir reenvío activado;
- el perfil tiene la Herramienta Reenviar Mensaje Procesado (
/messages/resend) — de los perfiles estándar, solo CMS_Developer; los de Monitor no, porque reenviar es escribir en el destino real; - no fue creado por un reenvío automático, ni es de apertura de ticket.
El reenvío nunca reabre el original: crea un mensaje nuevo, vinculado a él. El original sigue Procesado, con su historial, y muestra Reenviado como con el enlace a cada copia; el nuevo muestra Reenvío de y quién lo pidió.
| Definición | Qué va de nuevo |
|---|---|
| Entrega | El payload que recibió el original, como llegó, pasa de nuevo por la recepción con el Transformador y la configuración actuales — el motivo más común para reenviar es “corregimos algo y necesitamos mandarlo de nuevo”. En una Entrega síncrona, el popup muestra la respuesta del destino |
| Recolección | Lo que ya se recolectó se reenvía a los destinos actuales. La búsqueda en la fuente no se ejecuta de nuevo. Con la Interfaz bloqueada, el mensaje espera el desbloqueo |
Antes de ir, el popup dice a dónde va — el destino de la Entrega, o los destinos de la Recolección,
y los reenvíos automáticos que se ejecutan de nuevo — y pide la palabra de confirmación. Cada
reenvío queda en el Log de Auditoría, como REENVIAR_MENSAGEM.
Un mensaje creado por un reenvío automático no tiene el botón: su Transformador es el del reenvío. Para mandar de nuevo una entrega que nació de una Recolección, reenvíe el mensaje de la Recolección — reenvía y genera la entrega otra vez.
Dónde actuar en lote
Las acciones masivas sobre volúmenes mayores — bloquear interfaces, reprocesar o cancelar lo que está pendiente — están en la Danger Zone, con confirmación escrita y registro de auditoría.
La pantalla Definición de Mensaje (/message-management), pese al nombre parecido, no trata de
mensajes individuales: es la vista unificada de las Recolecciones y Entregas de una Aplicación. Está
descrita en Registros.