Messages API
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
Erstellt eine neue Push-Benachrichtigung.
Anfragekörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| application* | string | Pushwoosh-Anwendungscode |
| notifications* | array | JSON-Array von Nachrichtenparametern. Details finden Sie im Anforderungsbeispiel unten. |
{ "status_code": 200, "status_message": "OK", "response": { "Messages": [ "C3F8-C3863ED4-334AD4F1" ] }}Anforderungsbeispiel
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // erforderlich. Pushwoosh-Anwendungscode. "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel. "notifications": [{ "send_date": "now", // optional. JJJJ-MM-TT HH:mm ODER 'now' "content": { // optional. Objekt ODER Zeichenfolge. "en": "English", // Verwenden Sie stattdessen "wns_content" für Windows. "fr": "French" }, "title": { // optional. Objekt ODER Zeichenfolge. "en": "Title", // Wird ignoriert, wenn plattformspezifische Titel angegeben sind "fr": "Titre" // 'ios_title', 'android_header', etc. }, // siehe die Beispiele für plattformspezifische Parameter unten. "subtitle":{ // optional. Objekt ODER Zeichenfolge. "en": "Subtitle", // Wird ignoriert, wenn plattformspezifische Titel angegeben sind "fr": "Sous-titre" // 'ios_subtitle', etc. }, // siehe die Beispiele für plattformspezifische Parameter unten. "ignore_user_timezone": true, // optional. "timezone": "America/New_York", // optional. Wenn ignoriert, ist UTC-0 Standard für "send_date". // Siehe https://php.net/manual/timezones.php für // unterstützte Zeitzonen. "campaign": "CAMPAIGN_CODE", // optional. Kampagnencode, dem Sie // diese Push-Nachricht zuweisen möchten. "geozone": { // optional. An Geozone senden "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // optional. Kopieren Sie den Rich-Media-Code aus der URL-Leiste // der Rich-Media-Editor-Seite im Pushwoosh Control Panel. "link": "https://google.com", // optional. Für Deeplinks fügen Sie "minimize_link": 0 hinzu "minimize_link": 0, // optional. 0 — nicht minimieren, 2 — bitly. Standard = 2. // Bitte beachten Sie, dass Shortener Beschränkungen // für die Anzahl der Aufrufe haben. "data": { // optional. JSON-Zeichenfolge oder JSON-Objekt, wird als "key": "value" // "u"-Parameter in der Payload übergeben (in JSON-Zeichenfolge konvertiert). }, "transactionId": "unique UUID", // optional. Eindeutiger Nachrichtenidentifikator zur Vermeidung von Duplikaten // im Falle von Netzwerkproblemen. Wird auf der Seite von // Pushwoosh für 5 Minuten gespeichert. "platforms": [ // optional. 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", // optional. Push-Preset-Code aus Ihrem Control Panel. // Wenn spezifische Parameter in der Anfrage gesendet werden, // überschreiben sie die Parameter des Presets. "send_rate": 100, // optional. Drosselung. Gültige Werte sind von 100 bis 1000 Pushes/Sekunde. "send_rate_avoid": true, // optional. Wenn auf true gesetzt, wird das Drosselungslimit nicht auf // diese spezifische Push-Benachrichtigung angewendet. // Vorlagenbezogen, bitte lesen Sie den Leitfaden zur Template Engine, um mehr zu erfahren "template_bindings": { // optional. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // optional. Platzhalter für dynamische Inhalte anstelle von Geräte-Tags. "firstname": "John", "lastname": "Doe" },
// Frequenzbegrenzungsparameter. Stellen Sie sicher, dass die globale Frequenzbegrenzung im Control Panel konfiguriert ist. "capping_days": 30, // optional. Anzahl der Tage für die Frequenzbegrenzung (max. 30 Tage) "capping_count": 10, // optional. Die maximale Anzahl von Pushes, die von einer // spezifischen App an ein bestimmtes Gerät innerhalb eines 'capping_days' // Zeitraums gesendet werden können. Falls die erstellte Nachricht das // 'capping_count'-Limit für ein Gerät überschreitet, wird sie nicht // an dieses Gerät gesendet. "capping_exclude": true, // optional. Wenn auf true gesetzt, wird diese Push-Benachrichtigung nicht // für die Begrenzung zukünftiger Pushes gezählt. "capping_avoid": true, // optional. Wenn auf true gesetzt, wird die Begrenzung nicht auf // diese spezifische Push-Benachrichtigung angewendet.
// Um die Nachricht über die API im Posteingang zu speichern, verwenden Sie "inbox_date" oder "inbox_image". // Die Nachricht wird gespeichert, wenn mindestens einer dieser Parameter verwendet wird. "inbox_date": "2017-02-02", // optional. Geben Sie an, wann eine Nachricht aus dem Posteingang entfernt werden soll. // Die Nachricht wird um 00:00:01 UTC des angegebenen Datums aus dem Posteingang entfernt, // sodass der vorherige Tag der letzte Tag ist, an dem ein Benutzer die Nachricht in seinem Posteingang sehen kann. // Wenn nicht angegeben, ist das Standard-Entfernungsdatum der nächste Tag nach dem Sendedatum. "inbox_image": "Inbox image URL", // optional. Das Bild, das neben der Nachricht angezeigt werden soll. "inbox_days": 5, // optional. Geben Sie an, wann eine Nachricht aus dem // Posteingang entfernt werden soll (Lebensdauer einer Posteingangsnachricht in Tagen). // Kann anstelle des "inbox_date"-Parameters verwendet werden. // Bis zu 30 Tage.
"devices": [ // optional. Geben Sie Tokens oder HWIDs an, um gezielte Push-Benachrichtigungen zu senden. "hwid_XXXX" // Nicht mehr als 1000 Tokens/HWIDs in einem Array. ], // Wenn gesetzt, wird die Nachricht nur an die Geräte in der Liste gesendet. // Anwendungsgruppe für die Geräteliste ist nicht erlaubt. iOS-Push-Tokens dürfen nur in Kleinbuchstaben sein.
// Benutzerzentrierte Push-Benachrichtigungen "users": [ // optional. Wenn gesetzt, wird die Nachricht nur an die "user_XXXX" // angegebenen Benutzer-IDs zugestellt (gesetzt über /registerUser-Aufruf). ], // Wenn zusammen mit dem Geräteparameter angegeben, wird letzterer ignoriert. // Nicht mehr als 1000 Benutzer-IDs in einem Array. Anwendungsgruppe für die Benutzerliste ist nicht erlaubt.
// Filter und Bedingungen "filter": "FILTER_NAME", // optional. "conditions": [ // optional. Siehe die Anmerkung unten. ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // optional. Logischer Operator für Bedingungs-Arrays. // Mögliche Werte: AND | OR. AND ist Standard. }] }}Beispiel für eine VoIP-Benachrichtigungsanfrage
Anchor link toPushwoosh unterstützt VoIP-Anrufbenachrichtigungen für iOS und Android.
Unten finden Sie Beispiel-API-createMessage-Anfragen für jede Plattform.
{ "request": { "application": "XXXXX-XXXXX", // erforderlich. Pushwoosh-Anwendungscode. "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel. "notifications": [ { "voip_push": true, // erforderlich. Parameter ist erforderlich, um eine VoIP-Push-Benachrichtigung zu senden. "ios_root_params": { "aps": { "mutable-content": 1 // erforderlich für iOS10+ Medienanhänge. }, "callerName": "CallerName", // optional. Name des Anrufers. Wenn nicht angegeben, wird "unbekannter Anrufer" angezeigt. "video": true, // optional. Gibt an, ob Videoanrufe unterstützt werden. "supportsHolding": true, // optional. Gibt an, ob die Funktion zum Halten von Anrufen unterstützt wird. "supportsDTMF": false, // optional. Steuert die Unterstützung von Dual-Tone Multi-Frequency-Signalen. "callId": "42", // optional. Der eindeutige Identifikator des abzubrechenden Anrufs. "cancelCall": true // optional. Auf "true" setzen, um den Anruf mit der angegebenen "callId" abzubrechen. } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // erforderlich. Pushwoosh-Anwendungscode. "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel. "notifications": [ { "voip_push": true, // erforderlich. Parameter ist erforderlich, um eine VoIP-Push-Benachrichtigung zu senden. "android_root_params": { "callerName": "callerName", // optional. Name des Anrufers. Wenn nicht angegeben, wird "unbekannter Anrufer" angezeigt. "video": true, // optional. Gibt an, ob Videoanrufe unterstützt werden. "callId": 42, // optional. Der eindeutige Identifikator des abzubrechenden Anrufs. "cancelCall": true // optional. Auf "true" setzen, um den Anruf mit der angegebenen "callId" abzubrechen. } } ] }}Plattformspezifische Parameter
Anchor link toiOS-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "ios_title": { // optional. Objekt ODER Zeichenfolge. Fügt einen iOS-spezifischen Titel für die Push-Benachrichtigung hinzu. "en": "title" }, "ios_subtitle": { // optional. Objekt ODER Zeichenfolge. Fügt einen iOS-spezifischen Untertitel für die Push-Benachrichtigung hinzu. "en": "subtitle" }, "ios_content": { // optional. Objekt ODER Zeichenfolge. Fügt iOS-spezifischen Inhalt für die Push-Benachrichtigung hinzu. "en": "content" }, "ios_badges": 5, // optional. iOS-Anwendungs-Badge-Nummer. // Verwenden Sie "+n" oder "-n", um den Badge-Wert um n zu erhöhen/verringern. "ios_sound": "sound file.wav", // optional. Name der Sounddatei im Haupt-Bundle der Anwendung. // Wenn leer gelassen, erzeugt das Gerät einen Standard-Systemton. "ios_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "ios_sound" festgelegten Tons. "ios_ttl": 3600, // optional. Time-to-Live-Parameter - maximale Lebensdauer der Nachricht in Sekunden. "ios_silent": 1, // optional. Aktiviert stille Benachrichtigungen (ignoriert "sound" und "content"). "ios_category_id": "1", // optional. iOS8-Kategorie-ID von Pushwoosh. "ios_root_params": { // optional. Root-Level-Parameter für das aps-Wörterbuch. "aps": { "content-available": "0", // optional. Setzen Sie "1", um einen stillen Push zu senden, und "0" für einen regulären Push. "mutable-content": 1 // erforderlich für iOS10+ Medienanhänge. }, "callerName": "CallerName", // optionaler VoIP-Parameter. Name des Anrufers. Wenn nicht angegeben, wird "unbekannter Anrufer" angezeigt. "video": true, // optionaler VoIP-Parameter. Gibt an, ob Videoanrufe unterstützt werden. "supportsHolding": true, // optionaler VoIP-Parameter. Gibt an, ob die Funktion zum Halten von Anrufen unterstützt wird. "supportsDTMF": false, // optionaler VoIP-Parameter. Steuert die Unterstützung von Dual-Tone Multi-Frequency-Signalen. "data": {} // optional. Vom Benutzer bereitgestellte Daten, max. 4 KB }, "ios_attachment": "URL", // optional. Medieninhalte in die Benachrichtigung einfügen. "ios_thread_id": "some thread id", // optional. Kennung zum Gruppieren verwandter Benachrichtigungen. // Nachrichten mit derselben Thread-ID werden auf dem Sperrbildschirm // und im Benachrichtigungscenter gruppiert. "ios_critical": true, // optional. Markiert eine iOS-Benachrichtigung als kritischen Alarm, // der auch dann einen Ton abspielt, wenn ein Gerät stummgeschaltet ist oder // der "Nicht stören"-Modus aktiviert ist. "ios_category_custom": "category", // optional. Benutzerdefinierte APNS-Kategorie. "ios_interruption_level": "active", // optional. Einer von "passive", "active", "time-sensitive", // "critical". Gibt die Wichtigkeit und den // Zustellungszeitpunkt einer Benachrichtigung an. Weitere Details finden Sie im // Leitfaden für einmalige Pushes. "apns_trim_content": 1 // optional. (0|1) Kürzt die überschüssigen Inhaltszeichenfolgen mit Ellipsen. }] }}Android-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "android_header": { // optional. Android-Benachrichtigungsüberschrift. "en": "header" }, "android_content": { // optional. Android-Benachrichtigungsinhalt. "en": "content" }, "android_root_params": { // optional. Benutzerdefiniertes Schlüssel-Wert-Objekt. "key": "value", // Root-Level-Parameter für die Android-Payload-Empfänger. "CancelID": 12345678, // optional. Storniert die Push-Benachrichtigung mit der "voip": true, // erforderlicher VoIP-Parameter. Der Parameter ist erforderlich, um VoIP-Push-Benachrichtigungen zu versenden. "callerName": "callerName", // optionaler VoIP-Parameter. Name des Anrufers. Wenn nicht angegeben, wird "unbekannter Anrufer" angezeigt. "video": true, // optionaler VoIP-Parameter. Gibt an, ob Videoanrufe unterstützt werden. }, // angegebenen Nachrichten-ID (ID aus dem Nachrichtenverlauf abrufen) "android_sound": "soundfile", // optional. Keine Dateierweiterung. Wenn leer gelassen, // erzeugt das Gerät einen Standard-Systemton. "android_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "android_sound" festgelegten Tons "android_icon": "icon.png", // optional. "android_custom_icon": "URL.png", // optional. Vollständige URL zur Bilddatei. "android_banner": "URL.png", // optional. Vollständige URL zur Bilddatei. "android_badges": 5, // optional. Android-Anwendungssymbol-Badge-Nummer. // Verwenden Sie "+n" oder "-n", um den Badge-Wert um n zu erhöhen/verringern. "android_gcm_ttl": 3600, // optional. Time-to-Live-Parameter — maximale Lebensdauer der Nachricht in Sekunden. "android_vibration": 0, // optional. Android-Vibrationserzwingung für hochpriorisierte Pushes. "android_led": "#rrggbb", // optional. LED-Hex-Farbe, das Gerät wird sein Bestes tun, um sich anzunähern. "android_priority": -1, // optional. Setzt den "importance"-Parameter für Geräte mit // Android 8.0 und höher, sowie den "priority"-Parameter // für Geräte mit Android 7.1 und niedriger. Legt die // Unterbrechungsstufe eines Benachrichtigungskanals oder einer bestimmten // Benachrichtigung fest. Gültige Werte sind -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // optional. "normal" oder "high". // Ermöglicht die Zustellung der Benachrichtigung, wenn das // Gerät im Energiesparmodus ist. "android_ibc": "#RRGGBB", // optional. Symbolhintergrundfarbe auf Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow", etc. "android_silent": 1, // optional. 0 oder 1. Stille Benachrichtigung aktivieren. // Ton und Inhalt ignorieren "android_group_id": "123" // optional. Kennung zum Gruppieren verwandter Benachrichtigungen. Nachrichten mit // derselben Thread-ID werden im // Benachrichtigungscenter gruppiert. }] }}Huawei-Parameter
{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "huawei_android_header": { // optional. Objekt ODER Zeichenfolge. Benachrichtigungstitel "en": "header" }, "huawei_android_content": { // optional. Objekt ODER Zeichenfolge. Benachrichtigungsinhalt "en": "content" }, "huawei_android_badges": true, // optional. "huawei_android_silent": 0, // optional. 0 oder 1. Stille Benachrichtigung aktivieren. // Ton und Inhalt ignorieren "huawei_android_icon": "URL.png", // optional. "huawei_android_led": "#FF0011", // optional. LED-Hex-Farbe, das Gerät wird sein Bestes tun, um sich anzunähern "huawei_android_vibration": 1, // optional. Huawei-Vibrationserzwingung für hochpriorisierte Pushes "huawei_android_sound": "sound.wav", // optional. Wenn leer gelassen, erzeugt das Gerät // einen Standard-Systemton "huawei_android_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld // "huawei_android_sound" festgelegten Tons "huawei_android_custom_icon": "URL.png", // optional "huawei_android_gcm_ttl": 2400, // optional. Time-to-Live-Parameter - maximale // Lebensdauer der Nachricht in Sekunden "huawei_android_banner": "URL.png", // optional. Vollständiger Pfad-URL zur Bilddatei "huawei_android_root_params": { // optional. Benutzerdefiniertes Schlüssel-Wert-Objekt. "key": "value" // Root-Level-Parameter für Huawei-Payload-Empfänger. }, "huawei_android_priority": 0, // optional. Gültige Werte: -2, -1, 0, 1, 2 "huawei_android_ibc": "#0011AA", // optional. Symbolhintergrundfarbe auf Lollipop "huawei_android_lockscreen": 1, // optional "huawei_android_delivery_priority": "normal", // optional. "normal" oder "high". Ermöglicht die Benachrichtigungszustellung // im Energiesparmodus "huawei_android_group_id": "group_id" // optional. Kennung zum Gruppieren verwandter Benachrichtigungen }] }}Safari-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "safari_url_args": [ // erforderlich, aber der Wert kann leer sein "firstArgument", "secondArgument" ], "safari_title": { // optional. Objekt ODER Zeichenfolge. Titel der Benachrichtigung. "en": "content" }, "safari_content": { // optional. Objekt ODER Zeichenfolge. Inhalt der Benachrichtigung. "en": "content" }, "safari_action": "Click here", // optional. "safari_ttl": 3600 // optional. Time-to-Live-Parameter — die maximale // Lebensdauer einer Nachricht in Sekunden. }] }}Chrome-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "chrome_title": { // optional. Objekt ODER Zeichenfolge. Sie können die Kopfzeile "en": "title" // der Nachricht in diesem Parameter angeben. }, "chrome_content": { // optional. Objekt ODER Zeichenfolge. Sie können den Inhalt "en": "content" // der Nachricht in diesem Parameter angeben. }, "chrome_icon": "URL.png", // optional. Vollständige URL zum Symbol oder Dateipfad zu Erweiterungsressourcen "chrome_gcm_ttl": 3600, // optional. Time-to-Live-Parameter – maximale Lebensdauer der Nachricht in Sekunden. "chrome_duration": 20, // optional. max. 50 Sekunden. Ändert die Anzeigezeit von Chrome-Pushes. // Auf 0 setzen, um den Push anzuzeigen, bis der Benutzer damit interagiert. "chrome_image": "image_URL", // optional. URL zu einem großen Bild. "chrome_root_params": { // optional. Setzen Sie spezifische Parameter für Nachrichten, die an Chrome gesendet werden. "key": "value" }, "chrome_button_text1": "text1", // optional "chrome_button_url1": "button1_URL", // optional. Wird ignoriert, wenn chrome_button_text1 nicht gesetzt ist. "chrome_button_text2": "text2", // optional "chrome_button_url2": "button2_url" // optional. Wird ignoriert, wenn chrome_button_text2 nicht gesetzt ist. }] }}Firefox-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "firefox_title": { // optional. Objekt ODER Zeichenfolge. Sie können hier die Nachrichtenkopfzeile angeben. "en": "title" }, "firefox_content": { // optional. Objekt ODER Zeichenfolge. Sie können hier den Nachrichteninhalt angeben. "en": "content" }, "firefox_icon": "URL.png", // optional. Vollständiger Pfad-URL zum Symbol oder Pfad zur // Datei in den Erweiterungsressourcen. "firefox_root_params": { // optional. Setzen Sie spezifische Parameter für Nachrichten, die an Firefox gesendet werden. "key": "value" } }] }}Amazon-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "adm_header": { // optional. Objekt ODER Zeichenfolge. Sie können hier die Nachrichtenkopfzeile angeben. "en": "header" }, "adm_content": { // optional. Objekt ODER Zeichenfolge. Sie können hier den Nachrichteninhalt angeben. "en": "content" }, "adm_root_params": { // optional. Benutzerdefiniertes Schlüssel-Wert-Objekt "key": "value" }, "adm_sound": "push.mp3", // optional. "adm_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "adm_sound" festgelegten Tons "adm_icon": "icon.png", // optional. Vollständige URL zum Symbol. "adm_custom_icon": "URL.png", // optional. "adm_banner": "URL.png", // optional. "adm_ttl": 3600, // optional. Time-to-Live-Parameter — die maximale Lebensdauer der Nachricht // in Sekunden. "adm_priority": -1 // optional. Priorität des Pushes im Amazon-Push-Drawer, // gültige Werte sind -2, -1, 0, 1 und 2. }] }}Mac OS X-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "mac_title": { // optional. Objekt ODER Zeichenfolge. Fügt einen Titel für die Push-Benachrichtigung hinzu. "en": "title" }, "mac_subtitle": { // optional. Fügt einen Untertitel für die Push-Benachrichtigung hinzu. "en": "subtitle" }, "mac_content": { // optional. Fügt Inhalt für die Push-Benachrichtigung hinzu. "en": "content" }, "mac_badges": 3, // optional. "mac_sound": "sound.caf", // optional. "mac_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "mac_sound" festgelegten Tons "mac_root_params": { // optional. "content-available": 1 }, "mac_ttl": 3600 // optional. Time-to-Live-Parameter — maximale Lebensdauer der Nachricht in Sekunden. }] }}Windows-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "notifications": [{ "wns_content": { // erforderlich. Inhalt (XML oder roh) der Benachrichtigung, kodiert in MIME's base64 // in Form von Objekt ODER Zeichenfolge "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // optional. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // optional. Wird in der Kachel-Ersetzungsrichtlinie verwendet. // Eine alphanumerische Zeichenfolge von nicht mehr als 16 Zeichen. "wns_cache": 1, // optional. (1|0) Übersetzt in den Wert von X-WNS-Cache-Policy. "wns_ttl": 600 // optional. Ablaufzeit für die Benachrichtigung in Sekunden. }] }}Antwort:
| HTTP-Statuscode | status_code | Beschreibung |
|---|---|---|
| 200 | 200 | Nachricht erfolgreich erstellt |
| 200 | 210 | Argumentfehler. Siehe status_message für weitere Informationen |
| 400 | N/A | Fehlerhafte Anforderungszeichenfolge |
| 500 | 500 | Interner Fehler |
API-Nachrichtenverfolgung
Anchor link toAus Gründen des Lastausgleichs speichern wir keine Nachrichten, die über die API mit dem „devices“-Parameter gesendet werden, der weniger als 10 Geräte in einem Array enthält. Aus diesem Grund werden solche Nachrichten nicht in Ihrem Nachrichtenverlauf angezeigt.
Um Push-Berichte während der Testphase zu sehen, verwenden Sie die API-Nachrichtenverfolgung. Wenn Sie diese Option EINschalten, können Sie dieses Limit für 1 Stunde überschreiben und solche Pushes im Nachrichtenverlauf speichern. Die API-Nachrichtenverfolgung schaltet sich nach 1 Stunde automatisch AUS.
Die API-Nachrichtenverfolgung kann auf der Seite Nachrichtenverlauf aktiviert werden, indem Sie oben rechts auf API-Nachrichtenverfolgung starten klicken.
Tag-Bedingungen
Anchor link toJede Tag-Bedingung ist ein Array wie [tagName, operator, operand], wobei
- tagName: Name eines Tags
- operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
- operand: string | integer | array | date
Operatorbeschreibung
Anchor link to- EQ: Tag-Wert ist gleich dem Operanden;
- IN: Tag-Wert überschneidet sich mit dem Operanden (Operand muss immer ein Array sein);
- NOTEQ: Tag-Wert ist nicht gleich einem Operanden;
- NOTIN: Tag-Wert überschneidet sich nicht mit dem Operanden (Operand muss immer ein Array sein);
- GTE: Tag-Wert ist größer oder gleich dem Operanden;
- LTE: Tag-Wert ist kleiner oder gleich dem Operanden;
- BETWEEN: Tag-Wert ist größer oder gleich dem min-Operandenwert, aber kleiner oder gleich dem max-Operandenwert (Operand muss immer ein Array sein);
- NOTSET: Tag nicht gesetzt. Operand wird nicht berücksichtigt;
- ANY: Tag hat einen beliebigen Wert. Operand wird nicht berücksichtigt.
String-Tags
Anchor link toGültige Operatoren: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
Gültige Operanden:
- EQ, NOTEQ: Operand muss eine Zeichenfolge sein;
- IN, NOTIN: Operand muss ein Array von Zeichenfolgen sein, wie
["value 1", "value 2", "value N"]; - NOTSET: Tag nicht gesetzt. Operand wird nicht berücksichtigt;
- ANY: Tag hat einen beliebigen Wert. Operand wird nicht berücksichtigt.
Integer-Tags
Anchor link toGültige Operatoren: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Gültige Operanden:
- EQ, NOTEQ, GTE, LTE: Operand muss eine ganze Zahl sein;
- IN, NOTIN: Operand muss ein Array von ganzen Zahlen sein, wie
[value 1, value 2, value N]; - BETWEEN: Operand muss ein Array von ganzen Zahlen sein, wie
[min_value, max_value]; - NOTSET: Tag nicht gesetzt. Operand wird nicht berücksichtigt;
- ANY: Tag hat einen beliebigen Wert. Operand wird nicht berücksichtigt.
Datums-Tags
Anchor link toGültige Operatoren: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Gültige Operanden:
"YYYY-MM-DD 00:00"(Zeichenfolge)- Unix-Zeitstempel
1234567890(Ganzzahl) "N days ago"(Zeichenfolge) für die Operatoren EQ, BETWEEN, GTE, LTE
Boolesche Tags
Anchor link toGültige Operatoren: EQ, NOTSET, ANY
Gültige Operanden: 0, 1, true, false
Listen-Tags
Anchor link toGültige Operatoren: IN, NOTIN, NOTSET, ANY
Gültige Operanden: Operand muss ein Array von Zeichenfolgen sein, wie ["value 1", "value 2", "value N"].
/createMessage-Snippets
Anchor link toBeispiel /createMessage-Anfragen:
#!/bin/bash
#Usageif [ ! -n "$1" ] || [ ! -n "$2" ]then echo "`basename $0` usage: api_token appid message"; exit 1;fi;MESSAGE="$3";if [ -z "$3" ]thenMESSAGE='One push to rule them all!'fi;
echo -e "Response:"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;<?phpdefine('PW_AUTH', 'API TOKEN');define('PW_APPLICATION', 'APPLICATION CODE');define('PW_DEBUG', true);
function pwCall($method, $data) { $url = 'https://api.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]);
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request"; print "[PW] response: $response"; print '[PW] info: ' . print_r($info, true); }}
pwCall('createMessage', array( 'application' => PW_APPLICATION, 'auth' => PW_AUTH, 'notifications' => array( array( 'send_date' => 'now', 'content' => 'test', 'data' => array('custom' => 'json data'), 'link' => 'https://pushwoosh.com/' ) ) ));-module(pushwoosh).-export([run/0, stop/0, sendMessage/1]).%% sendMessage argument: message text %%
%% Authentication & App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% KickStart %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% HTTP Client verbosity options flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% JSON Wars !encode(S) -> encode(S, [$"]).encode([], Acc) -> lists:reverse([$" | Acc]);encode([C | Cs], Acc) -> Hex = lists:flatten(io_lib:format("~4.16.0b", [C])), encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
sendMessage(Message_text) -> %% URL to JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Method post, %%Request {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP options [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Options []), io:format("And received ~p", [Response]).class PushNotification
#- PushWoosh API Documentation https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Two methods here: # - PushNotification.new.notify_all(message) Notifies all with the same option # - PushNotification.new.notify_devices(notification_options = {}) Notifies specific devices with custom options
include HTTParty #Make sure to have the HTTParty gem declared in your gemfile https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Change to your settings @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("This is a test notification to all devices") def notify_all(message) notify_devices({:content => message}) end
# PushNotification.new.notify_device({ # :content => "TEST", # :data => {:custom_data => value}, # :devices => array_of_tokens #}) def notify_devices(notification_options = {}) #- Default options, uncomment :data or :devices if needed default_notification_options = { # YYYY-MM-DD HH:mm OR 'now' :send_date => "now", # Object( language1: 'content1', language2: 'content2' ) OR string :content => { :fr => "Test", :en => "Test" }, # JSON string or JSON object "custom": "json data" #:data => { # :custom_data => value #}, # omit this field (push notification will be delivered to all the devices for the application), or provide the list of devices IDs #:devices => {} }
#- Merging with specific options final_notification_options = default_notification_options.merge(notification_options)
#- Constructing the final call options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Executing the POST API Call with HTTPARTY - :body => options.to_json allows us to send the json as an object instead of a string response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Uses JSON classes from https://json.org/java/
package com.arellomobile;
import org.json.*;import java.io.*;import java.net.*;
public class SendPushNotificationSample{ public static final String PUSHWOOSH_SERVICE_BASE_URL = "https://api.pushwoosh.com/json/1.3/"; private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN"; private static final String APPLICATION_CODE = "PW_APPLICATION_CODE";
public static void main(String[] args) throws JSONException, MalformedURLException { String method = "createMessage"; URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
JSONArray notificationsArray = new JSONArray() .put(new JSONObject().put("send_date", "now") .put("content", "test") .put("link", "https://pushwoosh.com/"));
JSONObject requestObject = new JSONObject() .put("application", APPLICATION_CODE) .put("auth", AUTH_TOKEN) .put("notifications", notificationsArray);
JSONObject mainRequest = new JSONObject().put("request", requestObject); JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
System.out.println("Response is: " + response); }}
class SendServerRequest{ static JSONObject sendJSONRequest(URL url, String request) { HttpURLConnection connection = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoInput(true); connection.setDoOutput(true);
DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); writer.write(request.getBytes("UTF-8")); writer.flush(); writer.close();
return parseResponse(connection); } catch (Exception e) { System.out.println("An error occurred: " + e.getMessage()); return null; } finally { if (connection != null) { connection.disconnect(); } } }
static JSONObject parseResponse(HttpURLConnection connection) throws IOException, JSONException { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) { response.append(line).append(''); } reader.close();
return new JSONObject(response.toString()); }}import json
PW_AUTH = 'API TOKEN'PW_APPLICATION_CODE = 'APPLICATION CODE'
try: # For Python 3.0 and later from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopen from urllib2 import Request
def pw_call(method, data): url = 'https://api.pushwoosh.com/json/1.3/' + method data = json.dumps({'request': data}) req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'}) try: f = urlopen(req) response = f.read() f.close() print('Pushwoosh response: ' + str(response)) except Exception as e: print ('Request error: ' + str(e))
if __name__ == '__main__': pw_call('createMessage', { 'auth': PW_AUTH, 'application': PW_APPLICATION_CODE, 'notifications': [ { 'send_date': 'now', 'content': 'test', 'data': {"custom": "json data"}, 'link': 'https://pushwoosh.com' } ] } )using System;using System.IO;using System.Net;using Newtonsoft.Json.Linq;
namespace WebApplication1{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string pwAuth = "YOUR_AUTH_TOKEN"; string pwApplication = "PW_APPLICATION_CODE"; JObject json = new JObject( new JProperty("application", pwApplication), new JProperty("auth", pwAuth), new JProperty("notifications", new JArray( new JObject( new JProperty("send_date", "now"), new JProperty("content", "test"), new JProperty("wp_type", "Toast"), new JProperty("wp_count", 3), new JProperty("data", new JObject( new JProperty("custom", "json data"))), new JProperty("link", "https://pushwoosh.com/"), new JProperty("conditions", new JArray( (object)new JArray("Color", "EQ", "black"))))))); PWCall("createMessage", json); } private void PWCall(string action, JObject data) { Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action); JObject json = new JObject(new JProperty("request", data)); DoPostRequest(url, json); } private void DoPostRequest(Uri url, JObject data) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ContentType = "text/json"; req.Method = "POST"; using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(data.ToString()); } HttpWebResponse httpResponse; try { httpResponse = (HttpWebResponse)req.GetResponse(); } catch (Exception exc) { throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message)); } using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); Page.Response.Write(responseText); } } }}package main
import( "fmt" "encoding/json" "net/http" "bytes" "io/ioutil")
const ( PW_APPLICATION = "APPLICATION CODE" PW_AUTH = "API TOKEN" PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/")
func pwCall(method string, data []byte) (bool) { url := PW_ENDPOINT + method request, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) request.Header.Set("Content-Type", "application/json")
client := http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error occur: " + err.Error()) return false } defer response.Body.Close()
fmt.Println("Response Status: ", response.Status) if (response.StatusCode == 200) { body, _ := ioutil.ReadAll(response.Body) fmt.Println("Response Body: ", string(body)) return true } return false}
func main() { requestData := map[string]interface{}{ "request": map[string]interface{} { "auth": PW_AUTH, "application": PW_APPLICATION, "notifications": []interface{}{ map[string]interface{} { "send_date": "now", "content": "test", "link": "https://pushwoosh.com", }, }, }, } jsonRequest, _ := json.Marshal(requestData) requestString := string(jsonRequest) fmt.Println("Request body: " + requestString)
pwCall("createMessage", jsonRequest)}$.ajax({ type: "POST", url: "https://api.pushwoosh.com/json/1.3/createMessage", data: JSON.stringify({ "request": { "application": "APPLICATION CODE", "auth": "API TOKEN", "notifications": [{ "send_date": "now", "ignore_user_timezone": true, "content": "Hello world!" }] } }), dataType: "json"}).done(function(data) { console.log(data);});deleteMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/deleteMessage
Löscht eine geplante Nachricht.
Anfragekörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| message* | string | Nachrichtencode, der in der /createMessage-Anfrage erhalten wurde. |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // erforderlich. Nachrichtencode, der in /createMessage erhalten wurde }}Statuscodes:
| HTTP-Statuscode | status_code | Beschreibung |
|---|---|---|
| 200 | 200 | Nachricht erfolgreich gelöscht |
| 200 | 210 | Argumentfehler. Siehe status_message für weitere Informationen |
| 400 | N/A | Fehlerhafte Anforderungszeichenfolge |
| 500 | 500 | Interner Fehler |
<?php// see https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// creates request instance$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// call '/deleteMessage' Web Service$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) { print 'Great, my message has been deleted !';} else { print 'Oups, the deletion failed :-('; print 'Status code : ' . $response->getStatusCode(); print 'Status message : ' . $response->getStatusMessage();}getMessageDetails
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getMessageDetails
Ruft die Nachrichtendetails ab.
Anfragekörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| message* | string | Nachrichtencode oder Nachrichten-ID. |
{ "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" } } }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // erforderlich. Nachrichtencode oder Nachrichten-ID }}createTargetedMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
Erstellt eine neue gezielte Push-Benachrichtigung.
Anfragekörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| devices_filter* | string | Siehe Anmerkung unten. |
| send_date* | string | JJJJ-MM-TT HH:mm oder ‘now’. |
| ignore_user_timezone | boolean | Wenn ignoriert, ist UTC-0 Standard für “send_date”. |
| timezone | string | Wenn ignoriert, ist UTC-0 Standard für “send_date”. |
| campaign | string | Code einer Kampagne, der Sie diese Push-Nachricht zuweisen möchten. |
| content* | string | Benachrichtigungsinhalt. Siehe das Anforderungsbeispiel für Details. |
| transactionId | string | Eindeutiger Nachrichtenidentifikator zur Vermeidung von doppelten Nachrichten bei Netzwerkproblemen. Wird auf der Seite von Pushwoosh für 5 Minuten gespeichert. |
| link | string | Link, der geöffnet wird, sobald ein Benutzer eine Push-Nachricht öffnet. |
| minimize_link | integer | 0 - nicht minimieren, 2 - bit.ly. Standard = 2. |
| data | object | JSON-Zeichenfolge oder JSON-Objekt. Wird als “u”-Parameter in der Payload übergeben (in JSON-Zeichenfolge konvertiert). |
| preset | string | Preset-Code. |
| send_rate | integer | Drosselung. Gültige Werte sind von 100 bis 1000 Pushes pro Sekunde. |
| inbox_date | string | Geben Sie an, wann eine Nachricht aus dem Posteingang entfernt werden soll. |
| inbox_image | string | URL des Bildes, das neben der Nachricht im Posteingang angezeigt werden soll. |
{ "status_code": 200, "status_message": "OK", "response": { "messageCode": "97B0-C7473871-2FBDFDC6" }}The request cannot be fulfilled due to bad syntax.Weitere Antwortbeispiele:
{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Invalid tag set specification. \")\" expected.", "type": "syntax" }] }}{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Application \"11111-11111\" not found", "type": "semantic", "near": "\"11111-11111\"" }] }}{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Invalid character \"/\" at 1:19", "type": "lexical" }] }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // erforderlich. Syntax unten erklärt "send_date": "now", // optional. JJJJ-MM-TT HH:mm ODER 'now' "ignore_user_timezone": true, // optional. "timezone": "America/New_York", // optional. Wenn ignoriert, ist UTC-0 Standard für "send_date". // Weitere Informationen https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // optional. Kampagnencode, dem Sie diese Push-Nachricht zuweisen möchten. "content": { // optional. Objekt ODER Zeichenfolge. Verwenden Sie stattdessen "wns_content" für Windows. "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // optional. Eindeutiger Nachrichtenidentifikator zur Vermeidung von doppelten Nachrichten // im Falle von Netzwerkproblemen. Wird auf der Seite von // Pushwoosh für 5 Minuten gespeichert. "rich_media": "XXXXX-XXXXX", // optional. Kopieren Sie den Rich-Media-Code aus der URL-Leiste der // Rich-Media-Editor-Seite im Pushwoosh Control Panel. "link": "https://google.com", // optional. Für Deeplinks fügen Sie "minimize_link": 0 hinzu "minimize_link": 0, // optional. 0 — nicht minimieren, 2 — bitly. Standard = 2. // Google URL Shortener ist seit dem 30. März 2019 deaktiviert. // Bitte beachten Sie, dass Shortener Beschränkungen // für die Anzahl der Aufrufe haben. "data": { // optional. JSON-Zeichenfolge oder JSON-Objekt. "key": "value" // Wird als "u"-Parameter in der Payload übergeben }, // (in JSON-Zeichenfolge konvertiert). "preset": "XXXXX-XXXXX", // optional. Push-Preset-Code aus Ihrem Control Panel. "send_rate": 100, // optional. Drosselung. Gültige Werte sind von 100 bis 1000 Pushes/Sekunde. "dynamic_content_placeholders": { // optional. Platzhalter für dynamische Inhalte anstelle von Geräte-Tags. "firstname": "John", "lastname": "Doe" },
// Um die Nachricht über die API im Posteingang zu speichern, verwenden Sie "inbox_date" oder "inbox_image". // Die Nachricht wird gespeichert, wenn mindestens einer dieser Parameter verwendet wird. "inbox_image": "Inbox image URL", // optional. Das Bild, das neben der Nachricht angezeigt werden soll. "inbox_date": "2017-02-02" // optional. Geben Sie an, wann eine Nachricht aus dem Posteingang entfernt werden soll. // Die Nachricht wird um 00:00:01 UTC des // angegebenen Datums aus dem Posteingang entfernt, sodass der vorherige Tag der letzte // Tag ist, an dem ein Benutzer die Nachricht in seinem Posteingang sehen kann. // Wenn nicht angegeben, ist das Standard-Entfernungsdatum der nächste // Tag nach dem Sendedatum. }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "devices_filter": "FILTER CONDITION", "send_date": "now", // optional. JJJJ-MM-TT HH:mm ODER 'now' "content": { // optional. Objekt ODER Zeichenfolge. "en": "English", // Verwenden Sie stattdessen "wns_content" für Windows. "de": "Deutsch" }, "ignore_user_timezone": true, // optional. "timezone": "America/New_York", // optional. Wenn ignoriert, ist UTC-0 Standard für "send_date". // Weitere Informationen https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // optional. Kampagnencode, dem Sie diese Push-Nachricht zuweisen möchten.
// iOS-bezogene Parameter "ios_badges": 5, // optional. iOS-Anwendungs-Badge-Nummer. // Verwenden Sie "+n" oder "-n", um den Badge-Wert um n zu erhöhen/verringern. "ios_sound": "sound file.wav", // optional. Name der Sounddatei im Haupt-Bundle der Anwendung. // Wenn leer gelassen, erzeugt das Gerät keinen Ton // beim Empfang eines Pushes. "ios_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "ios_sound" festgelegten Tons. "ios_ttl": 3600, // optional. Time-to-Live-Parameter — maximale Lebensdauer der Nachricht in Sekunden. "ios_silent": 1, // optional. Aktiviert stille Benachrichtigungen (ignoriert "sound" und "content"). "ios_category_id": "1", // optional. iOS8-Kategorie-ID von Pushwoosh. "ios_category_custom": "category", // optional. Benutzerdefinierte APNS-Kategorie. "ios_root_params": { // optional. Root-Level-Parameter für das aps-Wörterbuch. "aps": { "content-available": "0", // optional. Setzen Sie "1", um einen stillen Push zu senden, und "0" für einen regulären Push. "mutable-content": 1 // erforderlich für iOS10+ Medienanhänge. }, "attachment": "YOUR_ATTACHMENT_URL", // iOS10+ Medienanhang-URL. "data": {} // optional. Vom Benutzer bereitgestellte Daten, max. 4 KB }, "apns_trim_content": 1, // optional. (0|1) Kürzt die überschüssigen Inhaltszeichenfolgen mit Ellipsen. "ios_title": { // optional. Fügt einen Titel für die iOS-Push-Benachrichtigung hinzu. "en": "title" }, "ios_subtitle": { // optional. Fügt einen Untertitel für die iOS-Push-Benachrichtigung hinzu. "en": "subTitle" }, "ios_content": { // optional. Fügt Inhalt für die iOS-Push-Benachrichtigung hinzu. "en": "content" },
// Android-bezogene Parameter "android_root_params": { // optional. Benutzerdefiniertes Schlüssel-Wert-Objekt. "key": "value" // Root-Level-Parameter für die Android-Payload-Empfänger. }, "android_sound": "soundfile", // optional. Keine Dateierweiterung. Wenn leer gelassen, erzeugt das Gerät // keinen Ton beim Empfang eines Pushes. "android_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "android_sound" festgelegten Tons "android_header": { // optional. Objekt ODER Zeichenfolge. Android-Benachrichtigungsüberschrift. "en": "header" }, "android_content": { // optional. Objekt ODER Zeichenfolge. Android-Benachrichtigungsinhalt. "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // optional. Vollständiger Pfad-URL zur Bilddatei. "android_banner": "URL.png", // optional. Vollständiger Pfad-URL zur Bilddatei. "android_badges": 5, // optional. Ganzzahl. Android-Anwendungssymbol-Badge-Nummer. // Verwenden Sie "+n" oder "-n", um den Badge-Wert um n zu erhöhen/verringern. "android_gcm_ttl": 3600, // optional. Time-to-Live-Parameter — maximale Lebensdauer der Nachricht in Sekunden. "android_vibration": 0, // optional. Android-Vibrationserzwingung für hochpriorisierte Pushes. "android_led": "#rrggbb", // optional. LED-Hex-Farbe, das Gerät wird sein Bestes tun, um sich anzunähern. "android_priority": -1, // optional. Setzt den "importance"-Parameter für Geräte mit Android 8.0 // und höher, sowie den "priority"-Parameter für Geräte // mit Android 7.1 und niedriger. Legt die Unterbrechungsstufe // eines Benachrichtigungskanals oder einer bestimmten Benachrichtigung fest. // Gültige Werte sind -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // optional. "normal" oder "high". Ermöglicht die Zustellung der Benachrichtigung, // wenn das Gerät im Energiesparmodus ist. "android_ibc": "#RRGGBB", // optional. Symbolhintergrundfarbe auf Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow", etc. "android_silent": 1, // optional. 0 oder 1. Stille Benachrichtigung aktivieren. // Ton und Inhalt ignorieren
// Amazon-bezogene Parameter "adm_root_params": { // optional. Benutzerdefiniertes Schlüssel-Wert-Objekt "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "adm_sound" festgelegten Tons "adm_header": { "en": "Header" }, "adm_content": { "en": "content" }, "adm_icon": "icon.png", "adm_custom_icon": "URL.png", "adm_banner": "URL.png", "adm_ttl": 3600, // optional. Time-to-Live-Parameter — die maximale Lebensdauer der Nachricht // in Sekunden. "adm_priority": -1, // optional. Priorität des Pushes im Amazon-Push-Drawer, // gültige Werte sind -2, -1, 0, 1 und 2.
// Mac OS X-bezogene Parameter "mac_badges": 3, "mac_sound": "sound.caf", "mac_sound_off": true, "mac_root_params": { "content-available": 1 }, "mac_ttl": 3600, // optional. Time-to-Live-Parameter — maximale Lebensdauer der Nachricht in Sekunden. "mac_title": { // optional. Fügt einen Titel für die Push-Benachrichtigung hinzu. "en": "title" }, "mac_subtitle": { // optional. Fügt einen Untertitel für die MacOS-Push-Benachrichtigung hinzu. "en": "subtitle" }, "mac_content": { // optional. Fügt Inhalt für die MacOS-Push-Benachrichtigung hinzu. "en": "content" },
// Windows-bezogene Parameter "wns_content": { // erforderlich. Inhalt (XML oder roh) der Benachrichtigung, kodiert // in MIME's base64 in Form von Objekt ODER Zeichenfolge "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // optional. Wird in der Kachel-Ersetzungsrichtlinie verwendet. // Eine alphanumerische Zeichenfolge von nicht mehr als 16 Zeichen. "wns_cache": 1, // optional. (1|0) Übersetzt in den Wert von X-WNS-Cache-Policy. "wns_ttl": 600, // optional. Ablaufzeit für die Benachrichtigung in Sekunden.
// Safari-bezogene Parameter "safari_title": { // optional. Objekt ODER Zeichenfolge. Titel der Benachrichtigung. "en": "title" }, "safari_content": { // optional. Objekt ODER Zeichenfolge. Inhalt der Benachrichtigung. "en": "content" }, "safari_action": "Click here", // optional. "safari_url_args": [ // erforderlich, aber der Wert kann leer sein "firstArgument", "secondArgument" ], "safari_ttl": 3600, // optional. Time-to-Live-Parameter — die maximale // Lebensdauer einer Nachricht in Sekunden.
// Chrome-bezogene Parameter "chrome_title": { // optional. Sie können die Kopfzeile der Nachricht in diesem Parameter angeben. "en": "title" }, "chrome_content": { // optional. Sie können den Inhalt der Nachricht in diesem Parameter angeben. "en": "content" }, "chrome_icon": "icon_URL", // optional. Vollständiger Pfad-URL zum Symbol oder Dateipfad zu Erweiterungsressourcen "chrome_gcm_ttl": 3600, // optional. Time-to-Live-Parameter – maximale Lebensdauer der Nachricht in Sekunden. "chrome_duration": 20, // optional. Ändert die Anzeigezeit von Chrome-Pushes. Auf 0 setzen, um den Push anzuzeigen, // bis der Benutzer damit interagiert. "chrome_image": "image_URL", // optional. URL zu einem großen Bild "chrome_root_params": { // optional. Setzen Sie spezifische Parameter für Nachrichten, die an Chrome gesendet werden. "key": "value" }, "chrome_button_text1": "text1", // optional. "chrome_button_url1": "button1_URL", // optional. Wird ignoriert, wenn chrome_button_text1 nicht gesetzt ist. "chrome_button_text2": "text2", // optional. "chrome_button_url2": "button2_url", // optional. Wird ignoriert, wenn chrome_button_text2 nicht gesetzt ist.
// Firefox-bezogene Parameter "firefox_title": { // optional. Objekt ODER Zeichenfolge. Sie können hier die Nachrichtenkopfzeile angeben. "en": "title" }, "firefox_content": { // optional. Objekt ODER Zeichenfolge. Sie können hier den Nachrichteninhalt angeben. "en": "content" }, "firefox_icon": "icon_URL", // optional. Vollständiger Pfad-URL zum Symbol oder Pfad // zur Datei in den Erweiterungsressourcen. "firefox_root_params": { // optional. Setzen Sie spezifische Parameter für Nachrichten, die an Firefox gesendet werden. "key": "value" } }}Die Grundlagen sind sehr einfach – alle Filter werden auf den Mengen von Entitäten durchgeführt.
Mengen
Anchor link toMengen sind definiert als:
1. Geräte, die die jeweilige App abonniert haben (A);
2. Geräte, die den angegebenen Tag-Werten (T) oder app-spezifischen Tag-Werten (AT) entsprechen;\
Syntax
Anchor link toVersuchen wir es mit einigen Beispielen gemäß der obigen Liste.
Targeting von App-Abonnenten
Anchor link toDer “A”-Filter definiert eine Menge von Geräten, die eine bestimmte App abonniert haben:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
wobei
- “XXXXX-XXXXX” – Pushwoosh-Anwendungscode
- [“iOS”, “Android”, …] – Array der Zielplattformen. Wenn weggelassen, wird die Nachricht an alle für diese App verfügbaren Plattformen gesendet.
Filtern nach Tag-Werten
Anchor link toDer “T”-Filter definiert eine Menge von Geräten, denen bestimmte Tag-Werte zugewiesen sind.
T(\"Age\", IN, [17,20])
Definiert die Menge der Geräte, bei denen das „Alter“-Tag auf einen der Werte 17, 18, 19, 20 gesetzt ist.
Tag-Typen und Operatoren
Anchor link toEs ist sehr wichtig zu verstehen, dass Tags zwischen den Apps geteilt werden, und dies stellt ein sehr leistungsfähiges Instrument zur Segmentierung und Filterung Ihrer Zielbenutzer dar, ohne sich an eine bestimmte App zu binden.
Das Tag kann einer von drei verschiedenen Typen sein: String, Integer, List. Der Tag-Typ definiert, welche Operatoren Sie für ein bestimmtes Tag verwenden können.
String-Tags
Anchor link toAnwendbare Operatoren:
- EQ – zielt auf Geräte mit einem bestimmten Tag-Wert ab
- IN – zielt auf Geräte mit einem der angegebenen Tag-Werte ab
- NOTIN – zielt auf Geräte ohne angegebene Tag-Werte ab
- NOTEQ – zielt auf Geräte mit einem Tag-Wert ab, der nicht einem bestimmten Wert entspricht
- NOTSET – zielt auf Geräte ohne Wert für ein bestimmtes Tag ab
- ANY – zielt auf Geräte mit einem beliebigen Wert für ein bestimmtes Tag ab
Beispiele:
T (\"Age\", EQ, 30) – filtert Benutzer im Alter von 30 Jahren
T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – filtert Benutzer, die Rot, Grün oder Blau als ihre Lieblingsfarbe gewählt haben.
T (\"Name", NOTSET, \"\") – zielt auf Geräte ohne Wert für das Name-Tag ab.
Sie können numerische Werte mit den String-Tags verwenden, aber solche Werte werden in eine Zeichenfolge konvertiert.
Integer-Tags
Anchor link toAnwendbare Operatoren:
- GTE – größer als oder gleich einem bestimmten Wert
- LTE– kleiner als oder gleich einem bestimmten Wert
- EQ – gleich einem bestimmten Wert
- BETWEEN – zwischen den angegebenen Min- und Max-Werten
- IN – einer der angegebenen Werte
- NOTIN – keine angegebenen Werte einem Gerät zugewiesen
- NOTEQ – Geräte mit einem Tag-Wert, der nicht einem bestimmten Wert entspricht
- NOTSET – Geräte ohne Wert für ein bestimmtes Tag
- ANY – Geräte mit einem beliebigen Wert für ein bestimmtes Tag
Beispiele:
T (\"Level\", EQ, 14) – filtert nur Benutzer auf Level 14.
T (\"Level\", BETWEEN, [1,5) – filtert Benutzer auf den Levels 1, 2, 3, 4 und 5.
T (\"Level", GTE, 29) – zielt auf Benutzer ab, die mindestens Level 29 erreicht haben.
Listen-Tags
Anchor link toAnwendbare Operatoren:
- IN – Geräte mit einem der angegebenen Tag-Werte
Beispiel: T("Category", IN, ["breaking_news","business","politics"])
Datums-Tags
Anchor link toAnwendbare Operatoren:
- GTE – größer als oder gleich einem bestimmten Wert
- LTE– kleiner als oder gleich einem bestimmten Wert
- EQ – gleich einem bestimmten Wert
- BETWEEN – zwischen den angegebenen Min- und Max-Werten
- NOTEQ – Geräte mit einem Tag-Wert, der nicht einem bestimmten Wert entspricht
- NOTSET – Geräte ohne Wert für ein bestimmtes Tag
- ANY – Geräte mit einem beliebigen Wert für ein bestimmtes Tag
Beispiele:
AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])
AT("7777D-322A7","Last Application Open", GTE, "90 days ago")
Operationen
Anchor link to- “+” – verbindet zwei Mengen (entspricht ODER)
- “*” – schneidet zwei Mengen (entspricht UND)
- “\” – subtrahiert eine Menge von einer anderen (entspricht NICHT)
Alle Operationen sind linksassoziativ. ”+” und ”*” haben die gleiche Priorität. "" hat eine höhere Priorität. Sie können Klammern verwenden, um die Prioritäten der Berechnungen zu definieren.
Beachten Sie, dass die “\”-Operation nicht kommutativ ist. A("12345-12345") \ A("67890-67890") ist nicht dasselbe wie A("67890-67890") \ A("12345-12345").
getPushHistory
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
Ruft den Nachrichtenverlauf mit Push-Details ab.
Anfragekörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| limitMessages | integer | Begrenzt die Anzahl der Nachrichten in einer Antwort. Mögliche Werte von 10 bis 1000. |
| source | string | Push-Verlaufsquelle. Kann null sein oder: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”. |
| searchBy | string | Mögliche Werte zur Suche. Kann null sein oder: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”. |
| value | string | Suchwert, der gemäß dem Feld “searchBy” festgelegt wird. |
| lastNotificationID | string | Wird für die Paginierung verwendet. Letzte messageId aus dem vorherigen /getPushHistory-Aufruf. Siehe Details unten. |
{ "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 } }] }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "source": null, // optional. Mögliche Werte sind null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // optional. Mögliche Werte sind "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // optional. Suchwert, der gemäß dem Feld "searchBy" festgelegt wird. "lastNotificationID": 0, // optional. Wird für die Paginierung verwendet. Letzte messageId aus dem // vorherigen /getPushHistory-Aufruf. Siehe Details unten. "limitMessages": 1000 // optional. Möglicher Wert von 10 bis 1000. }}Diese Methode gibt 1000 Nachrichten aus dem Konto zurück, sortiert nach Nachrichten-ID. Um die zweite Seite zu erhalten, geben Sie die letzte Nachrichten-ID der vorherigen Antwort im Parameter lastNotificationId an.
Antwortdatentypen
Anchor link toid -- int | 0code -- stringcreateDate -- 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 -- stringios_title -- string | array ( dict {lang: value} ) | nullios_subtitle -- string | array ( dict {lang: value} ) | nullios_root_params -- dict (JSON) | nullandroid_header -- string | array ( dict {lang: value} ) | nullandroid_root_params -- dict (JSON) | nullconditions -- list (JSON) | nullconditions_operator -- string | nullfilter_code -- string | nullfilter_name -- string | nullfilter_conditions -- string | nullgeozone -- string | nullcampaignId -- string | ""campaignName -- string | ""subscription_segments (obsolete) -- list (JSON) | nulldata -- dict (JSON) | nullopen -- dict [dict [string: int]] | "" Example: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Example: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Example: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Example: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
Löscht eine geplante Nachricht.
Anfragekörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| message* | string | Der Nachrichtencode, der in der /createMessage-Antwort erhalten wurde. |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugangstoken aus dem Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // erforderlich. Der Nachrichtencode, der in der /createMessage-Antwort erhalten wurde }}Statuscodes:
| HTTP-Statuscode | status_code | Beschreibung |
|---|---|---|
| 200 | 200 | Nachricht erfolgreich storniert |
| 200 | 210 | Argumentfehler. Siehe status_message für weitere Informationen. |
| 400 | N/A | Fehlerhafte Anforderungszeichenfolge |
| 500 | 500 | Interner Fehler |