Módulo System Message
src/app/modules/system-message/
Servicio único para crear mensajes generados por el sistema (saludos, despedidas, avisos de fuera de horario, eventos internos del ticket). Antes esa lógica estaba duplicada en ChatGateway y en TicketService; ahora ambos y los jobs delegan en SystemMessageService.
API del servicio
services/system-message.service.ts
| Método | Descripción |
|---|---|
sendToContact(ticket, template, author?) | Interpola la plantilla (MessageTemplateService.interpolate), persiste el mensaje, lo emite por socket y lo envía al canal externo vía OutboundRouterService.route (en segundo plano, sin bloquear). Devuelve null si el contacto no existe o la plantilla queda vacía |
recordInternal(ticket, body) | Persiste un mensaje de sistema interno (isInternal: true) y lo emite por socket como mensaje de sistema interno. No se envía al contacto |
Los mensajes se guardan con sendType: system, ack: sent y el connectionId del ticket.
Autor (SystemMessageAuthor)
Definido en interfaces/system-message.interface.ts con las constantes SYSTEM_MESSAGE_AUTHOR (core/constants/message.constants.ts):
kind | messageType guardado | Emisión por socket |
|---|---|---|
system (por defecto) | system | broadcastSystemMessage |
connection | chat | broadcastConnectionMessage (con senderName: "Sistema", SYSTEM_SENDER_NAME) |
department (con departmentName) | chat | broadcastDepartmentGreeting |
Quién lo usa
Verificado por imports en el código: TicketService, ChatGateway, TicketInactivityResolutionJob, TicketResolutionEffectsService, el pipeline de entrada compartido (IngestInboundDeps.systemMessageService, inbound-channel.adapter.ts) y los servicios de entrada de WhatsApp y Meta.
Gotcha
Como sendToContact pasa por OutboundRouterService, los saludos y avisos automáticos también llegan a WhatsApp / Instagram / Messenger, no solo al widget web.