Messages API
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
Erstellt eine neue Push-Benachrichtigung.
Request-Body
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugangstoken aus dem Pushwoosh Control Panel. |
| application* | string | Pushwoosh-Anwendungscode |
| notifications* | array | JSON-Array mit 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 Einschränkungen // bezüglich der 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, um Duplikate // bei Netzwerkproblemen zu verhindern. 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" },
// Frequency-Capping-Parameter. Stellen Sie sicher, dass das globale Frequency Capping im Control Panel konfiguriert ist. "capping_days": 30, // optional. Anzahl der Tage für das Frequency Capping (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 zukünftige Pushes zum Capping gezählt. "capping_avoid": true, // optional. Wenn auf true gesetzt, wird das Capping 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 Parameters "inbox_date" verwendet werden. // Bis zu 30 Tage.
"devices": [ // optional. Geben Sie Tokens oder HWIDs an, um gezielte Push- "hwid_XXXX" // Benachrichtigungen zu senden. Nicht mehr als 1000 Tokens/HWIDs in ], // einem Array. Wenn gesetzt, wird die Nachricht nur an // die Geräte auf der Liste gesendet. Anwendungsgruppen für Geräte- // listen sind nicht erlaubt. iOS-Push-Tokens dürfen nur in Kleinbuchstaben sein. "to": [ // optional. Für E-Mail, SMS und ähnliche Kanäle. Liste der Empfänger "email_1", "email_2" // (z. B. E-Mail-Adressen, Telefonnummern). Max. 1000 Elemente. ], // Für Push verwenden Sie stattdessen "devices". // 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 devices oder to angegeben, // werden letztere ignoriert. Nicht mehr als 1000 Benutzer- // IDs in einem Array. Anwendungsgruppen für Benutzerlisten // sind 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-Benachrichtigungsanforderung
Anchor link toPushwoosh unterstützt Anrufbenachrichtigungen im VoIP-Stil für iOS und Android.
Unten finden Sie Beispiele für API-createMessage-Anforderungen 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 Anklopffunktion 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. Parameter auf Root-Ebene 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 Anklopffunktion 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 zusammengehöriger Benachrichtigungen. // Nachrichten mit derselben Thread-ID werden // auf dem Sperrbildschirm und im Benachrichtigungscenter gruppiert. "ios_critical": true, // optional. Markiert die 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 Zustellzeitpunkt einer Benachrichtigung an. 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-Header. "en": "header" }, "android_content": { // optional. Android-Benachrichtigungsinhalt. "en": "content" }, "android_root_params": { // optional. Benutzerdefiniertes Schlüssel-Wert-Objekt. "key": "value", // Parameter auf Root-Ebene für die Android-Payload-Empfänger. "CancelID": 12345678, // optional. Storniert die Push-Benachrichtigung mit der "voip": true, // erforderlicher VoIP-Parameter. Parameter ist erforderlich, um VoIP-Push-Benachrichtigungen zu senden. "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-Zwangsvibration für hochpriore 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 zusammengehöriger 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-Zwangsvibration für hochpriore 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" // Parameter auf Root-Ebene 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 Benachrichtigungs- // zustellung im Energiesparmodus "huawei_android_group_id": "group_id" // optional. Kennung zum Gruppieren zusammengehöriger 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 den Header "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 den 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 des Chrome-Push. // 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 Parameter, die für an Chrome gesendete Nachrichten spezifisch sind. "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 den Nachrichten-Header 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 Parameter, die für an Firefox gesendete Nachrichten spezifisch sind. "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 den Nachrichten-Header 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 Pushs in der Amazon-Push-Schublade, // 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 eines Objekts ODER einer Zeichenfolge "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // optional. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // optional. Wird in der Tile-Ersetzungsrichtlinie verwendet. // Eine alphanumerische Zeichenfolge von nicht mehr als 16 Zeichen. "wns_cache": 1, // optional. (1|0) Übersetzt in den Wert 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-Messaging-Verfolgung
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-Messaging-Verfolgung. Wenn Sie diese Option EINschalten, können Sie dieses Limit für 1 Stunde überschreiben und solche Pushes im Nachrichtenverlauf speichern. Die API-Messaging-Verfolgung schaltet sich nach 1 Stunde automatisch AUS.
Die API-Messaging-Verfolgung kann auf der Seite Nachrichtenverlauf aktiviert werden, indem Sie oben rechts auf API-Messaging-Verfolgung 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
#Verwendungif [ ! -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: Nachrichtentext %%
%% Authentifizierung & 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-Ausführlichkeitsoptionen false, 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 zur JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Methode post, %%Anfrage {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP-Optionen [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Optionen []), io:format("And received ~p", [Response]).class PushNotification
#- PushWoosh API-Dokumentation https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Zwei Methoden hier: # - PushNotification.new.notify_all(message) Benachrichtigt alle mit der gleichen Option # - PushNotification.new.notify_devices(notification_options = {}) Benachrichtigt bestimmte Geräte mit benutzerdefinierten Optionen
include HTTParty #Stellen Sie sicher, dass das HTTParty-Gem in Ihrer Gemfile deklariert ist https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Ändern Sie Ihre Einstellungen @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("Dies ist eine Testbenachrichtigung an alle Geräte") 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 = {}) #- Standardoptionen, kommentieren Sie :data oder :devices bei Bedarf aus default_notification_options = { # JJJJ-MM-TT HH:mm ODER 'now' :send_date => "now", # Objekt( sprache1: 'inhalt1', sprache2: 'inhalt2' ) ODER Zeichenfolge :content => { :fr => "Test", :en => "Test" }, # JSON-Zeichenfolge oder JSON-Objekt "custom": "json data" #:data => { # :custom_data => value #}, # lassen Sie dieses Feld weg (Push-Benachrichtigung wird an alle Geräte für die Anwendung zugestellt), oder geben Sie die Liste der Geräte-IDs an #:devices => {} }
#- Zusammenführen mit spezifischen Optionen final_notification_options = default_notification_options.merge(notification_options)
#- Konstruieren des endgültigen Aufrufs options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Ausführen des POST-API-Aufrufs mit HTTPARTY - :body => options.to_json ermöglicht es uns, das json als Objekt anstelle einer Zeichenfolge zu senden response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Verwendet JSON-Klassen von 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: # Für Python 3.0 und neuer from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Fallback auf 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.
Request-Body
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// siehe https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// erstellt eine Anforderungsinstanz$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// ruft den '/deleteMessage' Web Service auf$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.
Request-Body
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.
Request-Body
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. Details finden Sie im Anforderungsbeispiel. |
| transactionId | string | Eindeutiger Nachrichtenidentifikator, um das Duplizieren von Nachrichten bei Netzwerkproblemen zu verhindern. 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, um das Duplizieren von Nachrichten // bei Netzwerkproblemen zu verhindern. 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 Einschränkungen // bezüglich der 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 Pushs. "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. Parameter auf Root-Ebene 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" // Parameter auf Root-Ebene 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 Pushs. "android_sound_off": true, // optional. Aktivieren/Deaktivieren des durch das Feld "android_sound" festgelegten Tons "android_header": { // optional. Objekt ODER Zeichenfolge. Android-Benachrichtigungs-Header. "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. integer. 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-Zwangsvibration für hochpriore 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 Unterbrechungs- // stufe 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 Pushs in der Amazon-Push-Schublade, // 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 eines Objekts ODER einer Zeichenfolge "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // optional. Wird in der Tile-Ersetzungsrichtlinie verwendet. // Eine alphanumerische Zeichenfolge von nicht mehr als 16 Zeichen. "wns_cache": 1, // optional. (1|0) Übersetzt in den Wert 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 den Header 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 den Erweiterungsressourcen "chrome_gcm_ttl": 3600, // optional. Time-to-Live-Parameter – maximale Lebensdauer der Nachricht in Sekunden. "chrome_duration": 20, // optional. Ändert die Anzeigezeit des Chrome-Push. 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 Parameter, die für an Chrome gesendete Nachrichten spezifisch sind. "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 den Nachrichten-Header 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 Parameter, die für an Firefox gesendete Nachrichten spezifisch sind. "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.
Abonnenten von Apps ansprechen
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 Tag „age“ 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 es 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 dem angegebenen 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 oder gleich einem angegebenen Wert
- LTE– kleiner oder gleich einem angegebenen Wert
- EQ – gleich einem angegebenen Wert
- BETWEEN – zwischen den min- und max-angegebenen Werten
- IN – einer der angegebenen Werte
- NOTIN – keine angegebenen Werte einem Gerät zugewiesen
- NOTEQ – Geräte mit einem Tag-Wert, der nicht dem angegebenen 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 oder gleich einem angegebenen Wert
- LTE– kleiner oder gleich einem angegebenen Wert
- EQ – gleich einem angegebenen Wert
- BETWEEN – zwischen den min- und max-angegebenen Werten
- NOTEQ – Geräte mit einem Tag-Wert, der nicht dem angegebenen 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.
Request-Body
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 oder sein: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”. |
| searchBy | string | Mögliche Werte zur Suche. Kann null oder sein: “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]] | "" Beispiel: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Beispiel: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Beispiel: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Beispiel: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
Löscht eine geplante Nachricht.
Request-Body
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 |