Mensagens
Mensagens — /messages

Lista completa com busca e filtro por status, aplicação, interface, definição e período — os filtros incluem as ferramentas de Help Desk, para achar a mensagem de um chamado e ver o que a ferramenta respondeu. Cada linha leva ao detalhe da mensagem — e o ícone que abre a mensagem segue a cor do status daquela linha, como os totais do rodapé seguem o estado que contam. Numa grade de cem linhas, é o que deixa achar o erro sem ler a coluna de status.
O filtro de status usa o mesmo ícone da linha que ele filtra — escolher “erro de entrega” no combo e procurar a linha correspondente na grade é reconhecer a mesma marca, não traduzir um rótulo.
Período
O período é um botão só, com o relógio, que mostra o que está valendo — Hoje, Última hora ou as datas, quando são fixas. Ele abre um painel com:
| Grupo | Opções |
|---|---|
| Relativos | Últimos 15 minutos, Última hora, Últimas 4 horas, Últimas 24 horas, Últimos 7 dias |
| Calendário | Hoje, Ontem |
| Últimos X | Qualquer número de minutos, horas ou dias, até 999 |
| Intervalo personalizado | Os campos De e Até, para uma janela fixa |
Os atalhos acompanham o relógio. “Última hora” não vira duas datas no momento do clique: a cada atualização da lista a janela termina em agora, e quem volta à tela mais tarde continua vendo a última hora de verdade. Hoje vai até 23:59:59, então a mensagem que chega daqui a um minuto também aparece. Digitar uma data fixa o intervalo — o botão passa a mostrar as datas, e a outra ponta já vem preenchida com a janela que o atalho cobria.
Data de recebimento ou de retorno. O topo do painel tem Filtrar pela data de, com duas opções. Recebimento, o padrão, recorta pelo instante em que a mensagem chegou ao CMS. Retorno (destino) recorta pelo instante em que ela terminou — processada ou com erro —, mesmo que tenha chegado antes: a mensagem recebida ontem que falhou hoje entra em “Hoje” por retorno e fica fora por recebimento. Por retorno, o botão passa a mostrar o recorte junto do período (Hoje · por retorno), e mensagem que ainda não terminou não aparece. Limpar filtros volta para o recebimento.
É a conta dos painéis: o Painel de Aplicações, o rodapé e o Raio-X do Dia contam Erro e Processadas pela data de retorno e sem o tráfego de teste. Por isso o clique nesses números abre a lista já por retorno e só com tráfego real — e o número da lista bate com o que foi clicado.

Tráfego real e tráfego de teste
Mensagem disparada pelo Banco de Testes aparece aqui com um frasco âmbar ao lado do status; passar o mouse mostra quem a disparou. Ela existe na lista de propósito: quem testou precisa achar o que acabou de mandar.
O que ela não faz é entrar na contabilidade — painéis, relatórios e Raio-X do Dia a ignoram. Por isso o filtro de tráfego tem três posições:
| Posição | Mostra |
|---|---|
| Reais e de teste | Tudo |
| Só tráfego real | O que veio do mundo, sem os testes |
| Só do Banco de Testes | O que foi disparado por alguém testando |
A exceção é o modo Publicar na origem do Banco de Testes: ele produz o estímulo no broker, no CLP ou na pasta, e a mensagem que nasce daí é real — o CMS não tem como distinguir o que você publicou do que o equipamento publicou.
De onde veio a mensagem
Ao lado do status, um ícone pequeno conta quando a mensagem não veio do sistema de origem de sempre:
| Marca | Quer dizer | Ao passar o mouse |
|---|---|---|
| Raio | Foi disparada por um Gatilho | O nome do Gatilho |
| Boia | É a abertura de um chamado de Help Desk | O destino do chamado |
| Robô violeta | Foi criada por um agente de IA, por uma ferramenta MCP | A ferramenta e a credencial que a chamou |
As marcas aparecem na grade, no popup e na página da mensagem. São só informação de origem, sem atalho: diferente do frasco do teste, todas são tráfego real e contam em painéis e relatórios.
Mensagens Processadas — /messages/processed

Filtra apenas o que foi entregue com sucesso. Útil para comprovar entrega quando o sistema destino alega não ter recebido: o histórico guarda a resposta que o destino devolveu.
Quando a Definição tem Permitir reenvio ligado, a linha ganha o botão de reenvio (o avião de papel, em laranja) — ver Reenviar uma mensagem processada.
Erros de Entrega — /messages/delivery-errors

Falhas técnicas (ERRO_ENTREGA) e de negócio (ERRO_NEGOCIO), com reprocesso individual ou em
lote. O reprocesso cria uma nova tentativa; o histórico anterior é preservado.
Cada reprocessamento fica no Log de Auditoria, como REPROCESSAR_MENSAGEM.
Cancelamento — /messages/cancellation

Cancelamento em lote, com tela de confirmação. Mensagem cancelada (CANCELADA) não é mais
entregue nem reprocessada automaticamente.
Cancelar é decisão de negócio, não limpeza técnica: a mensagem some do fluxo de entrega mas continua no banco e nos relatórios até o expurgo por retenção.
Busca por Conteúdo — /messages/content-search

Busca dentro do payload, e não só pelos metadados. Responde perguntas do tipo “o pallet PAL001 chegou a ser enviado?”.
Payloads cifrados não são pesquisáveis por conteúdo — a cifra é justamente o que impede isso.
O atalho Ctrl+K
A mesma busca existe como atalho global: Ctrl+K abre um campo de qualquer tela do sistema, sem
escolher Aplicação, Interface nem período antes. É o caminho para quando alguém chega com um número
de ordem na mão e a pergunta é só “essa passou por aqui?”.
O popup mostra no máximo dez resultados, cada um com o trecho em volta do termo — o suficiente para reconhecer a mensagem certa antes de abrir. Quem precisa da lista inteira segue para a Pesquisa de Conteúdo pelo rodapé do popup.
A busca rápida respeita as mesmas permissões da tela: alcança só as Interfaces do usuário, e nem aparece para quem não tem nenhuma Ferramenta de mensagem. Uma mensagem cujo termo casou por acaso dentro de um trecho cifrado é omitida do resultado — exibir o pedaço seria contornar a regra de criptografia que existe justamente para escondê-lo.
Exportar para Excel
Todas as telas de mensagem têm o botão Exportar Excel, que baixa exatamente o recorte que está na tela: os mesmos filtros, sem a paginação. A planilha é montada no seu navegador — nenhum arquivo com dado de produção é gravado no servidor — e para em 50 mil linhas.
Chegar aqui por um link
Os filtros destas telas cabem na URL: Aplicação, Interface, Definição, status, id da mensagem,
período e o termo de conteúdo. É assim que funcionam o ícone de mensagens nas grades de Coleta e
Entrega, o “aprofundar análise” do gráfico de período, o rodapé do Ctrl+K e os
atalhos do Assistente de IA.
Consequências que valem conhecer:
- O link manda na tela inteira. Chegar por um endereço com filtro limpa a Interface e a Definição que tinham ficado da visita anterior. Sem isso, a tela abriria mais estreita do que o link prometeu, e nada explicaria por quê.
?export=1já baixa a planilha. A tela abre filtrada e dispara o Exportar Excel sozinha, uma vez só. É o que o Assistente de IA usa quando alguém pede “exporte as mensagens de hoje”.?periodo=leva o atalho, não as datas.?periodo=24h,?periodo=hojeou?periodo=7dabrem a tela num período que acompanha o relógio — o link continua certo dias depois.dataInicio/dataFimcontinuam valendo para uma janela fixa.?campoData=retornotroca a data do período para a de retorno, e?teste=falsedeixa só o tráfego real — os dois que os painéis usam para o número clicado bater com a lista.- Link colado sem sessão não se perde. Abrir um endereço do CMS deslogado leva ao login e, ao entrar, à tela pedida — desde que seja um caminho desta mesma instalação. Endereço de outro domínio é descartado no caminho, para o login não virar um redirecionador aberto.
O link é só um atalho para o filtro: quem executa a busca é o servidor, com a sua permissão. Um endereço apontando para Interface que você não enxerga abre vazio, nunca com o dado dela.
Detalhe da Mensagem — /messages/:id
Concentra tudo sobre uma mensagem:
- Payload recebido (e o transformado, quando há Transformador)
- Histórico de tentativas: horário, resultado, resposta do destino, mensagem de erro
- Tempo até a entrega, decomposto em partes — ver abaixo
- Ação de decifrar, quando o payload está cifrado — exige autorização, reautenticação e justificativa (ver Segurança)
- Enviar por e-mail, que manda o PDF da mensagem para usuários do CMS — ver abaixo
- Reenviar, numa mensagem já processada cuja Definição permite — ver abaixo
- Abrir chamado, numa mensagem com erro: abre um chamado no Help Desk já preenchido com a Aplicação, a Interface, o erro e o link da mensagem — ver Help Desk
- Encaminhamentos não feitos, quando a condição de um encaminhamento da Coleta ou do Encaminhar Resposta não foi atendida: o destino e o motivo, regra por regra. Uma mensagem Processada sem filha num destino deixa de parecer perda de dado — foi a regra que decidiu
Quando a produtora tem Transformador próprio
Numa Entrega com Transformador por Aplicação produtora, a mensagem que passou por ele tem um conteúdo a mais, e o detalhe mostra os três na ordem em que aconteceram:
| Bloco | O que é |
|---|---|
| Payload Recebido da Aplicação produtora | O que a produtora mandou, no formato dela |
| Convertido para o formato da Entrega | O que saiu do Transformador da produtora — a entrada do Transformador da Entrega |
| Payload Transformado (Entregue) | O que foi entregue ao destino |
Sem Transformador na própria Entrega, o convertido é o entregue, e o bloco do meio não aparece. O campo Transformador da Aplicação produtora diz qual rodou: é o nome gravado na hora, que continua ali mesmo que o Transformador mude de nome ou seja excluído depois. O PDF e o e-mail seguem a mesma ordem, com o link de cada parte.
O que a produtora mandou também segue a Regra de Criptografia da Entrega — ver Segurança.
O conteúdo cru, e o link para ele
O ícone de ampliar em cada bloco de conteúdo — recebido, convertido, entregue, retorno — abre o visualizador, que faz mais do que mostrar o texto:
| Botão | O que faz |
|---|---|
| Formatado / Original | Formatado reidenta o JSON para leitura; Original mostra o conteúdo exatamente como foi gravado — é o modo que serve para comparar com o que o outro sistema diz ter enviado |
| Copiar | Copia o texto para a área de transferência |
| Baixar | Salva o conteúdo original num arquivo, com a extensão deduzida do próprio conteúdo |
| Link | Copia um endereço que abre esta tela já com este conteúdo aberto |
O contador de bytes ao lado é do conteúdo original, nunca do formatado: é o número que se confere contra o log do outro lado. E ele conta bytes UTF-8, não caracteres — um payload com acento tem mais bytes do que letras.
Baixar e Link só aparecem quando o conteúdo é de uma mensagem. O mesmo visualizador abre o exemplo de payload de uma Definição e o detalhe do Log de Auditoria, e ali continua sendo só ler, copiar e pesquisar.
O endereço que o botão Link copia é /messages/:id?view=received|converted|delivered|return — mais
&attempt=N quando aponta para uma tentativa específica. É o mesmo link que sai impresso no PDF da
mensagem e no e-mail: o PDF trunca payload longo, e é por ali que quem recebeu o anexo chega ao
texto inteiro.
O link não entrega conteúdo a quem tem só a URL: ele abre a tela, que pede login e aplica a sua Ferramenta e o seu recorte por Interface como qualquer outra. Um endereço que entregasse payload direto acabaria no servidor de e-mail, nos encaminhamentos e no log do proxy — e ali valeria como senha. Conteúdo cifrado também não abre por link: continua exigindo o fluxo de decifrar, com autorização, justificativa e registro.
Para quem precisa do texto fora da tela — comparar, contar bytes, reproduzir um caso — existe
GET /api/messages/:id/raw/:parte, com parte em received, converted, delivered ou return e
o ?attempt=N opcional. Ela responde o conteúdo como anexo, sem reformatar nada e sem decifrar nada.
Numa mensagem que passou pelo Transformador da produtora, received é o que ela mandou e converted
o convertido para o formato da Entrega; fora desse caso, converted responde 404 em vez de repetir o
recebido com outro nome.
Colada na barra de endereço ela devolveria 401, porque a API só autentica por cabeçalho; por isso
existe também a página /messages/:id/raw/:parte, que é o mesmo conteúdo aberto com a sessão do
navegador, ocupando a tela inteira e sem menu em volta — a URL que se cola num chamado.
O tempo total, decomposto
O intervalo “recebido → entregue” sozinho engana. Numa Interface agendada a cada 55 segundos, uma mensagem que chegou logo depois de um ciclo fica quase um ciclo inteiro parada antes de qualquer processamento acontecer — e o total é lido como lentidão do CMS quando é, na verdade, o intervalo de agendamento somado ao tempo de resposta do destino.
Por isso o detalhe mostra o total e, ao lado, as partes:
| Parte | O que é |
|---|---|
| Espera na fila | Do recebimento até o primeiro despacho: o ciclo do agendador da Interface |
| CMS | O processamento interno — transformação, gravação |
| Destino | Quanto o sistema de destino levou para responder, na última tentativa |
| Tentativas | Quantas vezes foi tentado, quando foi mais de uma |
É o que separa “o CMS está lento” de “o agendamento é de um minuto” e de “o ERP está levando oito segundos por chamada”.
Enviar por e-mail
O botão Enviar por e-mail gera o PDF da mensagem e o manda anexado a um ou mais usuários do CMS. Três detalhes valem conhecer:
- O PDF é o mesmo do botão de download: mesmo gerador, mesmo documento.
- Os destinatários vêm do cadastro de usuários, filtrados por quem enxerga aquela Interface. Não existe campo para digitar endereço — isso transformaria o botão num caminho para mandar payload de produção para qualquer lugar.
- O envio fica no Log de Auditoria com o hash do anexo: dá para provar depois qual arquivo saiu, sem o CMS precisar guardar uma cópia dele.
A ação tem Ferramenta própria, /messages/email. Quem pode ver uma mensagem não ganha, junto, o
direito de mandá-la para fora.
Reenviar uma mensagem processada
Às vezes o destino recebeu, mas perdeu ou desfez o que recebeu — e pedir ao sistema produtor para gerar tudo de novo é o caminho caro. O botão Reenviar manda a mensagem outra vez pelo CMS.
Ele aparece no detalhe da mensagem, no popup de resumo e na linha de Mensagens Processadas, quando tudo isto vale:
- a mensagem está Processada;
- a Definição dela tem Permitir reenvio ligado;
- o perfil tem a Ferramenta Reenviar Mensagem Processada (
/messages/resend) — dos perfis padrão, só o CMS_Developer; os de Monitor não, porque reenviar é escrever no destino real; - ela não foi criada por um encaminhamento, nem é de abertura de chamado.
O reenvio nunca reabre a original: cria uma mensagem nova, ligada a ela. A original continua Processada, com o histórico dela, e mostra Reenviada como com o link para cada cópia; a nova mostra Reenvio de e quem pediu.
| Definição | O que vai de novo |
|---|---|
| Entrega | O payload que a original recebeu, como chegou, passa de novo pelo recebimento com o Transformador e a configuração atuais — o motivo mais comum de reenviar é “corrigimos algo e precisamos mandar de novo”. Numa Entrega síncrona, o popup mostra a resposta do destino |
| Coleta | O que já foi coletado é reencaminhado aos destinos atuais. A busca na fonte não roda de novo. Com a Interface bloqueada, a mensagem espera o desbloqueio |
Antes de ir, o popup diz para onde vai — o destino da Entrega, ou os destinos da Coleta, e os
encaminhamentos que disparam de novo — e pede a palavra de confirmação. Cada reenvio fica no
Log de Auditoria, como REENVIAR_MENSAGEM.
Mensagem criada por encaminhamento não tem o botão: o Transformador dela é o do encaminhamento. Para mandar de novo uma entrega que nasceu de uma Coleta, reenvie a mensagem da Coleta — ela reencaminha e gera a entrega outra vez.
Onde mexer em lote
Ações em massa sobre volumes maiores — bloquear interfaces, reprocessar ou cancelar o que está pendente — ficam na Danger Zone, com confirmação digitada e registro de auditoria.
A tela Definição de Mensagem (/message-management), apesar do nome parecido, não é sobre
mensagens individuais: é a visão unificada das Coletas e Entregas de uma Aplicação. Está descrita em
Cadastros.