Skip to content

imagy-notifications — Servicio de Notificaciones

Proposito

imagy-notifications es el servicio compartido de notificaciones de la plataforma Imagy. Centraliza el envio de mensajes a traves de multiples canales (SMS, Email, WhatsApp, Push, Webhook) para todos los dominios de la plataforma. Provee dos modos de operacion: sincronico para OTP (envio y verificacion) y asincronico para notificaciones basadas en eventos. Cada tenant configura sus canales disponibles, credenciales de proveedor y plantillas personalizadas.

Responsabilidades

ResponsabilidadDescripcion
Envio multicanalDespachar notificaciones por SMS, Email, WhatsApp, Push y Webhook
OTPGenerar, enviar y verificar codigos de un solo uso
PlantillasGestionar plantillas configurables por tenant con interpolacion de variables
Configuracion por tenantCada tenant define canales habilitados y credenciales de proveedor
Notificaciones por eventoConsumir eventos de otros dominios y disparar notificaciones automaticas
Envio masivoDespachar notificaciones en lote (bulk)
Registro de enviosAlmacenar log de cada notificacion enviada con estado y respuesta del proveedor
LocalizacionSoporte de plantillas en multiples idiomas (locale)

Canales Soportados

CanalProveedor(es)Uso principal
SMSTwilio, Amazon SNSOTP, alertas de estado
EmailAmazon SESVerificacion de contacto, notificaciones de estado
WhatsAppMeta Business APINotificaciones interactivas, alertas
PushFirebase Cloud Messaging (FCM), APNsNotificaciones en app movil
WebhookHTTP callbackIntegracion con sistemas externos del tenant

Modos de Operacion

Sincronico (OTP)

Para operaciones que requieren respuesta inmediata. El servicio consumidor invoca via HTTP y espera la respuesta.

Asincronico (Event-Driven)

Para notificaciones que no requieren respuesta inmediata. El servicio publica un evento y imagy-notifications lo consume y despacha la notificacion correspondiente.

Modos de Envio

imagy-notifications soporta tres modos de envio para cubrir diferentes necesidades:

ModoEndpointQuien decide el canalCuando usar
ExplicitoPOST /send con channel: "sms"El callerOTP, envios puntuales, integraciones especificas
Multi-canalPOST /send con channel: ["sms", "email"]El callerCuando se quiere enviar por canales especificos simultaneamente
DispatchPOST /dispatch con subject_idEl servicio (automatico)Notificaciones de negocio donde el servicio resuelve los canales disponibles

Modo Explicito (canal unico)

El caller especifica exactamente: template + canal + destinatario + variables. Control total.

Modo Multi-Canal (canales explicitos)

El caller especifica un array de canales. El servicio busca la plantilla para cada canal y despacha a todos. Si un canal no tiene plantilla o no esta activo, se salta sin fallar.

Modo Dispatch (resolucion automatica)

El caller solo dice: template + subject_id + variables. El servicio:

  1. Busca los datos de contacto del sujeto (telefono, email, device tokens)
  2. Determina que canales estan activos para el tenant
  3. Verifica que exista plantilla para cada canal + locale
  4. Despacha por todos los canales que cumplan las condiciones

Este modo es ideal para notificaciones de negocio (credito aprobado, pago vencido, firma completada) donde el servicio consumidor no deberia preocuparse por los canales.

Sistema de Plantillas

Las plantillas permiten definir el contenido de cada notificacion de forma configurable por tenant, canal e idioma.

Estructura de una Plantilla

json
{
  "code": "loan_approved",
  "channel": "sms",
  "locale": "es",
  "subject": null,
  "body": "Hola {{borrower_name}}, tu credito por {{amount}} ha sido aprobado. Ref: {{loan_id}}",
  "variables": ["borrower_name", "amount", "loan_id"],
  "tenant_id": "uuid-tenant-001"
}

Interpolacion de Variables

El motor de plantillas reemplaza las variables delimitadas por con los valores proporcionados en el payload de envio. Si una variable requerida no se proporciona, el envio falla con error de validacion.

Jerarquia de Resolucion

  1. Plantilla especifica del tenant + canal + locale
  2. Plantilla especifica del tenant + canal + locale por defecto (es)
  3. Plantilla global del sistema (fallback)

Configuracion de Proveedores por Tenant

Cada tenant configura independientemente que canales tiene habilitados y con que credenciales de proveedor opera.

La tabla notification_channels almacena la configuracion de cada canal por tenant, incluyendo credenciales cifradas con KMS.

Integracion con Otros Dominios

imagy-notifications como proveedor de servicios

ConsumidorUsoModo
ImagSignEnvio de OTP para firma electronicaSincronico (HTTP)
ImagLendVerificacion de contacto (OTP), alertas de estado de creditoSincronico + Asincronico
ImagFlowNotificaciones de paso completado, recordatoriosAsincronico (eventos)
ImagIDVerificacion de email/telefonoSincronico (HTTP)

imagy-notifications como consumidor de eventos

EventoOrigenAccion
lend.loan.approvedImagLendNotificar al solicitante que su credito fue aprobado
lend.loan.disbursedImagLendNotificar desembolso exitoso
lend.loan.rejectedImagLendNotificar rechazo con motivo
lend.payment.reminderImagLendRecordatorio de pago proximo
lend.payment.overdueImagLendAlerta de pago vencido
flow.step.completedImagFlowNotificar avance en el flujo
flow.step.requires_actionImagFlowNotificar que se requiere accion del usuario
flow.request.expiredImagFlowNotificar expiracion del flujo
sign.signature.completedImagSignConfirmar firma exitosa al firmante
sign.signature.expiredImagSignNotificar que la solicitud de firma expiro
id.verification.completedImagIDConfirmar verificacion de identidad

Arquitectura Interna

Repositorio

  • Repo: imagy-notifications
  • Base de datos: imagy_notifications
  • Puerto local: 4005
  • Equipo: Team Platform

Documentos Relacionados

Reimagine Tech LLC — Documentacion Interna