Messages API
createMessage Veraltet
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
Erstellt eine neue Push-Benachrichtigung.
Anforderungskörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugriffstoken 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-Zugriffstoken aus dem Pushwoosh Control Panel. "notifications": [{ "send_date": "now", // optional. YYYY-MM-DD 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 im Payload übergeben (in JSON-Zeichenfolge konvertiert). }, "transactionId": "unique UUID", // optional. Eindeutiger Nachrichtenidentifikator, um Duplizierung // im Falle von 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 für weitere Informationen "template_bindings": { // optional. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // optional. Platzhalter für dynamische Inhalte anstelle von Geräte-Tags. "firstname": "John", "lastname": "Doe" }, "message_type": "marketing", // optional. "marketing" oder "transactional". // Wenn weggelassen, erhalten Benutzer mit PW_ControlGroup: true die Nachricht nicht.
// Frequenzbegrenzungsparameter. Stellen Sie sicher, dass die globale Frequenzbegrenzung im Control Panel konfiguriert ist. // Die Frequenzbegrenzung gilt nicht für transaktionale Nachrichten. // In allen anderen Fällen, einschließlich weggelassenem "message_type", gilt die Frequenzbegrenzung. "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 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 in der Liste gesendet. Anwendungsgruppe für Geräte- // liste ist nicht erlaubt. iOS-Push-Tokens können 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, // wird letzteres ignoriert. Nicht mehr als 1000 Benutzer- // IDs in einem Array. Anwendungsgruppe für 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-Benachrichtigungsanforderung
Anchor link toPushwoosh unterstützt Anrufbenachrichtigungen im VoIP-Stil 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-Zugriffstoken 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 Anrufhaltefunktion unterstützt wird. "supportsDTMF": false, // optional. Steuert die Unterstützung von Dual-Tone Multi-Frequency-Signalen. "callId": "42", // optional. Der eindeutige Bezeichner 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-Zugriffstoken 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 Bezeichner 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-Zugriffstoken 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" eingestellten 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 Anrufhaltefunktion 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. Bezeichner zum Gruppieren verwandter 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_collapse_id": "promo", // optional. APNs-Collapse-Identifier. Benachrichtigungen mit demselben // apns_collapse_id ersetzen sich gegenseitig auf dem Gerät. "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-Zugriffstoken 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 (holen Sie die ID aus der Nachrichten-Historie) "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" eingestellten 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 sie 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. Bezeichner zum Gruppieren verwandter Benachrichtigungen. Nachrichten mit // derselben Thread-ID werden im // Benachrichtigungscenter gruppiert. "android_collapse_key": "promo" // optional. FCM-Collapse-Key. Benachrichtigungen mit demselben // Collapse-Key ersetzen sich gegenseitig, während das Gerät offline ist. }] }}Huawei-Parameter
{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugriffstoken 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 sie 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" eingestellten 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. Bezeichner zum Gruppieren verwandter Benachrichtigungen }] }}Safari-Parameter
Anchor link to{ "request": { "application": "12345-67891", // erforderlich. Pushwoosh-Anwendungscode "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugriffstoken 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-Zugriffstoken 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 der 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 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-Zugriffstoken aus dem Pushwoosh Control Panel "notifications": [{ "firefox_title": { // optional. Objekt ODER Zeichenfolge. Hier können Sie den Nachrichten-Header angeben. "en": "title" }, "firefox_content": { // optional. Objekt ODER Zeichenfolge. Hier können Sie 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-Zugriffstoken aus dem Pushwoosh Control Panel "notifications": [{ "adm_header": { // optional. Objekt ODER Zeichenfolge. Hier können Sie den Nachrichten-Header angeben. "en": "header" }, "adm_content": { // optional. Objekt ODER Zeichenfolge. Hier können Sie 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" eingestellten 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-Zugriffstoken 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" eingestellten 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-Zugriffstoken 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 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-Tracing
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 Ihrer Nachrichten-Historie angezeigt.
Um Push-Berichte während der Testphase zu sehen, verwenden Sie das API-Messaging-Tracing. Wenn Sie diese Option EINschalten, können Sie dieses Limit für 1 Stunde überschreiben und solche Pushes in der Nachrichten-Historie speichern. Das API-Messaging-Tracing schaltet sich nach 1 Stunde automatisch AUS.
Das API-Messaging-Tracing kann auf der Seite Nachrichten-Historie durch Klicken auf API-Messaging-Tracing starten in der oberen rechten Ecke aktiviert werden.
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.
Anforderungskörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugriffstoken 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-Zugriffstoken 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.
Anforderungskörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugriffstoken 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-Zugriffstoken aus dem Pushwoosh Control Panel "message": "xxxx-xxxxxxx-xxxxxx" // erforderlich. Nachrichtencode oder Nachrichten-ID }}createTargetedMessage Veraltet
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
Erstellt eine neue gezielte Push-Benachrichtigung.
Anforderungskörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| devices_filter* | string | Siehe Anmerkung unten. |
| send_date* | string | YYYY-MM-DD 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 die Duplizierung von Nachrichten im Falle von 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 im 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-Zugriffstoken aus dem Pushwoosh Control Panel "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // erforderlich. Syntax unten erklärt "send_date": "now", // optional. YYYY-MM-DD 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 die Duplizierung von Nachrichten // im Falle von 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 im 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-Zugriffstoken aus dem Pushwoosh Control Panel "devices_filter": "FILTER CONDITION", "send_date": "now", // optional. YYYY-MM-DD 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" eingestellten 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" eingestellten 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-Vibrationserzwingung für hochpriorisierte Pushes. "android_led": "#rrggbb", // optional. LED-Hex-Farbe, das Gerät wird sein Bestes tun, um sie 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" eingestellten 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 von Objekt ODER 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 der 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 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. Hier können Sie den Nachrichten-Header angeben. "en": "title" }, "firefox_content": { // optional. Objekt ODER Zeichenfolge. Hier können Sie 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 ausgefü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.
Ansprechen 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 die angegebenen 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, was ein sehr mächtiges Instrument zur Segmentierung und Filterung Ihrer Zielbenutzer darstellt, ohne sich an eine bestimmte App zu binden.
Ein 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 minimalen und maximalen 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 minimalen und maximalen 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 Veraltet
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
Ruft die Nachrichten-Historie mit Push-Details ab.
Anforderungskörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugriffstoken aus dem Pushwoosh Control Panel. |
| limitMessages | integer | Begrenzt die Anzahl der Nachrichten in einer Antwort. Mögliche Werte von 10 bis 1000. |
| source | string | Quelle der Push-Historie. Kann null oder sein: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”. |
| searchBy | string | Mögliche Werte, nach denen gesucht werden kann. 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-Zugriffstoken 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.
Anforderungskörper
Anchor link to| Name | Typ | Beschreibung |
|---|---|---|
| auth* | string | API-Zugriffstoken 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-Zugriffstoken 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 |