API de callback
Visión general
Los datos de estado de los mensajes se devuelven mediante callback al sistema empresarial de la empresa, y se puede realizar un análisis estadístico basado en la información.
Dirección de callback
La empresa debe configurar la dirección de callback para recibir los cambios de estado de los mensajes. Actualmente, no hay una interfaz web. Contactar con el personal técnico de Engagelab para configurar la dirección de callback.
Verificación de validez de la dirección de callback
Al configurar la dirección de callback en la administración del backend de Push, en Configuración de la aplicación, se enviará una solicitud POST con una cadena aleatoria de 8 caracteres como parámetro del cuerpo de la solicitud echostr. Se debe devolver el valor de echostr en el cuerpo de la respuesta, siguiendo el formato que se indica a continuación:
Cuerpo de la solicitud:
{
"echostr": "12345678"
}
Cuerpo de la respuesta:
12345678
Mecanismo de seguridad
Se utiliza para la autenticación del cliente, opcional.
Para garantizar que el origen de los mensajes sea Engagelab, se puede optar por autenticar el origen de los datos POST. Alternativamente, se pueden analizar directamente los datos POST sin autenticación.
El método de autenticación es el siguiente:
- Configurar un nombre de usuario de callback (
username) y un secreto de callback (secret) en la consola de Engagelab para la dirección de callback.
Recuperar X-CALLBACK-ID del encabezado de la solicitud, tal como se muestra en el ejemplo siguiente:
X-CALLBACK-ID: timestamp=1681991058;nonce=123123123123;username=test;signature=59682d71e2aa2747252e4e62c15f6f241ddecc8ff08999eda7e0c4451207a16b
Aquí:
timestampes la marca de tiempo del mensaje de callback (en formato estándar),noncees un número aleatorio,signaturees la información de firma.
El método de firma es el siguiente:
signature=HMAC-SHA256(secret, timestamp+nonce+username)
Mecanismo de respuesta
Después de que el servicio del desarrollador reciba el callback de Engagelab, debe responder en un plazo de 3 segundos según los siguientes requisitos:
- Recibido correctamente: el código de estado de la respuesta HTTP debe devolver
200o204y no se requiere ningún mensaje de respuesta. - Error al recibir: el código de estado de la respuesta HTTP debe devolver
5XXo4XXy un mensaje de respuesta. El formato es el siguiente:
{
"code": 2002,
"message": "error"
}
| Campo | Tipo | Obligatorio/Opcional | Descripción |
|---|---|---|---|
code |
int | Opcional | Códigos de error |
message |
string | Opcional | Detalles del error |
Explicación de campos de callback
Cuerpo del mensaje
| Nombre del campo | Tipo | Obligatorio/Opcional | Descripción |
|---|---|---|---|
total |
int | Obligatorio | El número de mensajes incluidos en este callback |
rows |
array | Obligatorio | Una lista de información detallada sobre el cambio de estado del mensaje, que contiene los campos siguientes |
Campos del array rows
| Nombre del campo | Tipo | Obligatorio/Opcional | Descripción |
|---|---|---|---|
message_id |
string | Obligatorio | Identificador único del mensaje |
from |
string | Opcional | Remitente; el valor predeterminado es appkey |
to |
string | Opcional | Identificador del destinatario (p. ej., registrationID) |
server |
string | Obligatorio | Nombre del servicio de mensajes; valores posibles: WebPush |
channel |
string | Obligatorio | Canal del mensaje; valores posibles: EngageLab, Chrome, Firefox, Safari, Edge, Opera, Other |
custom_args |
object | Opcional | Parámetros personalizados enviados durante la creación del mensaje; se devuelven tal cual |
itime |
int | Obligatorio | Marca de tiempo real en la que se produjo el estado del mensaje; se puede utilizar con message_status para obtener la marca de tiempo de cada estado del mensaje |
status |
object | Obligatorio | Información del estado del mensaje, que contiene los campos siguientes |
Campos del objeto status
| Nombre del campo | Tipo | Obligatorio/Opcional | Descripción |
|---|---|---|---|
message_status |
string | Obligatorio | Estado del mensaje; valores posibles: target_valid, sent, delivered, click, target_invalid, sent_failed, delivered_failed, no_click |
status_data |
object | Opcional | Datos de estado personalizados, que contienen los campos siguientes |
channel_message_id |
string | Opcional | ID del mensaje de canales de terceros |
ntf_msg |
int | Obligatorio | Tipo de mensaje; valores posibles: 1: Notification, 2: Custom Message, 7: In-App Message |
platform |
string | Obligatorio | Plataforma de push; valores posibles: b: Web |
uid |
int | Obligatorio | UID del destinatario del mensaje push |
app_version |
string | Obligatorio | Versión de la aplicación integrada con el SDK, obtenida mediante datos reportados por el SDK |
channel |
string | Obligatorio | Canal de la aplicación integrada con el SDK, obtenido mediante datos reportados por el SDK |
msg_time |
int | Obligatorio | Hora de entrega del mensaje; la hora en la que la solicitud de la API para enviar el mensaje se completa correctamente |
time_zone |
string | Obligatorio | Zona horaria de la organización |
loss_valid_type |
int | Opcional | Este campo no tiene significado real y no es necesario procesarlo |
plan_user_total |
int | Opcional | Este campo no tiene significado real y no es necesario procesarlo |
callback_type |
int | Opcional | Este campo no tiene significado real y no es necesario procesarlo |
error_code |
int | Opcional | Código de error; se proporciona únicamente en caso de fallo |
error_detail |
object | Opcional | Información detallada del error; se proporciona únicamente en caso de fallo e incluye los campos siguientes |
message |
string | Opcional | Describe el motivo detallado del error; solo aplica para el canal FCM |
loss |
object | Opcional | Información de pérdida, que contiene los campos siguientes |
loss_source |
string | Opcional | Origen de la pérdida; valores posibles: EngageLab, Chrome, Firefox, Safari, Edge, Opera, Other |
loss_step |
int | Opcional | Etapa de pérdida; valores posibles: 1: Plan Target → Valid Target, 2: Valid Target → Sent Quantity, 3: Sent Quantity → Delivered Quantity, 4: Delivered Quantity → Click Quantity |
Valores de estado del mensaje
| Valor de estado | Significado | Descripción |
|---|---|---|
target_valid |
Destino válido | Se considera válido si ha estado activo en los últimos 365 días |
sent |
Enviado correctamente | Enviado correctamente al servidor |
delivered |
Entregado correctamente | Entregado según el callback real |
click |
El usuario hizo clic | Clic del usuario informado por el SDK |
target_invalid |
Destino no válido | Se considera no válido según la etapa de pérdida 1, tal como se define |
sent_failed |
Error de envío | Se considera no válido según la etapa de pérdida 2, tal como se define |
delivered_failed |
Error de entrega | Se considera fallo según la etapa de pérdida 3, tal como se define |
no_click |
Error de clic | Se considera fallo según la etapa de pérdida 4, tal como se define; solo aplica a mensajes in-app |
Fase de pérdida
- Destinos planificados → Destinos válidos
- Destinos válidos → Enviados
- Enviados → Entregados
- Entregados → Clics
Nota:
- Los clics y las entregas en algunos canales pueden estar duplicados; se puede realizar la desduplicación por cuenta propia.
- La cantidad de entrega y la cantidad de visualización no se reajustarán 5 días después de que la entrega sea correcta.
