API de tareas programadas
La capa de API admite funciones temporizadas y mantiene un objeto Schedule para la ejecución independiente de tareas.
Nota: Las tareas programadas creadas mediante la API solo se pueden recuperar, modificar o eliminar mediante llamadas a la API.
Autenticación
Para más detalles, se pueden consultar los métodos de autenticación en la visión general de la API REST.
Descripción de parámetros de Schedule
Cada tarea programada consta de cuatro secciones: name, enabled, trigger y push.
| Parámetro | Tipo | Opcional | Descripción |
|---|---|---|---|
| name | String | No | El nombre de la tarea programada no debe superar los 255 bytes y debe estar compuesto por caracteres chinos, letras, números y guiones bajos. |
| enabled | Boolean | No | Indica el estado actual de la tarea; debe ser true al crear una tarea. |
| trigger | JSON Object | No | Las condiciones de activación y el momento de ejecución de la tarea programada. Actualmente se admiten tareas de una sola vez (single), tareas periódicas (periodical) y entrega inteligente (intelligent). Para más detalles, consultar la descripción de single. |
| push | JSON Object | No | La información de contenido del push; ver los campos en la documentación de AppPush. |
Descripción de single
Describe las condiciones de activación de la tarea programada, incluido el momento de activación y el tipo de tarea programada.
| Parámetro | Tipo | Opcional | Descripción |
|---|---|---|---|
| time | String | No | La hora de activación de la tarea programada, en el formato de hora estándar "yyyy-mm-dd hh:mm:ss", por ejemplo, "2014-02-15 13:16:59". No se aceptan formatos incompletos como "2014-2-15 13:16:59" o "2014-12-15 13:16". La hora más tardía de una tarea programada no puede superar un año. |
| zone_type | Int | No | Indica el tipo de tarea programada: 1 para activación según la zona horaria configurada en el sitio principal, 2 para activación según la zona horaria del terminal del usuario. |
Descripción de periodical
| Parámetro | Tipo | Opcional | Descripción |
|---|---|---|---|
| start | String | No | La hora de inicio de vigencia de la tarea periódica, estrictamente en el formato "yyyy-MM-dd HH:mm:ss", y debe estar en formato de 24 horas. |
| end | String | No | La hora de expiración de la tarea periódica, en el mismo formato que el anterior. El intervalo máximo de una tarea periódica no debe superar un año. |
| time | String | No | La hora específica en la que se activa la tarea periódica, estrictamente en el formato "HH:mm:ss", y debe estar en formato de 24 horas. |
| time_unit | String | No | La unidad de tiempo mínima para la ejecución de la tarea periódica, con tres opciones: "day", "week" y "month". No distingue entre mayúsculas y minúsculas. |
| point | String | No | Una lista correspondiente a time_unit: consultar la tabla siguiente. |
| zone_type | Int | No | Indica el tipo de tarea programada: 1 para activación según la zona horaria configurada en el sitio principal, 2 para activación según la zona horaria del terminal del usuario. |
Información detallada sobre el parámetro point:
| time_unit | point | Descripción |
|---|---|---|
| day | NULL | Cuando time_unit es day, point no aplica. |
| week | "MON","TUE","WED","THU","FRI","SAT","SUN" | Para week, point puede ser uno o varios días que indican cuándo se activa; no distingue entre mayúsculas y minúsculas. |
| month | "01","02","03" ... "31" | Para month, point corresponde a fechas válidas del mes; no se activará en fechas no válidas, como el 31 o el 30 de febrero. |
Descripción de intelligent
| Parámetro | Tipo | Opcional | Significado |
|---|---|---|---|
| backup_time | String | Obligatorio | La entrega inteligente es una función exclusiva de EngageLab, diseñada para optimizar la tasa de clics de las notificaciones. Cada vez que un usuario accede a su servicio a través de un sitio web o una app móvil con el SDK de EngageLab instalado, se rastrea la hora de actividad más reciente del usuario. El sistema registra estos datos y, en función de los hábitos de uso previos del usuario, envía notificaciones a cada usuario en el momento adecuado según la zona horaria del terminal de cada usuario. Para los usuarios sin datos históricos de actividad, se debe elegir entre enviarlo inmediatamente o especificar una hora de envío (según la zona horaria del usuario final). |
Creación de una tarea programada
Endpoint
POST v4/schedules
Limitaciones
- El número total de tareas programadas efectivas (aún no expiradas) está limitado de forma predeterminada a 1000. La creación de nuevas tareas fallará si se supera este número.
- No hay restricciones sobre el intervalo máximo de una tarea programada, pero se recomienda no superar 1 año.
- El nombre de la tarea programada no puede superar 255 caracteres y solo puede contener números, letras, guiones bajos y caracteres chinos.
Ejemplo de solicitud
Encabezados de la solicitud
POST /v4/schedules
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Cuerpo de la solicitud
Ejemplo de solicitud de tarea programada única
{
"name":"Timed Push Example_single",
"enabled":true,
"trigger":{
"single":{
"time":"2022-11-23 19:20:00",
"zone_type":1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"android",
"notification":{
"alert":"Scheduled task from API",
"android":{
"title":"Scheduled task from API",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push to you"
}
}
}
Ejemplo de solicitud de tarea programada periódica
{
"name":"Timed Push Example_periodical",
"enabled":true,
"trigger":{
"periodical": {
"start": "2024-01-01 00:00:00",
"end": "2024-02-10 00:00:00",
"time": "12:00:00",
"time_unit": "day",
"point": [],
"zone_type": 1
}
},
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"android",
"notification":{
"alert":"repeats periodic tasks",
"android":{
"title":"repeats periodic tasks",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"67890",
"custom_args":{
"Engagelab": "push to you"
}
}
}
Ejemplo de solicitud de entrega inteligente
{
"name":"Intelligent delivery",
"enabled":true,
"trigger":{
"intelligent": {
"backup_time":"2024-01-01 00:00:00"
}
} ,
"push":{
"from":"push",
"to":{
"registration_id":[
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body":{
"platform":"android",
"notification":{
"alert":"Scheduled task from API",
"android":{
"title":"Scheduled task from API",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push to you"
}
}
}
Explicación de los datos de la solicitud
zone_typedebe completarse con los valores de campo especificados (1 o 2); de lo contrario, el push se realizará según la zona horaria del servidor.- Cuando una tarea programada se crea inicialmente, el campo
enableddebe ser true. La creación de una tarea conenabled: falsefallará. pushdebe ser una acción de push válida y correcta; de lo contrario, la creación fallará.
Ejemplo de respuesta
Respuesta correcta
HTTP/1.1 200 OK
Content-Type: application/json
{
"schedule_id": "a9b85590-6cec-4f91-b277-2d82b0e20ef6",
"name": "Timed Task Name"
}
Respuesta de error
HTTP/1.1 400 BAD REQUEST
Content-Type: application/json; charset=utf-8
{
"error": {
"code": 28400,
"message": "error message"
}
}
Obtener una lista de tareas programadas válidas
- Obtiene una lista de las tareas programadas actuales efectivas (no expiradas).
Endpoint
GET v4/schedules?page=
Ejemplo de solicitud
Encabezados de la solicitud
GET /v4/schedules?page=
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
- Se devuelven los detalles de la lista de schedule-task de la página solicitada. Si no se especifica la página, el valor predeterminado es la página 1.
- El orden se realiza por hora de creación y lo gestiona el schedule-service.
- Si el número de página solicitado supera el total de páginas,
pageserá el valor solicitado yschedulesestará vacío. - Se devuelve un máximo de 50 tareas por página. Si el número real de tareas en la página solicitada es inferior a 50, se devuelve el número real de tareas.
Ejemplo de respuesta
Respuesta correcta
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"total_count": 1000,
"total_pages": 5,
"page": 4,
"schedules": [
{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "",
"enabled": true
},
{} // List of detailed information.
]
}
- Esto indica un total de 1000 schedule-tasks, en 5 páginas, siendo la página actual la 4, con información de 50 schedule-tasks.
- Los
schedulesdevueltos son una lista detallada de información de schedule-task.
Obtener los detalles de una tarea programada
- Obtiene los detalles de la tarea programada con el id
{schedule_id}del usuario actual.
Endpoint
GET v4/schedules/{schedule_id}
Ejemplo de solicitud
Encabezados de la solicitud
GET /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Ejemplo de respuesta
Respuesta correcta
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Datos de respuesta
[{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "Ejemplo de envío programado",
"enabled": true,
"trigger": {...},
"push": {...}
}]
Obtener todos los ID de mensajes de la tarea programada
- Recupera una lista de todos los ID de mensaje de la tarea programada con el id
{schedule_id}perteneciente al usuario actual.
Endpoint
GET v4/schedules/{schedule_id}/msg-ids
Ejemplo de solicitud
Encabezados de la solicitud
GET /v4/schedules/{schedule_id}/msg-ids
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Ejemplo de respuesta
Respuesta correcta
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Datos de respuesta
- El formato de los datos de retorno se actualizó después de que la función de tareas programadas repetidas se publicara el 22 de febrero de 2024, añadiendo los datos MsgIds devueltos para sustituir a los msgids antiguos. Se debe asegurar que el código sea compatible.
- El campo ts indica la marca de tiempo en la que la tarea programada se ejecuta correctamente, con precisión de milisegundos.
{
"count": 1,
"MsgIds": [
"{\"msg_id\":\"1088009\",\"error\":{\"code\":0,\"message\":\"\"},\"needRetry\":false,\"ts\":1707278411611}",
"{\"msg_id\":\"0\",\"error\":{\"code\":1011,\"message\":\"Cannot find sending target\"},\"needRetry\":false,\"ts\":1707278411611}"
]
}
Actualizar una tarea programada
- Actualiza una tarea programada especificada por su id.
Endpoint
PUT v4/schedules/{schedule_id}
Ejemplo de solicitud
Encabezados de la solicitud
PUT /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Cuerpo de la solicitud
{
"name": "task",
"enabled": true,
"trigger": {...},
"push": {...}
}
Nota:
- Las tareas programadas expiradas no se pueden actualizar.
- Las tareas programadas por zona horaria del terminal no se pueden actualizar a la zona horaria del sitio principal, y viceversa.
- La operación de actualización puede incluir cambios en "name", "enabled", "trigger" o "push". No se admiten actualizaciones parciales.
Ejemplos incorrectos de operación de actualización
// WRONG: Only updating the platform to iOS:
{
"push": {
"body": {
"platform": "ios"
}
}
}
// WRONG: Only updating the end date:
{
"trigger": {
"periodical": {
"end": "2024-03-10 00:00:00"
}
}
}
Ejemplos correctos de operación de actualización
Al actualizar, debe incluir todos los subcampos relevantes bajo el campo push para garantizar que la operación de actualización cumpla el requisito de una actualización completa. A continuación se muestra la configuración completa de push actualizada después de cambiar la plataforma a iOS:
// RIGHT: Updating the platform to iOS:
{
"name": "Scheduled Push Example",
"enabled": true,
"trigger": {
"periodical": {
"start": "2024-01-01 00:00:00",
"end": "2024-02-10 00:00:00",
"time": "12:00:00",
"time_unit": "day",
"point": [],
"zone_type": 1
}
},
"push": {
"from": "push",
"to": {
"registration_id": [
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body": {
"platform":"ios",
"notification":{
"alert":"API Terminal Scheduled Task",
"ios":{
"alert": {
"title": "hello",
"body": "welcome"
},
"extras":{
"key1":"value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
// RIGHT: Extending the periodical trigger's end date by one month:
{
"name": "Scheduled Push Example",
"enabled": true,
"trigger": {
"periodical": {
"start": "2024-01-01 00:00:00", // Maintain the original start time
"end": "2024-03-10 00:00:00", // Extend by one month to March 10
"time": "12:00:00", // Maintain the original trigger time
"time_unit": "day", // Maintain the original time unit
"point": [], // Maintain the original points configuration
"zone_type": 1 // Maintain the original time zone type
}
},
"push": {
"from": "push",
"to": {
"registration_id": [
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body": {
"platform": "android",
"notification": {
"alert": "API terminal scheduled task",
"android": {
"title": "API terminal scheduled task",
"extras": {
"key1": "value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
En estas actualizaciones, asegúrese de que el push siga siendo válido y efectivo; de lo contrario, la actualización fallará. Envíe siempre una estructura completa en las operaciones de actualización para evitar fallos por actualizaciones parciales.
Ejemplo de respuesta
Respuesta correcta
HTTP/1.0 200 CREATED
Content-Type: application/json
{
"name": "Periodic Push Example",
"enabled": true,
"trigger": {
"periodical": {
"start": "2024-01-01 00:00:00",
"end": "2024-02-10 00:00:00",
"time": "12:00:00",
"time_unit": "day",
"point": [
],
"zone_type": 1
}
},
"push": {
"from": "push",
"to": {
"registration_id": [
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body": {
"platform": "ios",
"notification": {
"alert": "API terminal scheduled task",
"ios": {
"alert": {
"title": "hello",
"body": "welcome"
},
"extras": {
"key1": "value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
Datos de respuesta
{
"name": "Timed Push Example",
"enabled": true,
"trigger": {...},
"push": {...}
}
Respuesta de error
- Si
schedule_idno es válido o no es un id válido:
HTTP/1.0 404 Not Found
Content-Type: application/json
- Si la operación de actualización no es válida:
HTTP/1.0 400 BAD REQUEST
Content-Type: application/json
Eliminar una tarea programada
Endpoint
DELETE v4/schedules/{schedule_id}
schedule_ides el id de una tarea programada existente. Sischedule_idno es válido o no es un id válido, el resultado será un error 404.
Ejemplo de solicitud
DELETE /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Ejemplo de respuesta
Respuesta correcta
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 0
Respuesta de error
HTTP/1.0 404 Not Found
Content-Type: application/json
Content-Length: 0
{
"error": {
"code": 28404,
"message": "error message"
}
}
Códigos de error
| Código | HTTP | Descripción | Mensaje de error | Explicación detallada |
|---|---|---|---|---|
| 28000 | 200 | Retorno correcto | - | Código de estado de éxito |
| 28100 | 400 | Parámetro no válido | The schedule-task is invalid: section is invalid; has been at term; expired; request data is not JSON; update target task; delete target task; schedule request does not exist | |
| 28101 | 401 | Error de autenticación | Basic authentication failed. | appkey y masterscrect no coinciden. |
| 28102 | 400 | Parámetro push no válido | push param is nil or invalid | Parámetro push no válido; se devuelve información de error específica. |
| 28103 | 400 | Parámetro de hora de push no válido | single time or trigger time format err | Parámetro de hora de push no válido; se devuelve información de error específica. |
| 28104 | 404 | La tarea programada solicitada no existe | Request schedule operation doesn't exist | La tarea correspondiente se ha enviado o el ID de schedule es incorrecto. |
| 28105 | 400 | No hay destino de push para la hora establecida | The push task is invalid. There is no push target for the scheduled time | Error en el parámetro de hora de push. |
| 28200 | 500 | Error interno del servidor | Server Internal error. | Se produjo un error inesperado. |
| 28203 | 503 | Error interno del servidor; reintentar más tarde | Execute action timeout, please try later again | Error de comunicación con el schedule-server. |










