API des Tâches Planifiées
La couche API prend en charge les fonctions programmées, en maintenant un objet Schedule pour l'exécution indépendante des tâches.
Remarque : Les tâches planifiées créées via l'API ne peuvent être récupérées, modifiées ou supprimées que par des appels API.
Authentification
Veuillez consulter les méthodes d'authentification dans l'aperçu de l'API REST pour plus de détails.
Description des paramètres de Schedule
Chaque tâche planifiée comprend quatre sections : name, enabled, trigger et push.
| Paramètre | Type | Optionnel | Description |
|---|---|---|---|
| name | String | Non | Le nom de la tâche planifiée, ne doit pas dépasser 255 octets, composé de caractères chinois, lettres, chiffres et underscores. |
| enabled | Boolean | Non | Indique l'état actuel de la tâche ; doit être true lors de la création d'une tâche. |
| trigger | Objet JSON | Non | Les conditions de déclenchement et le timing de la tâche planifiée. Prend actuellement en charge les tâches ponctuelles (single), les tâches périodiques (periodical) et la livraison intelligente (intelligent). Voir description single pour plus de détails. |
| push | Objet JSON | Non | Les informations de contenu pour la notification push, se référer aux champs de la documentation app push. |
Description Single
Décrit les conditions de déclenchement de la tâche planifiée, y compris l'heure de déclenchement et le type de tâche planifiée.
| Paramètre | Type | Optionnel | Description |
|---|---|---|---|
| time | String | Non | L'heure de déclenchement de la tâche planifiée, au format standard "yyyy-mm-dd hh:mm:ss", par exemple "2014-02-15 13:16:59". Les formats incomplets comme "2014-2-15 13:16:59" ou "2014-12-15 13:16" ne sont pas acceptés. L'heure la plus tardive pour une tâche planifiée ne peut pas dépasser un an. |
| zone_type | Int | Non | Indique le type de tâche planifiée : 1 pour un déclenchement selon le fuseau horaire du site principal, 2 pour un déclenchement selon le fuseau horaire du terminal utilisateur. |
Description Periodical
| Paramètre | Type | Optionnel | Description |
|---|---|---|---|
| start | String | Non | L'heure de début effective de la tâche périodique, strictement au format "yyyy-MM-dd HH:mm:ss", et doit être en format 24h. |
| end | String | Non | L'heure d'expiration de la tâche périodique, même format que ci-dessus. La durée maximale d'une tâche périodique ne doit pas dépasser un an. |
| time | String | Non | L'heure précise à laquelle la tâche périodique est déclenchée, strictement au format "HH:mm:ss", et doit être en format 24h. |
| time_unit | String | Non | La plus petite unité de temps pour l'exécution de la tâche périodique, avec trois options : "day", "week" et "month". Insensible à la casse. |
| point | String | Non | Une liste correspondant à time_unit : voir le tableau ci-dessous. |
| zone_type | Int | Non | Indique le type de tâche planifiée : 1 pour un déclenchement selon le fuseau horaire du site principal, 2 pour un déclenchement selon le fuseau horaire du terminal utilisateur. |
Informations détaillées sur le paramètre point :
| time_unit | point | Description |
|---|---|---|
| day | NULL | Lorsque time_unit est day, point n'est pas applicable. |
| week | "MON","TUE","WED","THU","FRI","SAT","SUN" | Pour week, point peut être un ou plusieurs jours indiquant quand déclencher, insensible à la casse. |
| month | "01","02","03" ... "31" | Pour month, point correspond aux dates valides du mois, ne déclenchera pas sur des dates invalides, comme le 31 ou le 30 en février. |
Description Intelligent
| Paramètre | Type | Obligatoire ou non | Signification |
|---|---|---|---|
| backup_time | String | Obligatoire | La livraison intelligente est une fonctionnalité unique d'EngageLab, conçue pour optimiser le taux de clics des notifications. À chaque fois qu'un utilisateur accède à votre service via un site web ou une application mobile avec le SDK EngageLab installé, nous suivrons le dernier moment d'activité de l'utilisateur. Le système enregistrera ces données et, en fonction des habitudes d'utilisation passées, enverra des notifications à chaque utilisateur à un moment approprié selon le fuseau horaire du terminal utilisateur. Pour les utilisateurs sans données historiques actives, vous devez choisir d'envoyer immédiatement ou de spécifier une heure d'envoi (basée sur le fuseau horaire de l'utilisateur final). |
Création d'une tâche planifiée
Endpoint
POST v4/schedules
Limitations
- Le nombre total de tâches planifiées effectives (non expirées) est par défaut limité à 1000. La création de nouvelles tâches échouera si ce nombre est dépassé.
- Il n'y a pas de restriction sur la durée maximale d'une tâche planifiée, mais il est recommandé de ne pas dépasser 1 an.
- Le nom de la tâche planifiée ne peut pas dépasser 255 caractères et ne peut contenir que des chiffres, lettres, underscores et caractères chinois.
Exemple de requête
En-têtes de la requête
POST /v4/schedules
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Corps de la requête
Exemple de requête pour une tâche planifiée simple
{
"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":"Tâche planifiée depuis l'API",
"android":{
"title":"Tâche planifiée depuis l'API",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push to you"
}
}
}
Exemple de requête pour une tâche planifiée répétée
{
"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":"répète les tâches périodiques",
"android":{
"title":"répète les tâches périodiques",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"67890",
"custom_args":{
"Engagelab": "push to you"
}
}
}
Exemple de requête pour la livraison intelligente
{
"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":"Tâche planifiée depuis l'API",
"android":{
"title":"Tâche planifiée depuis l'API",
"extras":{
"key1":"value1"
}
}
},
"options":{
"time_to_live":60
}
},
"request_id":"12345",
"custom_args":{
"Engagelab": "push to you"
}
}
}
Explication des données de la requête
zone_typedoit être rempli avec les valeurs de champ spécifiées (1 ou 2) ; sinon, la notification push aura lieu selon le fuseau horaire du serveur.- Lors de la création initiale d'une tâche planifiée, le champ
enableddoit être true. La création d'une tâche avecenabled: falseéchouera. pushdoit être une action push valide et légale ; sinon, la création échouera.
Exemple de réponse
Réponse réussie
HTTP/1.1 200 OK
Content-Type: application/json
{
"schedule_id": "a9b85590-6cec-4f91-b277-2d82b0e20ef6",
"name": "Nom de la tâche planifiée"
}
Réponse d'échec
HTTP/1.1 400 BAD REQUEST
Content-Type: application/json; charset=utf-8
{
"error": {
"code": 28400,
"message": "message d'erreur"
}
}
Obtenir la liste des tâches planifiées valides
- Obtenez une liste des schedules actuellement effectifs (non expirés).
Endpoint
GET v4/schedules?page=
Exemple de requête
En-têtes de la requête
GET /v4/schedules?page=
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
- Les détails de la liste des tâches planifiées pour la page de requête actuelle sont renvoyés. Si la page n'est pas spécifiée, la page 1 est utilisée par défaut.
- Le tri se fait par date de création et est géré par le service schedule.
- Si le numéro de page demandé dépasse le nombre total de pages, la valeur de
pagesera celle demandée etschedulessera vide. - Un maximum de 50 tâches par page est retourné. Si le nombre réel de tâches sur la page demandée est inférieur à 50, le nombre réel de tâches est retourné.
Exemple de réponse
Réponse réussie
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
},
{} // Liste des informations détaillées.
]
}
- Cela indique un total de 1000 tâches planifiées, réparties sur 5 pages, la page actuelle étant la page 4, incluant les informations sur 50 tâches planifiées.
- Le champ
schedulesretourné est une liste détaillée des informations sur les tâches planifiées.
Obtenir les détails d'une tâche planifiée
- Obtenez les détails d'une tâche planifiée avec l'id
{schedule_id}pour l'utilisateur actuel.
Endpoint
GET v4/schedules/{schedule_id}
Exemple de requête
En-têtes de la requête
GET /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Exemple de réponse
Réponse réussie
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Données de réponse
[{
"schedule_id": "0eac1b80-c2ac-4b69-948b-c65b34b96512",
"name": "定时推送示例",
"enabled": true,
"trigger": {...},
"push": {...}
}]
Obtenir tous les ids de message de la tâche planifiée
- Récupérez la liste de tous les IDs de message pour la tâche planifiée avec l'id
{schedule_id}appartenant à l'utilisateur actuel.
Endpoint
GET v4/schedules/{schedule_id}/msg-ids
Exemple de requête
En-têtes de la requête
GET /v4/schedules/{schedule_id}/msg-ids
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Exemple de réponse
Réponse réussie
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Données de réponse
Le format des données retournées a été mis à jour après la mise en ligne de la fonction de tâche planifiée répétée le 22 février 2024, ajoutant les données MsgIds pour remplacer les anciens msgids. Veuillez vous assurer que votre code est compatible.
Le champ ts indique le timestamp lorsque la tâche planifiée est exécutée avec succès, précis à la milliseconde.
{
"count": 1,
"MsgIds": [
"{\"msg_id\":\"1088009\",\"error\":{\"code\":0,\"message\":\"\"},\"needRetry\":false,\"ts\":1707278411611}",
"{\"msg_id\":\"0\",\"error\":{\"code\":1011,\"message\":\"Impossible de trouver la cible d'envoi\"},\"needRetry\":false,\"ts\":1707278411611}"
]
}
Mise à jour d'une tâche planifiée
- Mettez à jour une tâche planifiée spécifiée par son id.
Endpoint
PUT v4/schedules/{schedule_id}
Exemple de requête
En-têtes de la requête
PUT /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Corps de la requête
{
"name": "task",
"enabled": true,
"trigger": {...},
"push": {...}
}
Remarque :
- Les tâches planifiées expirées ne peuvent pas être mises à jour.
- Les tâches planifiées selon le fuseau horaire du terminal ne peuvent pas être mises à jour vers le fuseau horaire du site principal et vice versa.
- L'opération de mise à jour peut inclure des changements dans "name", "enabled", "trigger" ou "push". Les mises à jour partielles ne sont pas prises en charge.
Exemples d'opérations de mise à jour incorrectes
// ERREUR : Mise à jour uniquement de la plateforme vers iOS :
{
"push": {
"body": {
"platform": "ios"
}
}
}
// ERREUR : Mise à jour uniquement de la date de fin :
{
"trigger": {
"periodical": {
"end": "2024-03-10 00:00:00"
}
}
}
Exemples d'opérations de mise à jour correctes
Lors de la mise à jour, vous devez inclure tous les sous-champs pertinents sous le champ push pour garantir que l'opération de mise à jour respecte l'exigence d'une mise à jour complète. Voici la configuration complète push après avoir changé la plateforme vers iOS :
// CORRECT : Mise à jour de la plateforme vers 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":"Tâche planifiée API terminal",
"ios":{
"alert": {
"title": "hello",
"body": "welcome"
},
"extras":{
"key1":"value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
// CORRECT : Prolongation de la date de fin du déclencheur periodical d'un mois :
{
"name": "Scheduled Push Example",
"enabled": true,
"trigger": {
"periodical": {
"start": "2024-01-01 00:00:00", // Conserver l'heure de début d'origine
"end": "2024-03-10 00:00:00", // Prolonger d'un mois jusqu'au 10 mars
"time": "12:00:00", // Conserver l'heure de déclenchement d'origine
"time_unit": "day", // Conserver l'unité de temps d'origine
"point": [], // Conserver la configuration des points d'origine
"zone_type": 1 // Conserver le type de fuseau horaire d'origine
}
},
"push": {
"from": "push",
"to": {
"registration_id": [
"1a0018970ab49abda3e",
"100d85590955c1d2793"
]
},
"body": {
"platform": "android",
"notification": {
"alert": "Tâche planifiée API terminal",
"android": {
"title": "Tâche planifiée API terminal",
"extras": {
"key1": "value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
Dans ces mises à jour, assurez-vous que la notification push reste valide et effective ; sinon, la mise à jour échouera. Soumettez toujours une structure complète lors de vos opérations de mise à jour pour éviter les échecs dus à des mises à jour partielles.
Exemple de réponse
Réponse réussie
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": "Tâche planifiée API terminal",
"ios": {
"alert": {
"title": "hello",
"body": "welcome"
},
"extras": {
"key1": "value1"
}
}
},
"options": {
"time_to_live": 60
}
},
"request_id": "12345",
"custom_args": {
"Engagelab": "push to you"
}
}
}
Données de réponse
{
"name": "Timed Push Example",
"enabled": true,
"trigger": {...},
"push": {...}
}
Réponse d'échec
- Si
schedule_idest invalide ou n'est pas un id valide :
HTTP/1.0 404 Not Found
Content-Type: application/json
- Si l'opération de mise à jour est invalide :
HTTP/1.0 400 BAD REQUEST
Content-Type: application/json
Suppression d'une tâche planifiée
Endpoint
DELETE v4/schedules/{schedule_id}
schedule_idest l'id d'une tâche planifiée existante. Sischedule_idest invalide ou n'est pas un id valide, le résultat sera une erreur 404.
Exemple de requête
DELETE /v4/schedules/{schedule_id}
Authorization: Basic (base64 auth string)
Content-Type: application/json
Accept: application/json
Exemple de réponse
Réponse réussie
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 0
Réponse d'échec
HTTP/1.0 404 Not Found
Content-Type: application/json
Content-Length: 0
{
"error": {
"code": 28404,
"message": "message d'erreur"
}
}
Codes d'erreur
| Code | HTTP | Description | Message d'erreur | Explication détaillée |
|---|---|---|---|---|
| 28000 | 200 | Retour correct | - | Code de statut de succès |
| 28100 | 400 | Paramètre invalide | La tâche planifiée est invalide : section invalide ; arrivée à terme ; expirée ; les données de la requête ne sont pas en JSON ; mise à jour de la tâche cible ; suppression de la tâche cible ; la requête de schedule n'existe pas | |
| 28101 | 401 | Échec de l'authentification | Échec de l'authentification Basic. | appkey et masterscrect ne correspondent pas. |
| 28102 | 400 | Paramètre push invalide | push param is nil or invalid | Paramètre push invalide, des informations d'erreur spécifiques sont retournées. |
| 28103 | 400 | Paramètre d'heure push invalide | single time or trigger time format err | Paramètre d'heure push invalide, des informations d'erreur spécifiques sont retournées. |
| 28104 | 404 | La tâche planifiée demandée n'existe pas | Request schedule operation doesn't exist | La tâche correspondante a été envoyée, ou l'ID de schedule est incorrect. |
| 28105 | 404 | Pas de cible push pour l'heure définie | La tâche push est invalide. Il n'y a pas de cible push pour l'heure planifiée | Erreur de paramètre d'heure push. |
| 28200 | 500 | Erreur interne du serveur | Server Internal error. | Une erreur inattendue est survenue. |
| 28203 | 503 | Erreur interne du serveur, veuillez réessayer plus tard | Execute action timeout, please try later again | Erreur de communication avec le serveur de schedule. |

