Plataforma Mensajeria

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

La plataforma de mensajería está diseñada para centralizar todos los proveedores, templates de mensajes y reglas, en la distribucion de algún tipo de mensaje como SMS, emails, notificaciones Push, WhatsApp, entre otros.

Diagrama de flujo

Diagrama de Plataforma de mensajeria

La plataforma de mensajería va a estar ligada a un suscriptor de kafka, el cual va a estar escuchando a un tópico en específico. Lo importante de este suscriptor es que está basado en apache Flink lo que genera una paralelización en el consumo de los mensajes en el tópico, teniendo un mayor performance.

Este suscriptor manda a llamar a un servicio llamado layer-api-message-rules-service quien es el core de la plataforma de mensajería. Este a su vez consulta servicios relacionados con la medición de consumo de una aplicación a la plataforma, para evitar un sobre consumo de alguna aplicación, también esta relacionado con un servicio de render de templates para poder tener un servicio que intérprete una plantilla con la data específica del mensaje. Y, finalmente el core determina el proveedor al que se hace el envió de mensaje de acuerdo a unas reglas determinadas en la configuración para ese mensaje en específico y de acuerdo a la información retornada por el proveedor, se envía un callback a un servicio especificado en la petición inicial.

Posteriormente se dará una explicación mas a fondo de cada uno de estos componentes o características de la plataforma de mensajería.

Publicación de mensaje a kafka

Con cada envio de mensaje se es asignado un id, el cual es generado antes de ser procesado el envió del mensaje.

{
   "idMensaje": "",    //id con el cual se identifica este envió de mensaje
   "appName": "",      //nombre de la aplicación
   "reglas": {         
       "template": ""  //nombre que tiene la configuración, dicha configuración ara uso de los datos recibidos para enviar el o los mensajes de acuerdo a las validaciones de la configuracion
   },                  
   "callback": "",     //respuesta del mensaje
   "data": {           //datos que son utilizados por la configuración(para enviar el mensaje a los destinatarios) y el template(para dar formato a los datos recibidos) 
       "celular": "",  
       "nombre": "",   
       "email": ""     
   }
}

Medición de Consumo por APP

Por medio de un servicio, se tiene que establecer el consumo máximo que puede hacer una aplicación, este consumo máximo esta relacionado con cuantos id solicita hacia el layer api rate consumer service y sera utilizado su consumo hasta que la aplicación mande el mensaje con el id que solicito, en caso de no ser enviado, el id caduca y se borra, de ser necesario la aplicación puede pedir nuevos ids para enviar mensajes.

Motor de Plataforma de Mensajería

Templates

Un template le da formato a los datos recibidos desde el servicio de layer-api-message-rules-service, es decir le da forma a los datos para mostrar el mensaje ya renderizado que vera el usuario final.

{
   "id_template": "contacto-cliente-promo",							//Id del template con el cual se identificará este template
   "tipo_template": "correo",									//Tipo de mensaje, con este se selecciona el template de todos los templates creados
   "template": " Hola! [nombre] Tu crédito por [montoCredito] ha sido [statusCredito]"		//Formato que tendrá el template, junto con los datos obtenidos del data
}

Configuraciones

Aquí realiza la evaluación de los datos recibidos en base a la configuración que se estableció, dependiendo de las evaluaciones realizadas realizara el envio del mensaje igualmente establecido por la misma configuración. Ejemplo:

{
   "nombre": "template-1",						//Nombre del template 
   "tipoMensaje": "sms",						//Tipo del mensaje por el cual sera enviado
   "configuracion": [							//Array de configuraciones, puede tener tantas sean deseadas
       {
           "evaluation": "data.empresa == 'AFI'",			//Evaluaciones que se deben cumplir para efectuar este mensaje
           "proveedores": [
               {
                   "data": "{telefono:data.celular, mensaje:data.messageRendered, servicio:'AUTONOMATION', claveEmpresa:'000100000000',subCuenta:'1000000001'}",
                   "proveedor": "COA",					//Proveedor por el cual se mandara el mensaje
                   "porcentaje": 100					//Porcentaje al cual se le dara prioridad
               }
           ],
           "tipoMensaje": "sms-2"					//Selección del template
       },
       {                                                               //En este ejemplo hay dos configuraciones
           "evaluation": "data.empresa != 'AFI'",
           "proveedores": [
               {
                   "data": "{telefono:data.celular, mensaje:data.messageRendered, servicio:'AUTONOMATION',claveEmpresa:'000100000000',subCuenta:'1000000001'}",
                   "proveedor": "COA",
                   "porcentaje": 100
               }
           ],
           "tipoMensaje": "sms"
       }
   ]
}

Proveedores

Es un listado de los proveedores por los cuales serán el medio para mandar el mensaje al usuario final, estos proveedores pueden ser sms, correo, push notification, whatsapp entre otros.

Interprete de la Plataforma de Mensajería

Callback

El callback confirma si el mensaje fue enviado o si tuvo algún error.

Servicios