Passer au contenu

API Messages

createMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/createMessage

Crée une nouvelle notification push.

Corps de la requête

Anchor link to
NomTypeDescription
auth*stringJeton d’accès API depuis le Control Panel de Pushwoosh.
application*stringCode d’application Pushwoosh
notifications*arrayTableau JSON des paramètres du message. Voir les détails dans l’exemple de requête ci-dessous.
{
"status_code": 200,
"status_message": "OK",
"response": {
"Messages": [
"C3F8-C3863ED4-334AD4F1"
]
}
}

Exemple de requête

Anchor link to
Example
{
"request": {
"application": "XXXXX-XXXXX", // requis. Code d'application Pushwoosh.
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh.
"notifications": [{
"send_date": "now", // optionnel. AAAA-MM-JJ HH:mm OU 'now'
"content": { // optionnel. objet OU chaîne.
"en": "English", // Utilisez "wns_content" à la place pour Windows.
"fr": "French"
},
"title": { // optionnel. objet OU chaîne.
"en": "Title", // Ignoré si des titres spécifiques à la plateforme sont spécifiés
"fr": "Titre" // 'ios_title', 'android_header', etc.
}, // voir les exemples de paramètres spécifiques à la plateforme ci-dessous.
"subtitle":{ // optionnel. objet OU chaîne.
"en": "Subtitle", // Ignoré si des titres spécifiques à la plateforme sont spécifiés
"fr": "Sous-titre" // 'ios_subtitle', etc.
}, // voir les exemples de paramètres spécifiques à la plateforme ci-dessous.
"ignore_user_timezone": true, // optionnel.
"timezone": "America/New_York", // optionnel. Si ignoré, UTC-0 est la valeur par défaut pour "send_date".
// Voir https://php.net/manual/timezones.php pour
// les fuseaux horaires pris en charge.
"campaign": "CAMPAIGN_CODE", // optionnel. Code de campagne auquel vous souhaitez
// assigner ce message push.
"geozone": { // optionnel. Envoyer à la Geozone
"lat": 22.22,
"lng": 33.33,
"range": 110
},
"rich_media": "XXXXX-XXXXX", // optionnel. Copiez le code du Rich Media depuis la barre d'URL de
// la page de l'éditeur Rich Media dans le Control Panel de Pushwoosh.
"link": "https://google.com", // optionnel. Pour les deep links, ajoutez "minimize_link": 0
"minimize_link": 0, // optionnel. 0 — ne pas minimiser, 2 — bitly. Par défaut = 2.
// Veuillez noter que les raccourcisseurs ont des restrictions
// sur le nombre d'appels.
"data": { // optionnel. Chaîne JSON ou objet JSON, sera passé comme
"key": "value" // paramètre "u" dans le payload (converti en chaîne JSON).
},
"transactionId": "unique UUID", // optionnel. Identifiant de message unique pour éviter la duplication
// en cas de problèmes réseau. Stocké du côté de
// Pushwoosh pendant 5 minutes.
"platforms": [ // optionnel. 1 — iOS ; 3 — Android ; 7 — Mac OS X ; 8 — Windows ;
1, 3, 7, 8, 9, 10, // 9 — Amazon ; 10 — Safari ; 11 — Chrome ;
11, 12, 17 // 12 — Firefox ; 17 — Huawei
],
"preset": "XXXXX-XXXXX", // optionnel. Code de préréglage de push depuis votre Control Panel.
// Si des paramètres spécifiques sont envoyés dans la requête,
// ils remplacent les paramètres du préréglage.
"send_rate": 100, // optionnel. Limitation. Les valeurs valides sont de 100 à 1000 pushes/seconde.
// Relatif aux modèles, veuillez vous référer au guide du moteur de modèles pour en savoir plus
"template_bindings": { // optionnel.
"TemplatePlaceholder": "Value"
},
"dynamic_content_placeholders": { // optionnel. Variables pour le contenu dynamique au lieu des tags d'appareil.
"firstname": "John",
"lastname": "Doe"
},
// Paramètres de limitation de fréquence. Assurez-vous que la limitation de fréquence globale est configurée dans le Control Panel.
"capping_days": 30, // optionnel. Nombre de jours pour la limitation de fréquence (max 30 jours)
"capping_count": 10, // optionnel. Le nombre maximal de pushes pouvant être envoyés d'une
// application spécifique à un appareil particulier dans une période de 'capping_days'
// . Si le message créé dépasse la limite
// 'capping_count' pour un appareil, il ne sera
// pas envoyé à cet appareil.
"capping_exclude": true, // optionnel. Si défini sur true, cette notification push ne sera
// pas comptabilisée pour la limitation des futurs pushes.
"capping_avoid": true, // optionnel. Si défini sur true, la limitation ne s'appliquera pas à
// cette notification push spécifique.
// Pour enregistrer le message dans la boîte de réception via l'API, utilisez "inbox_date" ou "inbox_image".
// Le message est enregistré si au moins un de ces paramètres est utilisé.
"inbox_date": "2017-02-02", // optionnel. Spécifiez quand supprimer un message de la boîte de réception.
// Le message sera supprimé de la boîte de réception à 00:00:01 UTC
// à la date spécifiée, donc la date précédente est le
// dernier jour où un utilisateur peut voir le message dans sa boîte de réception.
// Si non spécifié, la date de suppression par défaut est le
// jour suivant la date d'envoi.
"inbox_image": "Inbox image URL", // optionnel. L'image à afficher à côté du message.
"inbox_days": 5, // optionnel. Spécifiez quand supprimer un message de la
// boîte de réception (durée de vie d'un message de boîte de réception en jours).
// Peut être utilisé à la place du paramètre "inbox_date".
// Jusqu'à 30 jours.
"devices": [ // optionnel. Spécifiez des jetons ou des hwids pour envoyer des notifications push ciblées
"hwid_XXXX" // . Pas plus de 1000 jetons/hwids dans
], // un tableau. S'il est défini, le message ne sera envoyé qu'aux
// appareils de la liste. Le groupe d'applications pour la liste d'appareils
// n'est pas autorisé. Les jetons push iOS ne peuvent être qu'en minuscules.
// Notifications push centrées sur l'utilisateur
"users": [ // optionnel. Si défini, le message ne sera livré qu'aux
"user_XXXX" // ID utilisateur spécifiés (définis via l'appel /registerUser).
], // S'il est spécifié avec le paramètre devices,
// ce dernier sera ignoré. Pas plus de 1000
// ID utilisateur dans un tableau. Le groupe d'applications pour la liste d'utilisateurs
// n'est pas autorisé.
// Filtres et conditions
"filter": "FILTER_NAME", // optionnel.
"conditions": [ // optionnel. Voir la remarque ci-dessous.
"Country", "EQ", "France",
"Language", "EQ", "en"
],
"conditions_operator": "AND" // optionnel. Opérateur logique pour les tableaux de conditions.
// Valeurs possibles : AND | OR. AND est la valeur par défaut.
}]
}
}

Paramètres spécifiques à la plateforme

Anchor link to

Paramètres iOS

Anchor link to
Example
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"ios_title": { // optionnel. Objet OU chaîne. Ajoute un titre spécifique à iOS pour la notification push.
"en": "title"
},
"ios_subtitle": { // optionnel. Objet OU chaîne. Ajoute un sous-titre spécifique à iOS pour la notification push.
"en": "subtitle"
},
"ios_content": { // optionnel. Objet OU chaîne. Ajoute un contenu spécifique à iOS pour la notification push.
"en": "content"
},
"ios_badges": 5, // optionnel. Numéro de badge de l'application iOS.
// Utilisez "+n" ou "-n" pour incrémenter/décrémenter la valeur du badge de n.
"ios_sound": "sound file.wav", // optionnel. Nom du fichier son dans le bundle principal de l'application.
// Si laissé vide, l'appareil produira un son système par défaut.
"ios_sound_off": true, // optionnel. Activer/désactiver le son défini par le champ "ios_sound".
"ios_ttl": 3600, // optionnel. Paramètre de durée de vie - durée de vie maximale du message en secondes.
"ios_silent": 1, // optionnel. Active les notifications silencieuses (ignore "sound" et "content").
"ios_category_id": "1", // optionnel. ID de catégorie iOS8 de Pushwoosh.
"ios_root_params": { // optionnel. Paramètres de niveau racine pour le dictionnaire aps.
"aps": {
"content-available": "0", // optionnel. Définir sur "1" pour envoyer un push silencieux et "0" pour un push normal.
"mutable-content": 1 // requis pour les pièces jointes multimédias iOS10+.
},
"data": {} // optionnel. Données fournies par l'utilisateur, max 4 Ko.
},
"ios_attachment": "URL", // optionnel. Insérer du contenu multimédia dans la notification.
"ios_thread_id": "some thread id", // optionnel. Identifiant pour regrouper les notifications associées.
// Les messages avec le même ID de fil de discussion seront regroupés
// sur l'écran de verrouillage et dans le Centre de notifications.
"ios_critical": true, // optionnel. Marque la notification iOS comme une alerte critique
// qui joue un son même si l'appareil est en sourdine ou
// que le mode Ne pas déranger est activé.
"ios_category_custom": "category", // optionnel. Catégorie APNS personnalisée.
"ios_interruption_level": "active", // optionnel. Un de "passive", "active", "time-sensitive",
// "critical". Indique l'importance et
// le moment de livraison d'une notification. Référez-vous au
// guide des pushes uniques pour plus de détails.
"apns_trim_content": 1 // optionnel. (0|1) Tronque les chaînes de contenu trop longues avec des points de suspension.
}]
}
}

Paramètres Android

Anchor link to
Example
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"android_header": { // optionnel. En-tête de notification Android.
"en": "header"
},
"android_content": { // optionnel. Contenu de la notification Android.
"en": "content"
},
"android_root_params": { // optionnel. Objet clé-valeur personnalisé.
"key": "value", // Paramètres de niveau racine pour les destinataires du payload android.
"CancelID": 12345678 // optionnel. Annule la notification push avec l'ID de message spécifié
}, // (obtenez l'ID depuis l'historique des messages)
"android_sound": "soundfile", // optionnel. Pas d'extension de fichier. Si laissé vide,
// l'appareil produira un son système par défaut.
"android_sound_off": true, // optionnel. Activer/désactiver le son défini par le champ "android_sound"
"android_icon": "icon.png", // optionnel.
"android_custom_icon": "URL.png", // optionnel. URL complète du fichier image.
"android_banner": "URL.png", // optionnel. URL complète du fichier image.
"android_badges": 5, // optionnel. Numéro de badge de l'icône de l'application Android.
// Utilisez "+n" ou "-n" pour incrémenter/décrémenter la valeur du badge de n.
"android_gcm_ttl": 3600, // optionnel. Paramètre de durée de vie — durée de vie maximale du message en secondes.
"android_vibration": 0, // optionnel. Vibration forcée sur Android pour les pushes à haute priorité.
"android_led": "#rrggbb", // optionnel. Couleur LED hexadécimale, l'appareil fera sa meilleure approximation.
"android_priority": -1, // optionnel. Définit le paramètre "importance" pour les appareils avec
// Android 8.0 et supérieur, ainsi que le paramètre "priority"
// pour les appareils avec Android 7.1 et inférieur. Établit le
// niveau d'interruption d'un canal de notification ou d'une notification
// particulière. Les valeurs valides sont -2, -1, 0, 1, 2.
"android_delivery_priority": "normal", // optionnel. "normal" ou "high".
// Permet la livraison de la notification lorsque
// l'appareil est en mode d'économie d'énergie.
"android_ibc": "#RRGGBB", // optionnel. couleur de fond de l'icône sur Lollipop, #RRGGBB,
// #AARRGGBB, "red", "black", "yellow", etc.
"android_silent": 1, // optionnel. 0 ou 1. Activer la notification silencieuse.
// Ignorer le son et le contenu
"android_group_id": "123" // optionnel. Identifiant pour regrouper les notifications associées. Les messages avec
// le même ID de fil de discussion seront regroupés dans
// le Centre de notifications.
}]
}
}

Paramètres Huawei

Huawei
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"huawei_android_header": { // optionnel. Objet OU chaîne. Titre de la notification
"en": "header"
},
"huawei_android_content": { // optionnel. Objet OU chaîne. Contenu de la notification
"en": "content"
},
"huawei_android_badges": true, // optionnel.
"huawei_android_silent": 0, // optionnel. 0 ou 1. Activer la notification silencieuse.
// Ignorer le son et le contenu
"huawei_android_icon": "URL.png", // optionnel.
"huawei_android_led": "#FF0011", // optionnel. Couleur LED hexadécimale, l'appareil fera sa meilleure approximation
"huawei_android_vibration": 1, // optionnel. Vibration forcée sur Huawei pour les pushes à haute priorité
"huawei_android_sound": "sound.wav", // optionnel. Si laissé vide, l'appareil produira
// un son système par défaut
"huawei_android_sound_off": true, // optionnel. Activer/désactiver le son défini par
// le champ "huawei_android_sound"
"huawei_android_custom_icon": "URL.png", // optionnel
"huawei_android_gcm_ttl": 2400, // optionnel. Paramètre de durée de vie - maximum
// durée de vie du message en secondes
"huawei_android_banner": "URL.png", // optionnel. URL complète du fichier image
"huawei_android_root_params": { // optionnel. Objet clé-valeur personnalisé.
"key": "value" // Paramètres de niveau racine pour les destinataires du payload Huawei.
},
"huawei_android_priority": 0, // optionnel. Valeurs valides : -2, -1, 0, 1, 2
"huawei_android_ibc": "#0011AA", // optionnel. Couleur de fond de l'icône sur Lollipop
"huawei_android_lockscreen": 1, // optionnel
"huawei_android_delivery_priority": "normal", // optionnel. "normal" ou "high". Permet la livraison
// de la notification en mode d'économie d'énergie
"huawei_android_group_id": "group_id" // optionnel. Identifiant pour regrouper les notifications associées
}]
}
}

Paramètres Safari

Anchor link to
Safari
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"safari_url_args": [ // requis, mais la valeur peut être vide
"firstArgument",
"secondArgument"
],
"safari_title": { // optionnel. Objet OU chaîne. Titre de la notification.
"en": "content"
},
"safari_content": { // optionnel. Objet OU chaîne. Contenu de la notification.
"en": "content"
},
"safari_action": "Click here", // optionnel.
"safari_ttl": 3600 // optionnel. Paramètre de durée de vie — la durée de vie
// maximale d'un message en secondes.
}]
}
}

Paramètres Chrome

Anchor link to
Chrome
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"chrome_title": { // optionnel. Objet OU chaîne. Vous pouvez spécifier l'en-tête
"en": "title" // du message dans ce paramètre.
},
"chrome_content": { // optionnel. Objet OU chaîne. Vous pouvez spécifier le contenu
"en": "content" // du message dans ce paramètre.
},
"chrome_icon": "URL.png", // optionnel. URL complète de l'icône ou chemin du fichier de ressources de l'extension
"chrome_gcm_ttl": 3600, // optionnel. Paramètre de durée de vie – durée de vie maximale du message en secondes.
"chrome_duration": 20, // optionnel. max 50 secondes. Modifie la durée d'affichage du push Chrome.
// Mettre à 0 pour afficher le push jusqu'à ce que l'utilisateur interagisse avec.
"chrome_image": "image_URL", // optionnel. URL vers une grande image.
"chrome_root_params": { // optionnel. Définir des paramètres spécifiques aux messages envoyés à Chrome.
"key": "value"
},
"chrome_button_text1": "text1", // optionnel
"chrome_button_url1": "button1_URL", // optionnel. Ignoré si chrome_button_text1 n'est pas défini.
"chrome_button_text2": "text2", // optionnel
"chrome_button_url2": "button2_url" // optionnel. Ignoré si chrome_button_text2 n'est pas défini.
}]
}
}

Paramètres Firefox

Anchor link to
Firefox
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"firefox_title": { // optionnel. Objet OU chaîne. Vous pouvez spécifier l'en-tête du message ici.
"en": "title"
},
"firefox_content": { // optionnel. Objet OU chaîne. Vous pouvez spécifier le contenu du message ici.
"en": "content"
},
"firefox_icon": "URL.png", // optionnel. URL complète de l'icône ou chemin vers le
// fichier dans les ressources de l'extension.
"firefox_root_params": { // optionnel. Définir des paramètres spécifiques aux messages envoyés à Firefox.
"key": "value"
}
}]
}
}

Paramètres Amazon

Anchor link to
Amazon
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"adm_header": { // optionnel. Objet OU chaîne. Vous pouvez spécifier l'en-tête du message ici.
"en": "header"
},
"adm_content": { // optionnel. Objet OU chaîne. Vous pouvez spécifier le contenu du message ici.
"en": "content"
},
"adm_root_params": { // optionnel. Objet clé-valeur personnalisé
"key": "value"
},
"adm_sound": "push.mp3", // optionnel.
"adm_sound_off": true, // optionnel. Activer/désactiver le son défini par le champ "adm_sound"
"adm_icon": "icon.png", // optionnel. URL complète de l'icône.
"adm_custom_icon": "URL.png", // optionnel.
"adm_banner": "URL.png", // optionnel.
"adm_ttl": 3600, // optionnel. Paramètre de durée de vie — la durée de vie maximale du message
// en secondes.
"adm_priority": -1 // optionnel. Priorité du push dans le tiroir de push Amazon,
// les valeurs valides sont -2, -1, 0, 1 et 2.
}]
}
}

Paramètres Mac OS X

Anchor link to
Mac OS X
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"mac_title": { // optionnel. Objet OU chaîne. Ajoute un titre pour la notification push.
"en": "title"
},
"mac_subtitle": { // optionnel. Ajoute un sous-titre pour la notification push.
"en": "subtitle"
},
"mac_content": { // optionnel. Ajoute un contenu pour la notification push.
"en": "content"
},
"mac_badges": 3, // optionnel.
"mac_sound": "sound.caf", // optionnel.
"mac_sound_off": true, // optionnel. Activer/désactiver le son défini par le champ "mac_sound"
"mac_root_params": { // optionnel.
"content-available": 1
},
"mac_ttl": 3600 // optionnel. Paramètre de durée de vie — durée de vie maximale du message en secondes.
}]
}
}

Paramètres Windows

Anchor link to
Windows
{
"request": {
"application": "12345-67891", // requis. Code d'application Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"notifications": [{
"wns_content": { // requis. Contenu (XML ou brut) de la notification encodé en base64 MIME
// sous forme d'objet OU de chaîne
"en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==",
"de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4="
},
"wns_type": "Badge", // optionnel. 'Tile' | 'Toast' | 'Badge' | 'Raw'
"wns_tag": "myTag", // optionnel. Utilisé dans la politique de remplacement des tuiles.
// Une chaîne alphanumérique de 16 caractères maximum.
"wns_cache": 1, // optionnel. (1|0) Se traduit par la valeur X-WNS-Cache-Policy.
"wns_ttl": 600 // optionnel. Durée d'expiration de la notification en secondes.
}]
}
}

Réponse :

Code de statut HTTPstatus_codeDescription
200200Message créé avec succès
200210Erreur d’argument. Voir status_message pour plus d’informations
400N/AChaîne de requête malformée
500500Erreur interne

Suivi des messages API

Anchor link to

Pour des raisons d’équilibrage de charge, nous ne stockons pas les messages envoyés via l’API avec le paramètre « devices » qui contient moins de 10 appareils dans un tableau. Pour cette raison, ces messages ne seront pas affichés dans votre historique des messages.

Pour voir les rapports de push pendant la phase de test, utilisez le suivi des messages API. Activer cette option vous permet de dépasser cette limite pendant 1 heure et d’enregistrer ces pushes dans l’historique des messages. Le suivi des messages API se désactive automatiquement après 1 heure.

Le suivi des messages API peut être activé sur la page Historique des messages en cliquant sur Démarrer le suivi des messages API dans le coin supérieur droit.

Conditions de tag

Anchor link to

Chaque condition de tag est un tableau comme [tagName, operator, operand]

  • tagName : nom d’un tag
  • operator : “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
  • operand : chaîne | entier | tableau | date

Description de l’opérateur

Anchor link to
  • EQ : la valeur du tag est égale à l’opérande ;
  • IN : la valeur du tag croise l’opérande (l’opérande doit toujours être un tableau) ;
  • NOTEQ : la valeur du tag n’est pas égale à un opérande ;
  • NOTIN : la valeur du tag ne croise pas l’opérande (l’opérande doit toujours être un tableau) ;
  • GTE : la valeur du tag est supérieure ou égale à l’opérande ;
  • LTE : la valeur du tag est inférieure ou égale à l’opérande ;
  • BETWEEN : la valeur du tag est supérieure ou égale à la valeur minimale de l’opérande mais inférieure ou égale à la valeur maximale de l’opérande (l’opérande doit toujours être un tableau) ;
  • NOTSET : tag non défini. L’opérande n’est pas pris en compte ;
  • ANY : le tag a n’importe quelle valeur. L’opérande n’est pas pris en compte.

Tags de type chaîne

Anchor link to

Opérateurs valides : EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
Opérandes valides :

  • EQ, NOTEQ : l’opérande doit être une chaîne ;
  • IN, NOTIN : l’opérande doit être un tableau de chaînes comme ["value 1", "value 2", "value N"] ;
  • NOTSET : tag non défini. L’opérande n’est pas pris en compte ;
  • ANY : le tag a n’importe quelle valeur. L’opérande n’est pas pris en compte.

Tags de type entier

Anchor link to

Opérateurs valides : EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Opérandes valides :

  • EQ, NOTEQ, GTE, LTE : l’opérande doit être un entier ;
  • IN, NOTIN : l’opérande doit être un tableau d’entiers comme [value 1, value 2, value N] ;
  • BETWEEN : l’opérande doit être un tableau d’entiers comme [min_value, max_value] ;
  • NOTSET : tag non défini. L’opérande n’est pas pris en compte ;
  • ANY : le tag a n’importe quelle valeur. L’opérande n’est pas pris en compte.

Tags de type date

Anchor link to

Opérateurs valides : EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Opérandes valides :

  • "AAAA-MM-JJ 00:00" (chaîne)
  • timestamp unix 1234567890 (entier)
  • "Il y a N jours" (chaîne) pour les opérateurs EQ, BETWEEN, GTE, LTE

Tags de type booléen

Anchor link to

Opérateurs valides : EQ, NOTSET, ANY
Opérandes valides : 0, 1, true, false

Tags de type liste

Anchor link to

Opérateurs valides : IN, NOTIN, NOTSET, ANY
Opérandes valides : l’opérande doit être un tableau de chaînes comme ["value 1", "value 2", "value N"].

Extraits de code /createMessage

Anchor link to

Exemples de requêtes /createMessage :

#!/bin/bash
#Utilisation
if [ ! -n "$1" ] || [ ! -n "$2" ]
then
echo "`basename $0` utilisation : api_token appid message";
exit 1;
fi;
MESSAGE="$3";
if [ -z "$3" ]
then
MESSAGE='Un push pour les gouverner tous !'
fi;
echo -e "Réponse :"
curl --data-binary "
{\"request\":
{\"application\":\"$2\",
\"auth\":\"$1\",
\"notifications\":
[{
\"send_date\": \"now\",
\"content\": \"$MESSAGE\"
}]
}
}" \
-H "Content-type: application/json" \
"https://api.pushwoosh.com/json/1.3/createMessage"
echo "";
exit 0;

deleteMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/deleteMessage

Supprime un message planifié.

Corps de la requête

Anchor link to
NomTypeDescription
auth*stringJeton d’accès API depuis le Control Panel de Pushwoosh.
message*stringCode du message obtenu dans la requête /createMessage.
{
"status_code": 200,
"status_message": "OK"
}
Example
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"message": "xxxx-xxxxxxx-xxxxxx" // requis. Code du message obtenu dans /createMessage
}
}

Codes de statut :

Code de statut HTTPstatus_codeDescription
200200Message supprimé avec succès
200210Erreur d’argument. Voir status_message pour plus d’informations
400N/AChaîne de requête malformée
500500Erreur interne
<?php
// voir https://gomoob.github.io/php-pushwoosh/delete-message.html
use Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// crée une instance de requête
$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// appelle le service web '/deleteMessage'
$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) {
print 'Super, mon message a été supprimé !';
} else {
print 'Oups, la suppression a échoué :-(';
print 'Code de statut : ' . $response->getStatusCode();
print 'Message de statut : ' . $response->getStatusMessage();
}

getMessageDetails

Anchor link to

POST https://api.pushwoosh.com/json/1.3/getMessageDetails

Récupère les détails du message.

Corps de la requête

Anchor link to
NomTypeDescription
auth*stringJeton d’accès API depuis le Control Panel de Pushwoosh.
message*stringCode du message ou ID du message.
{
"status_code": 200,
"status_message": "OK",
"response": {
"message": {
"id": 2068991743,
"created": "2016-09-14 17:19:42",
"send_date": "2016-09-14 17:19:41",
"status": "done",
"content": {
"en": "Hello {Name|CapitalizeFirst|friend}! 🚀"
},
"platforms": "[1]",
"ignore_user_timezone": "1",
"code": "XXXX-92B4C3C5-A7F5EF70",
"data": {
"key": "value"
}
}
}
}
Example
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"message": "xxxx-xxxxxxx-xxxxxx" // requis. code du message ou ID du message
}
}

createTargetedMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/createTargetedMessage

Crée une nouvelle notification push ciblée.

Corps de la requête

Anchor link to
NomTypeDescription
auth*stringJeton d’accès API depuis le Control Panel de Pushwoosh.
devices_filter*stringVoir la remarque ci-dessous.
send_date*stringAAAA-MM-JJ HH:mm ou ‘now’.
ignore_user_timezonebooleanSi ignoré, UTC-0 est la valeur par défaut pour “send_date”.
timezonestringSi ignoré, UTC-0 est la valeur par défaut pour “send_date”.
campaignstringCode d’une campagne à laquelle vous souhaitez assigner ce message push.
content*stringContenu de la notification. Voir l’exemple de requête pour plus de détails.
transactionIdstringIdentifiant de message unique pour éviter la duplication des messages en cas de problèmes réseau. Stocké du côté de Pushwoosh pendant 5 minutes.
linkstringLien à ouvrir une fois qu’un utilisateur ouvre un message push.
minimize_linkinteger0 - ne pas minimiser, 2 - bit.ly. Par défaut = 2.
dataobjectChaîne JSON ou objet JSON. Sera passé comme paramètre “u” dans le payload (converti en chaîne JSON).
presetstringCode de préréglage.
send_rateintegerLimitation. Les valeurs valides sont de 100 à 1000 pushes par seconde.
inbox_datestringSpécifiez quand supprimer un message de la boîte de réception.
inbox_imagestringURL de l’image à afficher près du message dans la boîte de réception.
{
"status_code": 200,
"status_message": "OK",
"response": {
"messageCode": "97B0-C7473871-2FBDFDC6"
}
}

Plus d’exemples de réponses :

{
"status_code": 210,
"status_message": "Des erreurs se sont produites lors de la compilation du filtre",
"response": {
"errors": [{
"message": "Spécification de l'ensemble de tags invalide. \")\" attendu.",
"type": "syntax"
}]
}
}
Example
{
"request": {
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // requis. Syntaxe expliquée ci-dessous
"send_date": "now", // optionnel. AAAA-MM-JJ HH:mm OU 'now'
"ignore_user_timezone": true, // optionnel.
"timezone": "America/New_York", // optionnel. Si ignoré, UTC-0 est la valeur par défaut pour "send_date".
// Plus d'infos https://php.net/manual/timezones.php.
"campaign": "CAMPAIGN_CODE", // optionnel. Code de campagne auquel vous souhaitez assigner ce message push.
"content": { // optionnel. Objet OU chaîne. Utilisez "wns_content" à la place pour Windows.
"en": "English",
"de": "Deutsch"
},
"transactionId": "unique UUID", // optionnel. Identifiant de message unique pour éviter la duplication des messages
// en cas de problèmes réseau. Stocké du côté de
// Pushwoosh pendant 5 minutes.
"rich_media": "XXXXX-XXXXX", // optionnel. Copiez le code du Rich Media depuis la barre d'URL de la
// page de l'éditeur Rich Media dans le Control Panel de Pushwoosh.
"link": "https://google.com", // optionnel. Pour les deep links, ajoutez "minimize_link": 0
"minimize_link": 0, // optionnel. 0 — ne pas minimiser, 2 — bitly. Par défaut = 2.
// Le raccourcisseur d'URL Google est désactivé depuis le 30 mars 2019.
// Veuillez noter que les raccourcisseurs ont des restrictions
// sur le nombre d'appels.
"data": { // optionnel. Chaîne JSON ou objet JSON.
"key": "value" // Sera passé comme paramètre "u" dans le payload
}, // (converti en chaîne JSON).
"preset": "XXXXX-XXXXX", // optionnel. Code de préréglage de push depuis votre Control Panel.
"send_rate": 100, // optionnel. Limitation. Les valeurs valides sont de 100 à 1000 pushes/seconde.
"dynamic_content_placeholders": { // optionnel. Variables pour le contenu dynamique au lieu des tags d'appareil.
"firstname": "John",
"lastname": "Doe"
},
// Pour enregistrer le message dans la boîte de réception via l'API, utilisez "inbox_date" ou "inbox_image".
// Le message est enregistré si au moins un de ces paramètres est utilisé.
"inbox_image": "Inbox image URL", // optionnel. L'image à afficher à côté du message.
"inbox_date": "2017-02-02" // optionnel. Spécifiez quand supprimer un message de la boîte de réception.
// Le message sera supprimé de la boîte de réception à 00:00:01 UTC de
// la date spécifiée, donc la date précédente est le dernier
// jour où un utilisateur peut voir le message dans sa boîte de réception.
// Si non spécifié, la date de suppression par défaut est le
// jour suivant la date d'envoi.
}
}

Les bases sont très simples – tous les filtres sont effectués sur des ensembles d’entités.

Les ensembles sont définis comme :

1. Appareils abonnés à l’application particulière (A) ;
2. Appareils qui correspondent aux valeurs de tag spécifiées (T) ou à la valeur de tag spécifique à l’application (AT) ;

Essayons avec quelques exemples selon la liste ci-dessus.

Ciblage des abonnés de l’application

Anchor link to

Le filtre « A » définit un ensemble d’appareils abonnés à une application particulière :

A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])

  • “XXXXX-XXXXX” – Code d’application Pushwoosh
  • [“iOS”, “Android”, …] – tableau des plateformes ciblées. S’il est omis, le message sera envoyé à toutes les plateformes disponibles pour cette application.

Filtrage par valeurs de tag

Anchor link to

Le filtre « T » définit un ensemble d’appareils auxquels sont assignées les valeurs de tag spécifiées.

T(\"Age\", IN, [17,20])

Définit l’ensemble des appareils qui ont le tag « age » défini sur l’une des valeurs : 17, 18, 19, 20.

Types de tags et opérateurs

Anchor link to

Il est très important de comprendre que les tags sont partagés entre les applications, ce qui constitue un instrument très puissant pour segmenter et filtrer vos utilisateurs cibles sans vous lier à une application particulière.

Le tag peut être de trois types différents : Chaîne, Entier, Liste. Le type de tag définit les opérateurs que vous pouvez utiliser pour un tag particulier.

Tags de type chaîne

Anchor link to

Opérateurs applicables :

  • EQ – cible les appareils avec une valeur de tag spécifiée
  • IN – cible les appareils avec l’une des valeurs de tag spécifiées
  • NOTIN – cible les appareils sans les valeurs de tag spécifiées
  • NOTEQ – cible les appareils avec une valeur de tag non égale à celle spécifiée
  • NOTSET – cible les appareils sans valeur pour un tag spécifié
  • ANY – cible les appareils avec n’importe quelle valeur définie pour un tag spécifié

Exemples :

T (\"Age\", EQ, 30) – filtre les utilisateurs âgés de 30 ans

T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – filtre les utilisateurs qui ont choisi le rouge, le vert ou le bleu comme couleur préférée.

T (\"Name", NOTSET, \"\") – cible les appareils sans valeur pour le tag Name.

Vous pouvez utiliser des valeurs numériques avec les tags de type chaîne, mais ces valeurs seront converties en chaîne.

Tags de type entier

Anchor link to

Opérateurs applicables :

  • GTE – supérieur ou égal à une valeur spécifiée
  • LTE– inférieur ou égal à une valeur spécifiée
  • EQ – égal à une valeur spécifiée
  • BETWEEN – entre les valeurs min et max spécifiées
  • IN – n’importe laquelle des valeurs spécifiées
  • NOTIN – aucune valeur spécifiée n’est assignée à un appareil
  • NOTEQ – appareils avec une valeur de tag non égale à celle spécifiée
  • NOTSET – appareils sans valeur pour un tag spécifié
  • ANY – appareils avec n’importe quelle valeur définie pour un tag spécifié

Exemples :

T (\"Level\", EQ, 14) – filtre uniquement les utilisateurs de niveau 14.

T (\"Level\", BETWEEN, [1,5) – filtre les utilisateurs des niveaux 1, 2, 3, 4 et 5.

T (\"Level", GTE, 29) – cible les utilisateurs qui ont atteint au moins le niveau 29.

Tags de type liste

Anchor link to

Opérateurs applicables :

  • IN – appareils avec n’importe laquelle des valeurs de tag spécifiées

Exemple : T("Category", IN, ["breaking_news","business","politics"])

Tags de type date

Anchor link to

Opérateurs applicables :

  • GTE – supérieur ou égal à une valeur spécifiée
  • LTE– inférieur ou égal à une valeur spécifiée
  • EQ – égal à une valeur spécifiée
  • BETWEEN – entre les valeurs min et max spécifiées
  • NOTEQ – appareils avec une valeur de tag non égale à celle spécifiée
  • NOTSET – appareils sans valeur pour un tag spécifié
  • ANY – appareils avec n’importe quelle valeur définie pour un tag spécifié

Exemples :

AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])

AT("7777D-322A7","Last Application Open", GTE, "90 days ago")

Opérations

Anchor link to
  • « + » – joint deux ensembles (équivaut à OU)
  • « * » – croise deux ensembles (équivaut à ET)
  • « \ » – soustrait un ensemble d’un autre (équivaut à NON)

Toutes les opérations sont associatives à gauche. « + » et « * » ont la même priorité. « \ » a une priorité plus élevée. Vous pouvez utiliser des parenthèses pour définir les priorités des calculs.

Notez que l’opération « \ » n’est pas commutative. A("12345-12345") \ A("67890-67890") n’est pas la même chose que A("67890-67890") \ A("12345-12345").

getPushHistory

Anchor link to

POST https://api.pushwoosh.com/json/1.3/getPushHistory

Obtient l’historique des messages avec les détails des pushes.

Corps de la requête

Anchor link to
NomTypeDescription
auth*stringJeton d’accès API depuis le Control Panel de Pushwoosh.
limitMessagesintegerLimite le nombre de messages dans une réponse. Valeurs possibles de 10 à 1000.
sourcestringSource de l’historique des pushes. Peut être null ou : “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”.
searchBystringValeurs possibles pour la recherche. Peut être null ou : “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”.
valuestringValeur de recherche définie selon le champ “searchBy”.
lastNotificationIDstringUtilisé pour la pagination. Dernier messageId de l’appel /getPushHistory précédent. Voir les détails ci-dessous.
{
"status_code": 200,
"status_message": "OK",
"response": {
"rows": [{
"id": 10191611434,
"code": "8071-07AD1171-77238AD1",
"createDate": "2020-09-14 12:26:21",
"sendDate": "2020-09-14 12:26:21",
"content": {
"en": "Hello!"
},
"url": null,
"ios_title": null,
"ios_subtitle": null,
"ios_root_params": null,
"android_header": null,
"android_root_params": null,
"conditions": null,
"conditions_operator": "AND",
"filter_code": "E3A64-A5F3C",
"filter_conditions": "#In-app Purchase(≠0)",
"filter_name": "Purchased something",
"geozone": null,
"campaignId": "",
"campaignName": "",
"subscription_segments": null,
"open": {
"C90C0-0E786": {
"IOS": 0
}
},
"sent": {
"C90C0-0E786": {
"IOS": 1
}
},
"ctr": {
"C90C0-0E786": 0
}
}, {
"id": 10191609202,
"code": "41CA-83F8E0D7-7A63822B",
"createDate": "2020-09-14 12:25:55",
"sendDate": "2020-09-14 12:25:55",
"content": {
"en": "Hi!"
},
"url": null,
"ios_title": null,
"ios_subtitle": null,
"ios_root_params": null,
"android_header": null,
"android_root_params": null,
"conditions": null,
"conditions_operator": "AND",
"filter_code": null,
"filter_conditions": null,
"filter_name": null,
"geozone": null,
"campaignId": "",
"campaignName": "",
"subscription_segments": {
"2D732-BB981": "News"
},
"open": {
"C90C0-0E786": {
"CHROME": 0,
"IOS": 0
}
},
"sent": {
"C90C0-0E786": {
"CHROME": 1,
"IOS": 2
}
},
"ctr": {
"C90C0-0E786": 0
}
}]
}
}
Example
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"source": null, // optionnel. Les valeurs possibles sont null, "CP", "API", "GeoZone",
// "RSS", "AutoPush", "A/B Test"
"searchBy": "applicationCode", // optionnel. Les valeurs possibles sont "", "notificationID",
// "notificationCode", "applicationCode", "campaignCode"
"value": "C8717-703F2", // optionnel. Valeur de recherche définie selon le champ "searchBy".
"lastNotificationID": 0, // optionnel. Utilisé pour la pagination. Dernier messageId de la
// précédente requête /getPushHistory. Voir les détails ci-dessous.
"limitMessages": 1000 // optionnel. Valeur possible de 10 à 1000.
}
}

Cette méthode retournera 1000 messages du compte triés par ID de message. Pour obtenir la deuxième page, spécifiez le dernier ID de message de la réponse précédente dans le paramètre lastNotificationId.

Types de données de réponse

Anchor link to
id -- int | 0
code -- string
createDate -- string (date: %Y-%m-%d %H:%M:%S)
sendDate -- string (date: %Y-%m-%d %H:%M:%S)
content -- array ( dict {lang: value} | list [])
title -- array ( dict {lang: value} | list [])
subtitle -- array ( dict {lang: value} | list [])
url -- string
ios_title -- string | array ( dict {lang: value} ) | null
ios_subtitle -- string | array ( dict {lang: value} ) | null
ios_root_params -- dict (JSON) | null
android_header -- string | array ( dict {lang: value} ) | null
android_root_params -- dict (JSON) | null
conditions -- list (JSON) | null
conditions_operator -- string | null
filter_code -- string | null
filter_name -- string | null
filter_conditions -- string | null
geozone -- string | null
campaignId -- string | ""
campaignName -- string | ""
subscription_segments (obsolète) -- list (JSON) | null
data -- dict (JSON) | null
open -- dict [dict [string: int]] | "" Exemple : 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}
sent -- dict [dict [string: int]] | "" Exemple : 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}
ctr -- dict [string: int] | "" Exemple : {'AAAAA-BBBBB': 1}
errors -- dict [string: int] | "" Exemple : {'ANDROID': 1, 'IOS': 1}

cancelMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/cancelMessage

Supprime un message planifié.

Corps de la requête

Anchor link to
NomTypeDescription
auth*stringJeton d’accès API depuis le Control Panel de Pushwoosh.
message*stringLe code du message obtenu dans la réponse /createMessage.
{
"status_code":200,
"status_message":"OK"
}
Example
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Control Panel de Pushwoosh
"message": "xxxx-xxxxxxx-xxxxxx" // requis. Le code du message obtenu dans la réponse /createMessage
}
}

Codes de statut :

Code de statut HTTPstatus_codeDescription
200200Message annulé avec succès
200210Erreur d’argument. Voir status_message pour plus d’informations.
400N/AChaîne de requête malformée
500500Erreur interne