Layer-api-message-rules-service

De Plataforma COA Crowd
Saltar a: navegación, buscar

Servicio encargado de recibir la petición para usar la plataforma de mensajería, validar si la aplicación que hace la petición, puede enviar mensajes, evaluar las reglas para determinar qué tipo de mensaje se enviará y por cuál proveedor saldrá el mensaje. Envía un callback son la información de los mensajes enviados o en caso de algún problema con el envío del mensaje, también muestra el detalle.

Dependencias

Dependencias que necesita el servicio para poder funcionar de cuerdo a la validación de negocio que se necesite.

layer-api-rate-consumer-service

layer-api-template-service

Máquina de estados

Bases de datos

El servicio cuenta con su propia base de datos interna, la cual tiene dos tablas, la de proveedores en la cual se dan de alta los diferentes tipos de proveedores que pueden enviar algún tipo de mensaje, y la tabla de configuraciones, en la cual permanecen las reglas de jmespath que serán evaluadas.

Schema Tablas
serv_layer_api_message_rules_service

TABLE proveedores (
 id_proveedor serial NOT NULL,
 nombre varchar(100) NULL,
 tipo varchar(40) NULL,
 credenciales jsonb NULL,
 endpoint varchar(2000) NULL,
 activo bool NULL DEFAULT true,
 created_at timestamp NULL,
 updated_at timestamp NULL,
 CONSTRAINT proveedores_nombre_tipo_key UNIQUE (nombre, tipo),
 CONSTRAINT proveedores_pkey PRIMARY KEY (id_proveedor)
);

TABLE configuraciones (
 id_configuracion serial NOT NULL,
 nombre varchar(100) NULL,
 tipo_mensaje varchar(40) NULL,
 configuracion jsonb NULL,
 created_at timestamp NULL,
 updated_at timestamp NULL,
 CONSTRAINT configuraciones_nombre_tipo_mensaje_key UNIQUE (nombre, tipo_mensaje),
 CONSTRAINT configuraciones_pkey PRIMARY KEY (id_configuracion)
);

Endpoints

/messenger/send/message [POST]

Este endpoint es la entrada a la plataforma, se encarga de validar, evaluar reglas, enviar mensajes y llamar a un callback indicando el resultado del envío.

request

{
 "idMensaje": "ed08dafd-fd39-4520-b3ae-b3fc7e5a5ac2",
 "appName": "cobranza-fisa",
 "reglas": {
  "template": "contacto-cliente-1"
 },
 "callback": "https://algun-servicio/path/callback",
 "data": {
  "celular": "4961170373",
  "nombre": "Chava",
  "email": "sbuendia@independencia.com.mx"
 }
}

response [OK 200]

{"mensajesEnviados": [
      {
      "result":       {
         "code": 200,
         "resolve": true,
         "response":          {
            "traceId": null,
            "payload": "74183bd1-0dcf-11ed-9689-0050569e7799",
            "technicalMessage": "SMS enviado al número 4961170373",
            "functionalMessage": "Servicio invocado correctamente",
            "successful": true
         }
      },
      "tipoMensaje": "sms",
      "proveedor": "COA"
   },
      {
      "result":       {
         "code": 200,
         "resolve": true,
         "response":          {
            "enviados": [            {
               "proveedor": "cuenta-prueba",
               "id_destinatario": "[\"sbuendia@independencia.com.mx\"]",
               "uuid": "f62b47f0-aaad-4194-be2f-d0cf79e820e2"
            }],
            "encolados": [],
            "errores": []
         }
      },
      "tipoMensaje": "correo",
      "proveedor": "COA"
   }
]}

Elementos que lo consumen

ejemplo* - DAG: task-publisher - Interprete web: podlet-web-captura

Swagger

link de swagger de calidad swagger