Push API v4
Enviar una notificación o un mensaje a un único dispositivo o a una lista de dispositivos.
El contenido del push solo puede ser un único objeto push en formato JSON.
Para funciones relacionadas con etiquetas/alias, consulte AppPushAPI.
Esta es la versión más reciente de la Push API. Las mejoras de la versión v4 son las siguientes:
- Se utiliza autenticación básica HTTP (HTTP Basic Authentication) para autorizar el acceso. De este modo, se puede completar toda la solicitud de la API utilizando herramientas HTTP comunes, como curl y complementos del navegador.
- El contenido del push está en formato JSON.
Límites de tasa de solicitudes
Nuestra API impone límites a la frecuencia de llamadas para garantizar la estabilidad y la equidad del servicio. Los límites de QPS (consultas por segundo) para cada AppKey son los siguientes:
- Límite estándar: un máximo de 500 solicitudes por segundo.
- Límite avanzado: si usted es suscriptor de nuestro plan de pago y su AppKey de pago requiere un límite de QPS más alto, póngase en contacto con nuestro equipo comercial: Sales@engagelab.com.
Validación de llamadas
Para obtener más información, consulte Método de autenticación
Dirección de llamada
POST /v4/push
Ejemplos de solicitud
Encabezado de solicitud
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Cuerpo de la solicitud
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !",
"web": {
"alert": "Hi,MTPush !",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": "business info"
}
Parámetros de la solicitud
La estructura de parámetros del push se detalla en la tabla siguiente:
| Palabra clave | Tipo | Opción | Descripción |
|---|---|---|---|
| from | String | Opcional | Remitente del negocio actual |
| to | String o JSON Object | Obligatorio | Destino de envío |
| body | JSON Object | Obligatorio | Cuerpo de la solicitud de envío |
| platform | String o JSON Array | Obligatorio | Plataforma de push |
| notification | JSON Object | Opcional | |
| message | JSON Object | Opcional | |
| options | JSON Object | Opcional | Parámetros de push |
| request_id | String | Opcional | Campo opcional personalizado que utiliza el cliente para identificar la solicitud y que se devuelve en la respuesta. |
| custom_args | JSON Object | Opcional | Campos opcionales personalizados por el cliente, que se devuelven al cliente durante el callback. |
from
El remitente del negocio actual. El valor es de tipo String y es opcional.
Ejemplos de solicitud
{
"from":"push"
}
to
Objeto de dispositivo de push, que indica la lista de dispositivos a los que se puede enviar un push. MTPush proporciona dos métodos: Registration ID y difusión.
Destino de push
| Palabra clave | Tipo | Significado | Descripción | Nota |
|---|---|---|---|---|
| all | String | Difusión | Enviar a todos los dispositivos | Enviar a los dispositivos objetivo que hayan estado activos en los últimos 365 días. |
| registration_id | JSON Array | Registration ID | Array. La relación entre múltiples registration_id es OR, es decir, la unión. | El ID del dispositivo. Se pueden enviar como máximo 1000 por vez. |
| tag | JSON Array | Etiqueta | Array. La relación entre múltiples etiquetas es OR, es decir, se toma la unión. | Utilizar etiquetas para segmentar atributos de dispositivos y atributos de usuarios a gran escala. |
| tag_and | JSON Array | Etiqueta AND | Array. Múltiples etiquetas están en relación AND, es decir, se toma la intersección. | Tener en cuenta la distinción con tag; hasta 20 por vez. |
| tag_not | JSON Array | Etiqueta NOT | Array. Entre múltiples etiquetas, primero se toma el conjunto combinado de múltiples etiquetas y, después, se toma el conjunto complementario de ese resultado. | Enviar hasta 20 por vez. |
| alias | JSON Array | Alias | Array. Múltiples alias están en relación OR, es decir, se toma la unión. | Identificar a un usuario mediante un alias. |
La relación implícita entre múltiples valores en un array es OR, es decir, se toma la unión; sin embargo, tag_and es diferente, ya que la relación entre múltiples valores en un array es AND, es decir, se toma la intersección.
Si se utiliza tag_not de forma independiente, se realizará el procesamiento tag_not entre los usuarios de difusión.
Estos tipos pueden coexistir. La relación implícita entre múltiples tipos cuando coexisten es AND, es decir, se toma la intersección. Por ejemplo:
"to" : {"tag" : [ "tag1", "tag2"],
"tag_and" : ["tag3", "tag4"],
"tag_not" : ["tag5", "tag6"]
}
Primero, calcular el resultado del campo "tag": tag1 or tag2 = A;
A continuación, calcular el resultado del campo "tag_and": tag3 and tag4 = B;
A continuación, calcular el resultado del campo "tag_not": not (tag5 or tag6) = C;
El resultado final de "to" es A and B and C.
Ejemplos de solicitud
- Enviar a todos (difusión):
{
"to": "all",
}
- Enviar a múltiples Registration ID:
{
"to": {
"registration_id": [
"1a3018970ab49abcd8e",
"1537bfd3f7d57d13cef",
"163a3797c816b1160dc"
]
}
}
body
Cuerpo de la solicitud de envío. Los campos admitidos son los siguientes:
| Palabra clave | Tipo | Opción | Descripción |
|---|---|---|---|
| platform | String o JSON Array | Obligatorio | Plataforma de push |
| notification | JSON Object | Opcional | |
| message | JSON Object | Opcional | |
| options | JSON Object | Opcional | Parámetros de push |
platform
MTPush actualmente solo admite push en la plataforma Web, por lo que la palabra clave de platform es: "web".
{ "platform" : "web" }
notification
El objeto "notification" es uno de los objetos de contenido de un push (el otro es "message"), y se envía a la Web como una notificación.
| Palabra clave | Tipo | Opción | Significado | Descripción |
|---|---|---|---|---|
| web | JSON Object | Obligatorio | Atributo de plataforma | Parámetros de push de la plataforma |
web
Notificación en la plataforma Web.
| Palabra clave | Tipo | Opción | Significado | Descripción |
|---|---|---|---|---|
| alert | String o JSON Object | Obligatorio | Contenido | El contenido del mensaje en sí; si se especifica aquí, sobrescribe el alert de nivel superior. |
| url | String | Obligatorio | URL de Web Push | Dirección de redirección al hacer clic en la notificación |
| title | String | Opcional | Título | Título del mensaje |
| extras | JSON Object | Opcional | Campos ampliados | Información Key/Value personalizada en formato JSON para uso empresarial. |
| icon | String | Opcional | Icono de notificación | Se recomienda 192×192 px, sin restricción estricta; tamaño máximo 1 M, formatos: JPG, PNG, GIF. Compatible con Chrome, Firefox (Safari y Edge no admiten personalización). |
| image | String | Opcional | Imagen grande | Se recomienda 360×180 px, sin restricción estricta; tamaño máximo 1 M, formatos: JPG, PNG, GIF. Compatible con Chrome, Edge (Firefox y Safari no son compatibles). |
{
"notification": {
"web": {
"alert": "hello, Push!",
"title": "Push Test",
"url":"http://www.google.com",
"icon":"",
"image":"",
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
message
Mensaje dentro de la aplicación. También conocido como: mensaje personalizado o mensaje transparente. Este contenido no se mostrará en el navegador. Tras recibir el contenido del mensaje, el SDK lo transmite a la Web, que se encarga de la lógica empresarial.
El mensaje contiene los siguientes campos:
| Palabra clave | Tipo | Opción | Descripción |
|---|---|---|---|
| msg_content | String o JSON Object | Obligatorio | Contenido del mensaje |
| title | String | Opcional | Título del mensaje |
| content_type | String | Opcional | Tipo de contenido del mensaje |
| extras | JSON Object | Opcional | Parámetros opcionales en formato JSON |
Ejemplo:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
options
Opciones de push. Actualmente incluye las siguientes opciones:
| Palabra clave | Tipo | Opción | Significado | Descripción |
|---|---|---|---|---|
| time_to_live | Int o String | Opcional | Duración de retención de mensajes offline (segundos) | |
| override_msg_id | Long | Opcional | ID del mensaje a sobrescribir | Si el push actual debe sobrescribir un push anterior, introduzca aquí el msg_id del push anterior: |
| big_push_duration | Int | Opcional | Duración del push a velocidad controlada (minutos) | |
| web_buttons | JSON Object | Opcional | Añadir botones a la notificación | |
| multi_language | JSON Object | Opcional | Configuración de push multilingüe | Configuración de adaptación multilingüe del contenido del push. Para más detalles, consulte multi_language. |
| third_party_channel | JSON Object | Opcional | Información de configuración del canal del sistema Web | Parámetro válido solo para usuarios configurados con canales del sistema. Para más detalles, consulte third_party_channel. |
| plan_id | String | Opcional | Identificador del plan de push | Es necesario crear previamente un valor de identificador de plan, que se puede crear desde la consola o a través de la API. |
| cid | String | Opcional | Identificador de solicitud de push para evitar pushes duplicados | Solo se permiten letras, números, guiones bajos y guiones, con una longitud máxima de 64 caracteres. Este campo debe ser único bajo el mismo AppKey. |
multi_language
Este campo es la funcionalidad de push multilingüe del servicio EngageLab Push. Permite enviar notificaciones personalizadas para usuarios de diferentes idiomas. Al especificar múltiples idiomas y su contenido de mensaje, título correspondiente en la solicitud de push, puede enviar notificaciones adecuadas según la configuración de idioma del usuario.
Parámetros de solicitud
| Palabra clave | Tipo | Opción | Significado | Descripción |
|---|---|---|---|---|
| en | String | Opcional | Clave de idioma múltiple | Corresponde al idioma del usuario del push. Consulte los códigos de idioma en el apéndice. |
| content | String | Opcional | Contenido del mensaje | Reemplaza los datos de notification.web.alert y message.msg_content según el idioma del usuario. |
| title | String | Opcional | Título del mensaje | Reemplaza los datos de notification.web.title y message.title según el idioma del usuario. |
Ejemplo de solicitud
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
}
}
}
}
web_buttons
Utilice el parámetro web_buttons para describir el id, texto, icono y url del botón. La descripción de los parámetros es la siguiente:
| Palabra clave | Tipo | Opción | Significado | Descripción |
|---|---|---|---|---|
| id | Obligatorio | String | ID del botón | Compatible con Chrome 48+ |
| text | Obligatorio | String | Contenido del botón | Compatible con Chrome 48+ |
| icon | Opcional | String | Icono del botón | Compatible con Chrome 50+ |
| url | Obligatorio | String | Enlace de redirección del botón | Compatible con Chrome 48+. Si se utiliza web_buttons, la url del campo web no tendrá efecto. |
Ejemplo:
[
{
"id": "like-button",
"text": "Like",
"icon": "http://i.imgur.com/N8SN8ZS.png",
"url": "https://yoursite.com"
},
{
"id": "read-more-button",
"text": "Read more",
"icon": "http://i.imgur.com/MIxJp1L.png",
"url": "https://yoursite.com"
}
]
third_party_channel
Este campo se utiliza para rellenar la información personalizada del canal del sistema Web. El nombre de la clave es w3push y el valor es un objeto JSON que solo contiene un campo opcional distribution de tipo String.
| Palabra clave | Tipo | Opción | Significado | Descripción |
|---|---|---|---|---|
| distribution | Obligatorio | String | Establecer la prioridad de entrega cuando Engagelab y el canal del sistema coexisten | El valor no puede ser una cadena vacía. El valor predeterminado es first_ospush. |
Ejemplo:
{
"third_party_channel":{
"w3push":{
"distribution":"mtpush"
}
}
}
request_id
ID de solicitud, campo opcional personalizado por el cliente. El cliente lo utiliza para identificar la solicitud y se devuelve en la respuesta.
Ejemplo de solicitud
{
"request_id":"12345678"
}
Ejemplo de respuesta
custom_args
Campo opcional personalizado por el cliente. No se devuelve en la respuesta, pero se devuelve durante el callback.
{
"custom_args":"business info"
}
Parámetros de respuesta
Respuesta exitosa
| Campo | Tipo | Opción | Descripción |
|---|---|---|---|
| request_id | String | Opcional | El ID personalizado enviado en la solicitud, se devuelve tal cual en la respuesta. |
| message_id | String | Obligatorio | ID del mensaje, identifica de forma única un mensaje. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id":"18","msg_id":"1828256757"}
Respuesta fallida
El código de estado HTTP es 4xx o 5xx. El cuerpo de la respuesta contiene los siguientes campos:
| Campo | Tipo | Opción | Descripción |
|---|---|---|---|
| code | int | Obligatorio | Código de error. Consulte la descripción de Códigos de error. |
| message | String | Obligatorio | Detalles del error |
{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
Respuesta de llamada
Código de estado HTTP
Documento de referencia: HTTP-Status-Code
Códigos de error
| Code | Descripción | Explicación detallada | HTTP Status Code |
|---|---|---|---|
| 20101 | Parámetro de push no válido | registration_id no válido o no pertenece al appkey actual | 400 |
| 21001 | Solo se admite el método HTTP Post | No se admite el método Get | 405 |
| 21002 | Falta un parámetro obligatorio | Debe corregirse | 400 |
| 21003 | Valor del parámetro no válido | Debe corregirse | 400 |
| 21004 | Error de autenticación | Debe corregirse. Para más detalles, consulte: validación de llamadas | 401 |
| 21005 | Cuerpo del mensaje demasiado grande | Debe corregirse. Límite de longitud de Notification+Message: 2048 bytes | 400 |
| 21008 | Parámetro app_key no válido | Debe corregirse. Verifique si el appkey transmitido es una cadena de 24 caracteres y si contiene espacios adicionales. | 400 |
| 21009 | Error interno del sistema | Debe corregirse | 400 |
| 21011 | No hay destinos de push que cumplan las condiciones | Verifique el campo to | 400 |
| 21015 | Error de validación de parámetros de solicitud | Existen parámetros no esperados | 400 |
| 21016 | Error de validación de parámetros de solicitud | Tipo de parámetro incorrecto o longitud del parámetro excede el límite | 400 |
| 21039 | Error en parámetros de web button | id, url o text del botón están vacíos | 400 |
| 21040 | Error en parámetros de web button | La cantidad de botones excede 2 | 400 |
| 21041 | Error en parámetros de web button | Formato de url no válido | 400 |
| 21042 | Error en parámetros de web button | id del botón duplicado | 400 |
| 21030 | Tiempo de espera del servicio interno | Reintentar más tarde | 503 |
| 23006 | Error de parámetro | big_push_duration del push a velocidad controlada excede el valor máximo 1440 | 400 |
| 23008 | Límite de tasa de la interfaz | El QPS de la interfaz de push de la aplicación ha alcanzado el límite (500 qps) | 400 |
| 27000 | Error de memoria del sistema | Reintentar | 500 |
| 27001 | Información de autenticación no válida | El AppKey en Basic Auth tiene 24 caracteres pero la aplicación no existe, o la información de autenticación de la aplicación no es válida | 401 |
| 27008 | Error de parámetro | distribution en third_party_channel no está vacío, pero el contenido alert de notification está vacío | 401 |
| 27009 | Error de parámetro | El formato de distribution en third_party_channel no es válido o está vacío | 401 |
Restricciones de push
| Canal | Longitud del título | Longitud del contenido | Otras instrucciones |
|---|---|---|---|
| Canal Engagelab | Sin límite, pero se limita el tamaño total del cuerpo del mensaje | Sin límite, pero se limita el tamaño total del cuerpo del mensaje | La longitud de Notification en MTPush está limitada a 4000 bytes. |
| Canal del sistema | < 20 caracteres (40 caracteres en inglés) | Ninguna |
Códigos de idioma
| Nombre del idioma | Código de idioma |
|---|---|
| Inglés | en |
| Árabe | ar |
| Chino (simplificado) | zh-Hans |
| Chino (tradicional) | zh-Hant |
| Checo | cs |
| Danés | da |
| Neerlandés | nl |
| Francés | fr |
| Alemán | de |
| Hindi | hi |
| Italiano | it |
| Japonés | ja |
| Coreano | ko |
| Malayo | ms |
| Ruso | ru |
| Español | es |
| Tailandés | th |
| Vietnamita | vi |
| Indonesio | id |
| Noruego | no |
| Sueco | sv |
| Polaco | pl |
| Turco | tr |
| Hebreo | he |
| Portugués | pt |
| Rumano | ro |
| Húngaro | hu |
| Finés | fi |
| Griego | el |
| Ucraniano | uk |
| Laosiano | lo |
| Portugués (Portugal) | pt_PT |
| Portugués (Brasil) | pt_BR |
| Español (Argentina) | es_AR |
| Español (España) | es_ES |
| Español (Latinoamérica) | es_419 |










