API Push v4
Envoyez une notification ou un message à un seul appareil ou à une liste d'appareils
Le contenu du push ne peut être qu'un seul objet push au format JSON
Pour les fonctions liées aux tags/alias, veuillez vous référer à AppPushAPI.
Ceci est la dernière version de l'API Push. Les améliorations de la version v4 sont les suivantes :
- Utilisez l'authentification HTTP Basic pour autoriser l'accès. Ainsi, toute la requête API peut être effectuée à l'aide d'outils HTTP courants, tels que curl et des extensions de navigateur.
- Le contenu du push est au format JSON.
Limites de fréquence des requêtes
Notre API impose des limites sur la fréquence des appels afin de garantir la stabilité et l'équité du service. Les limites QPS (requêtes par seconde) pour chaque AppKey sont les suivantes :
- Limite standard : 500 requêtes maximum par seconde.
- Limite avancée : Si vous êtes abonné à notre offre payante et que votre AppKey payante nécessite une limite QPS supérieure, veuillez contacter notre équipe commerciale : Sales@engagelab.com.
Validation des appels
Pour plus d'informations, consultez la méthode d'authentification
Adresse d'appel
POST v4/push
Exemples de requêtes
En-tête de la requête
> POST /v4/push HTTP/1.1
> Authorization: Basic N2Q0MzFlNDJkZmE2YTZkNjkzYWMyZDA0OjVlOTg3YWM2ZDJlMDRkOTVhOWQ4ZjBkMQ==
Corps de la requête
{
"from": "push",
"to": "all",
"body": {
"platform": "web",
"notification": {
"alert": "Hi,MTPush !", // optionnel
"web": {
"alert": "web_push",
"title": "web_push",
"url": "http://www.google.com",
"extras": {
"web-key1": "web-value1"
}
}
}
},
"request_id": "12345678",
"custom_args": "informations business"
}
Paramètres de la requête
La structure des paramètres du push, détaillée dans le tableau suivant.
| Mot-clé | Type | Option | Description |
|---|---|---|---|
| from | String | Optionnel | Expéditeur business actuel |
| to | String ou Objet JSON | Obligatoire | Cible d'envoi |
| body | Objet JSON | Obligatoire | Corps de la requête d'envoi |
| platform | String ou Tableau JSON | Obligatoire | Plateforme de push |
| notification | Objet JSON | Optionnel | |
| message | Objet JSON | Optionnel | |
| options | Objet JSON | Optionnel | Paramètres de push |
| request_id | String | Optionnel | Champ optionnel personnalisé utilisé par le client pour identifier la requête et retourné dans la réponse. |
| custom_args | Objet JSON | Optionnel | Champs optionnels personnalisés par le client, retournés lors du callback. |
from
L'expéditeur du business actuel. La valeur est de type String et est optionnelle.
Exemples de requêtes
{
"from": "push"
}
to
Objet de l'appareil cible du push, indiquant la liste des appareils à qui le push peut être envoyé. Confirmez l'objet de l'appareil cible. MTPush propose deux méthodes : Registration ID et diffusion.
Cible du push
| Mot-clé | Type | Signification | Description | Remarque |
|---|---|---|---|---|
| all | String | Diffusion | Push à tous les appareils | Push vers les appareils actifs dans les 30 derniers jours. |
| registration_id | Tableau JSON | Registration ID | Tableau. La relation entre plusieurs registration_id est OU, c'est-à-dire l'union. | L'ID de l'appareil. Maximum de 1 000 messages par envoi. |
| tag | Tableau JSON | Tag | Tableaux. La relation entre plusieurs tags est OU, c'est-à-dire la concaténation. | Utilisez des tags pour effectuer des sous-groupes d'attributs d'appareils ou d'utilisateurs. |
| tag_and | Tableau JSON | Tag AND | Tableau. Plusieurs tags sont en relation ET, c'est-à-dire l'intersection. | À distinguer des tags, jusqu'à 20 à la fois. |
| tag_not | Tableau JSON | Tag NOT | Tableau. Pour plusieurs tags, l'ensemble fusionné est d'abord calculé, puis le complémentaire est pris. | Jusqu'à 20 par envoi. |
| alias | Tableau JSON | Alias | Tableau. Plusieurs alias sont en relation OU, c'est-à-dire concaténation. | Identifiez un utilisateur avec un alias. |
La relation implicite entre plusieurs valeurs dans un tableau est OU, c'est-à-dire la concaténation ; cependant, tag_and est différent car la relation entre plusieurs valeurs dans un tableau est ET, c'est-à-dire l'intersection.
Si tag_not est utilisé seul, nous effectuerons le traitement tag_not parmi les utilisateurs de diffusion.
Ces types peuvent coexister. La relation implicite entre plusieurs polynômes lors de la coexistence est ET, c'est-à-dire l'intersection. Par exemple :
"to" : {"tag" : [ "tag1", "tag2"],
"tag_and" : ["tag3", "tag4"],
"tag_not" : ["tag5", "tag6"]
}
Calculez d'abord le résultat du champ "tag" tag1 ou tag2 = A;
Puis calculez le résultat du champ "tag_and" tag3 et tag4 = B;
Puis calculez le résultat du champ "tag_not" non (tag5 ou tag6) = C;
Le résultat final de "to" est A et B et C.
Exemples de requêtes
- Push vers tous (diffusion):
{
"to": "all"
}
- Push vers plusieurs registration_id:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
body
Le corps de la requête. Les champs pris en charge sont les suivants:
| Mot-clé | Type | Option | Description |
|---|---|---|---|
| platform | String ou Tableau JSON | Obligatoire | Plateforme de push |
| notification | Objet JSON | Optionnel | |
| message | Objet JSON | Optionnel | |
| options | Objet JSON | Optionnel | Paramètres de push |
platform
MTPush prend actuellement en charge uniquement le push sur la plateforme Web, donc la valeur du mot-clé platform est "web".
{ "platform" : "web" }
notification
L'objet notification est l'un des objets de contenu de push (l'autre étant message) et est envoyé sur le web en tant que notification.
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| web | Objet JSON | Obligatoire | Propriétés de la plateforme | Paramètres de push de la plateforme, voir web |
web
Notifications sur la plateforme Web
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| alert | String ou Objet JSON | Obligatoire | Contenu | Le contenu du message lui-même, spécifié ici, écrase l'information alert spécifiée par le niveau supérieur. |
| url | String | Obligatoire | url du push web | Adresse de redirection au clic sur la notification |
| title | String | Optionnel | Titre | Titre du message |
| extras | Objet JSON | Optionnel | Champs étendus | Vous pouvez personnaliser ici les informations Key/Value au format JSON pour un usage business. |
| icon | String | Optionnel | icône de notification | Recommandé 192*192px, pas de limite obligatoire ; taille maximale 1M, formats : JPG, PNG, GIF, support Chrome, Firefox (Safari et Edge ne permettent pas la personnalisation par défaut) |
| image | String | Optionnel | Grande image pour la notification | Recommandé 360*180px, pas de limite obligatoire ; taille maximale 1M, formats : JPG, PNG, GIF, Chrome, Edge supportés (Firefox et Safari non supportés) |
{
"notification": {
"web": {
"alert": "hello, Push!",
"title": "Test Push",
"url": "http://www.google.com",
"icon": "",
"image": "",
"extras": {
"news_id": 134,
"my_key": "une valeur"
}
}
}
}
message
Messages In-App ou messages personnalisés. Cette partie du contenu n'est pas affichée dans le navigateur. Après réception, le SDK le transmet au Web, qui traite la logique business.
Le message contient les champs suivants:
| Mot-clé | Type | Option | Description |
|---|---|---|---|
| msg_content | String ou Objet JSON | Obligatoire | Contenu du message |
| title | String | Optionnel | Titre du message |
| content_type | String | Optionnel | Type de contenu du message |
| extras | Objet JSON | Optionnel | Paramètres optionnels au format JSON |
Exemple:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "valeur"
}
}
}
options
Options de push. Les options suivantes sont disponibles:
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| time_to_live | Int ou String | Optionnel | Durée de rétention du message hors ligne (secondes) | |
| override_msg_id | Long | Optionnel | ID du message à écraser | Si le push actuel doit écraser un push précédent, renseignez ici le msg_id du push précédent pour obtenir l'effet d'écrasement, c'est-à-dire : |
| big_push_duration | Int | Optionnel | Durée du push échelonné (minutes) | |
| web_buttons | Objet JSON | Optionnel | Ajouter des boutons aux notifications | |
| multi_language | Objet JSON | Optionnel | Paramètres de push multilingues | Paramètres d'adaptation multilingue pour le contenu du push. Voir multi_language. |
| third_party_channel | Objet JSON | Optionnel | Informations de configuration du canal système Web | Paramètre valide uniquement pour les utilisateurs configurés avec des canaux système. Voir third_party_channel. |
| plan_id | String | Optionnel | Identifiant du plan de push | Une valeur d'identifiant de plan doit être créée au préalable, via la console ou l'API. |
| cid | String | Optionnel | Identifiant de la requête de push pour éviter les doublons | Lettres, chiffres, underscores, tirets autorisés, 64 caractères max. Ce champ doit être unique pour un même AppKey. |
multi_language
Ce champ correspond à la fonction de push multilingue du service Push EngageLab. Il vous permet d'envoyer un contenu de notification personnalisé selon la langue de l'utilisateur. En spécifiant plusieurs langues et leur contenu, titre et sous-titre iOS dans la requête, vous pouvez envoyer la notification adaptée à la langue de l'utilisateur.
Paramètres de la requête
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| en | string | Optionnel | Clé multilingue | Correspond à la langue de l'utilisateur, voir l'annexe pour les codes de langue |
| content | string | Optionnel | Contenu du message | Remplace notification.web.alert, message.msg_content selon la langue de l'utilisateur |
| title | string | Optionnel | Titre du message | Remplace notification.web.title, message.title selon la langue de l'utilisateur |
Exemple de requête
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": ""
}
}
}
}
Exemple de réponse
En cas de succès :
{
}
En cas d'échec :
{
"code": 400,
"data": "",
"message": "Information d'erreur"
}
web_buttons
Utilisez le paramètre web_buttons pour décrire l'id, le texte, l'icône et l'url du bouton. Les descriptions des paramètres sont les suivantes :
| Mot-clé | Type | Options | Signification | Description |
|---|---|---|---|---|
| id | Obligatoire | String | id du bouton | Pris en charge à partir de la version chrome48+ |
| text | Obligatoire | String | contenu du bouton | Pris en charge à partir de la version chrome48+ |
| icon | Optionnel | String | icône du bouton | Pris en charge à partir de la version chrome50+ |
| url | Obligatoire | String | lien de redirection du bouton | Pris en charge à partir de la version chrome48+. Si web_buttons est utilisé, le champ url du paramètre web n'est pas pris en compte |
Exemple d'appel :
[
{
"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
Ce champ sert à renseigner l'information personnalisée du canal système Web. Le nom de la clé est w3push, la valeur est un Objet Json. L'Objet contient un seul champ distribution optionnel de type String
| Mot-clé | Type | Option | Signification | Description |
|---|---|---|---|---|
| distribution | Obligatoire | String | Lorsque Engagelab et le canal système coexistent, définissez la priorité de livraison. | La valeur ne peut pas être une chaîne vide. |
Exemple :
{
"third_party_channel": {
"w3push": {
"distribution": "mtpush"
}
}
}
request_id
L'id de la requête. Le client identifie la requête et la réponse
Exemples de requêtes
{
"request_id": "12345678"
}
Exemple de réponse
custom_args
Champ optionnel défini par l'utilisateur. Non retourné dans la réponse, mais retourné lors du callback.
{
"custom_args": "informations business"
}
Paramètres de réponse
Réponse de succès
| champ | type | option | description |
|---|---|---|---|
| request_id | String | Optionnel | L'ID personnalisé soumis lors de la requête, retourné tel quel dans la réponse. |
| msg_id | String | Obligatoire | L'ID du message pour identifier de façon unique un message. |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id": "18", "msg_id": "1828256757"}
Réponse d'échec
Le code de statut http est 4xx ou 5xx et le corps de la réponse contient les champs suivants.
| Champ | Type | Option | Description |
|---|---|---|---|
| code | int | obligatoire | le code d'erreur. Pour plus d'informations, voir la description return-code |
| message | String | obligatoire | détails de l'erreur |
{
"code": 3002,
"message": "Le champ Push.template doit être correctement défini lorsque le type est template"
}
Réponse
Code de statut HTTP
Références : HTTP-Status-Code
Code de retour
| Code | Description | Explication détaillée | Code de statut HTTP |
|---|---|---|---|
| 20101 | Le paramètre de push est invalide. | Le registration_id est invalide ou n'appartient pas à l'appkey actuelle. | 400 |
| 21001 | Seules les méthodes HTTP Post sont prises en charge. | La méthode Get n'est pas prise en charge. | 405 |
| 21002 | Paramètres obligatoires manquants. | Doit être corrigé | 400 |
| 21003 | Valeur de paramètre invalide | Doit être corrigé | 400 |
| 21004 | Échec de la vérification. | Doit être corrigé. Voir la vérification d'appel. | 401 |
| 21005 | Le corps du message est trop volumineux. | Doit être corrigé. La longueur de la Notification doit être limitée à 2048 octets. | 400 |
| 21008 | Le paramètre app_key est invalide. | Doit être corrigé. Vérifiez si l'appkey transmise correspond à celle de l'application et s'il n'y a pas d'espaces en trop. | 400 |
| 21009 | Erreur interne du système | Doit être corrigé | 400 |
| 21011 | Aucun appareil cible ne correspond aux conditions. | Veuillez vérifier | 400 |
| 21015 | Échec de la vérification des paramètres de la requête. | Paramètres inattendus | 400 |
| 21016 | Échec de la vérification des paramètres de la requête. | Le type ou la longueur du paramètre est incorrect(e) ou dépasse la limite. | 400 |
| 21030 | Délai d'attente du service interne | Réessayez plus tard | 503 |
| 23006 | Erreur de paramètre | La valeur maximale de big_push_duration est 1440. | 400 |
| 23008 | Limite de vitesse de l'interface | L'interface push d'une application atteint la limite supérieure (500 qps) | 400 |
| 27000 | Erreur de mémoire système | Veuillez réessayer | 500 |
| 27001 | Erreur de paramètre | L'information de vérification est vide. | 401 |
| 27008 | Erreur de paramètre | La distribution dans third_party_channel n'est pas vide, mais le contenu alert de la notification est vide. | 401 |
| 27009 | Erreur de paramètre | Le format de distribution dans third_party_channel est invalide ou vide. | 401 |
Restrictions de push
| Canal | Longueur du sujet | Longueur du contenu | Autres indications |
|---|---|---|---|
| Engagelab | Pas de limite, mais limite sur la taille totale du corps du message | Pas de limite, mais limite sur la taille totale du corps du message | La longueur de Notification MTPush est limitée à 4000 octets. |
| Canal système | <20 caractères (40 caractères anglais) | Aucun |
Code langue multi-langue
| Langue | Code |
|---|---|
| Anglais | en |
| Arabe | ar |
| Chinois (Simplifié) | zh-Hans |
| Chinois (Traditionnel) | zh-Hant |
| Tchèque | cs |
| Danois | da |
| Néerlandais | nl |
| Français | fr |
| Allemand | de |
| Hindi | hi |
| Italien | it |
| Japonais | ja |
| Coréen | ko |
| Malais | ms |
| Russe | ru |
| Espagnol | es |
| Thaï | th |
| Vietnamien | vi |
| Indonésien | id |
| Norvégien | no |
| Suédois | sv |
| Polonais | pl |
| Turc | tr |
| Hébreu | he |
| Portugais | pt |
| Roumain | ro |
| Hongrois | hu |
| Finnois | fi |
| Grec | el |
| Ukrainien | uk |
| Lao | lo |
| Portugais (Portugal) | pt_PT |
| Portugais (Brésil) | pt_BR |
| Espagnol (Argentine) | es_AR |
| Espagnol (Espagne) | es_ES |
| Espagnol (Amérique latine) | es_419 |

