El proyecto Sms Webhook Notifier permite entregar una notificación con el estado de cada mensaje enviado a través del API transaccional o del servicio de Campañas de SMS, para los clientes que cuenten con una configuración activa para este servicio.

Requisitos para el registro de un cliente

Para el registro de un nuevo cliente en el Sms Webhook Notifier, es necesario que el cliente cuente con un Endpoint de tipo POST sin restricción de autenticación en su API de servicios con el fin de recibir los eventos de los envíos. Se debe realizar la solicitud a Masiv informando de la necesidad y brindando la siguiente información:

  1. Id de la cuenta a registrar el endpoint
  2. Url del endpoint del cliente que recibirá las notificaciones
  3. Tamaño del Batch de eventos (Listado de eventos) que se desea recibir. Por defecto se asigna un tamaño de Batch 3000 eventos por petición. (Esto quiere decir que Masiv en cada petición de notificación, enviará hasta 3000 eventos en un listado de tipo Json).
  4. Tipo de eventos que se desean recibir (Es posible configurar el evento de nivel uno que corresponde a la recepción del mensaje por parte de Masiv, y el evento de nivel dos que corresponde a la definición y asignación del mensaje al Operador Móvil respectivo)
  5. Tipo de tráfico sobre el cual se espera la notificación de eventos (API transaccional y/o Campañas)

Estructura de los eventos notificados

En la siguiente tabla se especifican los posibles atributos que puede contener un evento notificado por medio de Sms Webhook Notifier

<aside> 💡 Aclaración: De acuerdo a la configuración del tamaño del Batch para cada cliente, Sms Webhook Notifier construirá un grupo acorde a la cantidad de eventos disponibles y pendientes por notificar y los enviará por medio una petición HTTP POST al endpoint especificado en la configuración particular de cada cliente.

</aside>

Atributo Tipo Descripción
CampaignName String Nombre de la campaña seleccionada en la plataforma para el envío (Aplica solo para envíos realizados por medio de Campañas).
PackageId String Identificador del envío masivo (Aplica solo para envíos realizados por medio de Campañas).
MessageId String Corresponde al Id interno del mensaje.
Sent String, Datetime ISO 8601 Fecha de envío del mensaje, Formato UTC 0.
IdOperator String Corresponde al Id interno del operador.
DestAddr String Número celular destino del SMS.
Status String (EventType) Corresponde al estado del envío del mensaje, los posibles estados se especifican en otra tabla a continuación.
ClientId Int Corresponde al Id de la cuenta que realiza el envío.
ClientName String Corresponde al nombre de la cuenta que realiza el envío.
Metadata Json Object Información enviada por el cliente en el parámetro 'Metadata'.
Reference String Corresponde al Id del mensaje entregado por el operador.
EventTime String, Datetime ISO 8601 Fecha de generación del Evento, Formato UTC.
MessageText String Corresponde al texto del SMS enviado.
Guid String Corresponde al identificador único del mensaje (Id interno asignado por Masiv).
Segments String Corresponde a la cantidad de segmentos del mensaje.
Sender String Corresponde a código corto por medio del cual se realiza el envío.
Country String Corresponde al código del país al que pertenece el número de teléfono al cual se realiza el envío.
Length Int Corresponde a la longitud del mensaje (Cantidad de caracteres).

Un ejemplo de una notificación se vería de la siguiente manera:

[
	{
		"CampaignName": "Prueba Sms",
		"PackageId": "3563063",
		"MessageId": "2035630631",
		"Sent": "0001-01-01T00:00:00",
		"IdOperator": "0",
		"DestAddr": "573132579839",
		"Status": "ReadyToSend",
		"ClientId": 6665,
		"ClientName": "Equiposms",
		"Metadata": null,
		"Reference": null,
		"Eventtime": "2023-04-12T22:14:36.318",
		"MessageText": "test campanas 05:13pm",
		"Guid": "c6b447cb-f544-465d-a219-d84291dbda67",
		"Segments": "1",
		"Sender": "87007",
		"Country": "CO",
		"Length": 21
	},
	{
		"CampaignName": "Prueba Sms 2",
		"PackageId": "3563067",
		"MessageId": "2035630665",
		"Sent": "0001-01-01T00:00:00",
		"IdOperator": "0",
		"DestAddr": "573132576789",
		"Status": "ReadyToSend",
		"ClientId": 6665,
		"ClientName": "Equiposms",
		"Metadata": null,
		"Reference": null,
		"Eventtime": "2023-04-12T22:15:36.318",
		"MessageText": "test campanas 03:36pm",
		"Guid": "c6b447cb-f544-465d-a219-d84291dfed56",
		"Segments": "2",
		"Sender": "87007",
		"Country": "CO",
		"Length": 23
	}
]

Los posible valores para el atributo Status se especifican en la siguiente tabla:

Estado Descripción
ReadyToSend Significa que el mensaje ha sido recibido por Masiv de forma correcta y está listo para ser enviado
OperatorAssignment Significa que el mensaje ha pasado por el proceso de consulta de portabilidad de forma correcta y ya se encuentra asignado al operador móvil correspondiente
FormatError Significa que se el mensaje no ha pasado satisfactoriamente por le proceso de validación de formato
LengthError Significa que el tipo de mensaje (Long, Short) no es acorde con la longitud del texto a enviar
RepetitionError Significa que existe un mensaje con el mismo texto y configuración para un mismo número de teléfono en la misma campaña, y además se habilitó la opción de validación de repetidos para dicha campaña
Cancelled Significa que el mensaje pertenece a una campaña que fue cancelada
UndefinedRoute Significa que no existe una ruta configurada que relacione al cliente que realiza el envío, con el operador al cual pertenece el número de teléfono destino del SMS
TouchesRestricted Significa que el mensaje fue restringido por haber alcanzado el límite de toques permitido (Ley 2300 de Colombia)
ScheduleRestricted Significa que el mensaje fue restringido por haber sido enviado dentro del horario restringido (Ley 2300 de Colombia)
UrlShortError Significa que se presentó un fallo durante la generación de la URL Corta para el mensaje
Unsubscribed Significa que el número de teléfono destino del SMS se encuentra dentro de la lista de números desuscritos para el cliente que intenta realizar el envío
Error Significa que se presentó un error general no controlado durante el procesamiento del mensaje