Messages API
createMessage Устарело
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
Создает новое push-уведомление.
Тело запроса
Anchor link to| Имя | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| application* | string | Код приложения Pushwoosh |
| notifications* | array | Массив JSON с параметрами сообщения. Подробности см. в примере запроса ниже. |
{ "status_code": 200, "status_message": "OK", "response": { "Messages": [ "C3F8-C3863ED4-334AD4F1" ] }}Пример запроса
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // обязательно. Код приложения Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh. "notifications": [{ "send_date": "now", // опционально. YYYY-MM-DD HH:mm ИЛИ 'now' "content": { // опционально. объект ИЛИ строка. "en": "English", // Используйте "wns_content" для Windows. "fr": "French" }, "title": { // опционально. объект ИЛИ строка. "en": "Title", // Игнорируется, если указаны заголовки для конкретных платформ "fr": "Titre" // 'ios_title', 'android_header' и т.д. }, // см. примеры параметров для конкретных платформ ниже. "subtitle":{ // опционально. объект ИЛИ строка. "en": "Subtitle", // Игнорируется, если указаны заголовки для конкретных платформ "fr": "Sous-titre" // 'ios_subtitle' и т.д. }, // см. примеры параметров для конкретных платформ ниже. "ignore_user_timezone": true, // опционально. "timezone": "America/New_York", // опционально. Если не указано, для "send_date" по умолчанию используется UTC-0. // См. https://php.net/manual/timezones.php для // поддерживаемых часовых поясов. "campaign": "CAMPAIGN_CODE", // опционально. Код кампании, к которой вы хотите // присвоить это push-сообщение. "geozone": { // опционально. Отправить в геозону "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // опционально. Скопируйте код Rich Media из URL-адреса // страницы редактора Rich Media в Панели управления Pushwoosh. "link": "https://google.com", // опционально. Для диплинков добавьте "minimize_link": 0 "minimize_link": 0, // опционально. 0 — не сокращать, 2 — bitly. По умолчанию = 2. // Обратите внимание, что у сервисов сокращения ссылок есть ограничения // на количество вызовов. "data": { // опционально. Строка JSON или объект JSON, будет передан как "key": "value" // параметр "u" в полезной нагрузке (преобразован в строку JSON). }, "transactionId": "unique UUID", // опционально. Уникальный идентификатор сообщения для предотвращения дублирования // в случае проблем с сетью. Хранится на стороне // Pushwoosh в течение 5 минут. "platforms": [ // опционально. 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", // опционально. Код пресета пуша из вашей Панели управления. // Если в запросе передаются конкретные параметры, // они переопределяют параметры пресета. "send_rate": 100, // опционально. Регулирование скорости. Допустимые значения от 100 до 1000 пушей/секунду. "send_rate_avoid": true, // опционально. Если установлено в true, ограничение скорости не будет применяться к // этому конкретному push-уведомлению. // Связано с шаблонами, пожалуйста, обратитесь к руководству по движку шаблонов, чтобы узнать больше "template_bindings": { // опционально. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // опционально. Плейсхолдеры для динамического контента вместо тегов устройства. "firstname": "John", "lastname": "Doe" }, "message_type": "marketing", // опционально. "marketing" или "transactional". // Если не указано, пользователи с PW_ControlGroup: true не получат сообщение.
// Параметры ограничения частоты. Убедитесь, что в Панели управления настроено глобальное ограничение частоты. // Ограничение частоты не применяется к транзакционным сообщениям. // Во всех остальных случаях, включая пропущенный "message_type", ограничение частоты применяется. "capping_days": 30, // опционально. Количество дней для ограничения частоты (макс. 30 дней) "capping_count": 10, // опционально. Максимальное количество пушей, которое может быть отправлено из // конкретного приложения на конкретное устройство в течение 'capping_days' // периода. В случае, если созданное сообщение превышает // лимит 'capping_count' для устройства, оно не будет // отправлено на это устройство. "capping_exclude": true, // опционально. Если установлено в true, это push-уведомление не будет // учитываться при ограничении для будущих пушей. "capping_avoid": true, // опционально. Если установлено в true, ограничение не будет применяться к // этому конкретному push-уведомлению.
// Чтобы сохранить сообщение в Inbox через API, используйте "inbox_date" или "inbox_image". // Сообщение сохраняется, когда используется хотя бы один из этих параметров. "inbox_date": "2017-02-02", // опционально. Укажите, когда удалить сообщение из Inbox. // Сообщение будет удалено из Inbox в 00:00:01 UTC // указанной даты, поэтому предыдущая дата является // последним днем, когда пользователь может видеть сообщение в своем Inbox. // Если не указано, дата удаления по умолчанию - // следующий день после даты отправки. "inbox_image": "Inbox image URL", // опционально. Изображение, которое будет показано рядом с сообщением. "inbox_days": 5, // опционально. Укажите, когда удалить сообщение из // Inbox (срок жизни сообщения в Inbox в днях). // Может использоваться вместо параметра "inbox_date". // До 30 дней.
"devices": [ // опционально. Укажите токены или hwid для отправки целевых пушей. "hwid_XXXX" // Не более 1000 токенов/hwid в ], // массиве. Если установлено, сообщение будет отправлено только // устройствам из списка. Группа приложений для списка // устройств не допускается. Push-токены iOS могут быть только в нижнем регистре. "to": [ // опционально. Для email, SMS и подобных каналов. Список получателей "email_1", "email_2" // (например, адреса электронной почты, номера телефонов). Макс. 1000 элементов. ], // Для пушей используйте "devices". // Push-уведомления, ориентированные на пользователя "users": [ // опционально. Если установлено, сообщение будет доставлено только "user_XXXX" // указанным User ID (устанавливается через вызов /registerUser). ], // Если указано вместе с devices или to, // последние будут проигнорированы. Не более 1000 User ID // в массиве. Группа приложений для списка пользователей // не допускается.
// Фильтры и условия "filter": "FILTER_NAME", // опционально. "conditions": [ // опционально. См. примечание ниже. ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // опционально. Логический оператор для массивов условий. // Возможные значения: AND | OR. AND по умолчанию. }] }}Пример запроса для VoIP-уведомления
Anchor link toPushwoosh поддерживает уведомления о звонках в стиле VoIP для iOS и Android.
Ниже вы найдете примеры API-запросов createMessage для каждой платформы.
{ "request": { "application": "XXXXX-XXXXX", // обязательно. Код приложения Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh. "notifications": [ { "voip_push": true, // обязательно. Параметр необходим для отправки VoIP push-уведомления. "ios_root_params": { "aps": { "mutable-content": 1 // обязательно для медиа-вложений в iOS10+. }, "callerName": "CallerName", // опционально. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // опционально. Указывает, поддерживаются ли видеозвонки. "supportsHolding": true, // опционально. Указывает, поддерживается ли функция удержания вызова. "supportsDTMF": false, // опционально. Управляет поддержкой двухтонального многочастотного сигнала. "callId": "42", // опционально. Уникальный идентификатор вызова для отмены. "cancelCall": true // опционально. Установите "true", чтобы отменить вызов с указанным "callId". } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // обязательно. Код приложения Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh. "notifications": [ { "voip_push": true, // обязательно. Параметр необходим для отправки VoIP push-уведомления. "android_root_params": { "callerName": "callerName", // опционально. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // опционально. Указывает, поддерживаются ли видеозвонки. "callId": 42, // опционально. Уникальный идентификатор вызова для отмены. "cancelCall": true // опционально. Установите "true", чтобы отменить вызов с указанным "callId". } } ] }}Параметры для конкретных платформ
Anchor link toПараметры iOS
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "ios_title": { // опционально. Объект ИЛИ строка. Добавляет заголовок для push-уведомления iOS. "en": "title" }, "ios_subtitle": { // опционально. Объект ИЛИ строка. Добавляет подзаголовок для push-уведомления iOS. "en": "subtitle" }, "ios_content": { // опционально. Объект ИЛИ строка. Добавляет контент для push-уведомления iOS. "en": "content" }, "ios_badges": 5, // опционально. Число на значке приложения iOS. // Используйте "+n" или "-n" для увеличения/уменьшения значения значка на n. "ios_sound": "sound file.wav", // опционально. Имя звукового файла в основном бандле приложения. // Если оставить пустым, устройство воспроизведет системный звук по умолчанию. "ios_sound_off": true, // опционально. Включить/выключить звук, установленный полем "ios_sound". "ios_ttl": 3600, // опционально. Параметр времени жизни - максимальный срок жизни сообщения в секундах. "ios_silent": 1, // опционально. Включает тихие уведомления (игнорирует "sound" и "content"). "ios_category_id": "1", // опционально. ID категории iOS8 из Pushwoosh. "ios_root_params": { // опционально. Параметры корневого уровня для словаря aps. "aps": { "content-available": "0", // опционально. Установите "1" для отправки тихого пуша и "0" для обычного. "mutable-content": 1 // обязательно для медиа-вложений в iOS10+. }, "callerName": "CallerName", // опциональный параметр VoIP. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // опциональный параметр VoIP. Указывает, поддерживаются ли видеозвонки. "supportsHolding": true, // опциональный параметр VoIP. Указывает, поддерживается ли функция удержания вызова. "supportsDTMF": false, // опциональный параметр VoIP. Управляет поддержкой двухтонального многочастотного сигнала. "data": {} // опционально. Пользовательские данные, макс. 4 КБ }, "ios_attachment": "URL", // опционально. Вставить медиа-контент в уведомление. "ios_thread_id": "some thread id", // опционально. Идентификатор для группировки связанных уведомлений. // Сообщения с одинаковым thread ID будут сгруппированы // на экране блокировки и в Центре уведомлений. "ios_critical": true, // опционально. Помечает уведомление iOS как критическое оповещение, // воспроизводящее звук, даже если устройство в беззвучном режиме или // включен режим "Не беспокоить". "ios_category_custom": "category", // опционально. Пользовательская категория APNS. "ios_interruption_level": "active", // опционально. Одно из "passive", "active", "time-sensitive", // "critical". Указывает на важность и // время доставки уведомления. Подробности см. в // руководстве по одноразовым пушам. "apns_collapse_id": "promo", // опционально. Идентификатор сворачивания APNs. Уведомления с одинаковым // apns_collapse_id заменяют друг друга на устройстве. "apns_trim_content": 1 // опционально. (0|1) Обрезает слишком длинные строки контента многоточием. }] }}Параметры Android
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "android_header": { // опционально. Заголовок уведомления Android. "en": "header" }, "android_content": { // опционально. Контент уведомления Android. "en": "content" }, "android_root_params": { // опционально. Пользовательский объект ключ-значение. "key": "value", // Параметры корневого уровня для получателей полезной нагрузки android. "CancelID": 12345678, // опционально. Отменяет push-уведомление с "voip": true, // обязательный параметр VoIP. Параметр необходим для отправки VoIP push-уведомлений. "callerName": "callerName", // опциональный параметр VoIP. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // опциональный параметр VoIP. Указывает, поддерживаются ли видеозвонки. }, // указанным ID сообщения (получите ID из Истории сообщений) "android_sound": "soundfile", // опционально. Без расширения файла. Если оставить пустым, // устройство воспроизведет системный звук по умолчанию. "android_sound_off": true, // опционально. Включить/выключить звук, установленный полем "android_sound" "android_icon": "icon.png", // опционально. "android_custom_icon": "URL.png", // опционально. Полный URL к файлу изображения. "android_banner": "URL.png", // опционально. Полный URL к файлу изображения. "android_badges": 5, // опционально. Число на значке иконки приложения Android. // Используйте "+n" или "-n" для увеличения/уменьшения значения значка на n. "android_gcm_ttl": 3600, // опционально. Параметр времени жизни — максимальный срок жизни сообщения в секундах. "android_vibration": 0, // опционально. Принудительная вибрация Android для высокоприоритетных пушей. "android_led": "#rrggbb", // опционально. HEX-цвет светодиода, устройство сделает все возможное для аппроксимации. "android_priority": -1, // опционально. Устанавливает параметр "importance" для устройств с // Android 8.0 и выше, а также параметр "priority" // для устройств с Android 7.1 и ниже. Устанавливает // уровень прерывания канала уведомлений или конкретного // уведомления. Допустимые значения: -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // опционально. "normal" или "high". // Включает доставку уведомления, когда // устройство находится в режиме энергосбережения. "android_ibc": "#RRGGBB", // опционально. цвет фона иконки на Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" и т.д. "android_silent": 1, // опционально. 0 или 1. Включить тихое уведомление. // Игнорировать звук и контент "android_group_id": "123", // опционально. Идентификатор для группировки связанных уведомлений. Сообщения с // одинаковым ID потока будут сгруппированы в // Центре уведомлений. "android_collapse_key": "promo" // опционально. Ключ сворачивания FCM. Уведомления с одинаковым // ключом сворачивания заменяют друг друга, пока устройство находится в оффлайне. }] }}Параметры Huawei
{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "huawei_android_header": { // опционально. Объект ИЛИ строка. Заголовок уведомления "en": "header" }, "huawei_android_content": { // опционально. Объект ИЛИ строка. Контент уведомления "en": "content" }, "huawei_android_badges": true, // опционально. "huawei_android_silent": 0, // опционально. 0 или 1. Включить тихое уведомление. // Игнорировать звук и контент "huawei_android_icon": "URL.png", // опционально. "huawei_android_led": "#FF0011", // опционально. HEX-цвет светодиода, устройство сделает все возможное для аппроксимации "huawei_android_vibration": 1, // опционально. Принудительная вибрация Huawei для высокоприоритетных пушей "huawei_android_sound": "sound.wav", // опционально. Если оставить пустым, устройство воспроизведет // системный звук по умолчанию "huawei_android_sound_off": true, // опционально. Включить/выключить звук, установленный // полем "huawei_android_sound" "huawei_android_custom_icon": "URL.png", // опционально "huawei_android_gcm_ttl": 2400, // опционально. Параметр времени жизни - максимальный // срок жизни сообщения в секундах "huawei_android_banner": "URL.png", // опционально. Полный URL к файлу изображения "huawei_android_root_params": { // опционально. Пользовательский объект ключ-значение. "key": "value" // Параметры корневого уровня для получателей полезной нагрузки Huawei. }, "huawei_android_priority": 0, // опционально. Допустимые значения: -2, -1, 0, 1, 2 "huawei_android_ibc": "#0011AA", // опционально. Цвет фона иконки на Lollipop "huawei_android_lockscreen": 1, // опционально "huawei_android_delivery_priority": "normal", // опционально. "normal" или "high". Включает доставку // уведомлений в режиме энергосбережения "huawei_android_group_id": "group_id" // опционально. Идентификатор для группировки связанных уведомлений }] }}Параметры Safari
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "safari_url_args": [ // обязательно, но значение может быть пустым "firstArgument", "secondArgument" ], "safari_title": { // опционально. Объект ИЛИ строка. Заголовок уведомления. "en": "content" }, "safari_content": { // опционально. Объект ИЛИ строка. Контент уведомления. "en": "content" }, "safari_action": "Click here", // опционально. "safari_ttl": 3600 // опционально. Параметр времени жизни — максимальный // срок жизни сообщения в секундах. }] }}Параметры Chrome
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "chrome_title": { // опционально. Объект ИЛИ строка. Вы можете указать заголовок "en": "title" // сообщения в этом параметре. }, "chrome_content": { // опционально. Объект ИЛИ строка. Вы можете указать контент "en": "content" // сообщения в этом параметре. }, "chrome_icon": "URL.png", // опционально. Полный URL к иконке или путь к файлу в ресурсах расширения "chrome_gcm_ttl": 3600, // опционально. Параметр времени жизни – максимальный срок жизни сообщения в секундах. "chrome_duration": 20, // опционально. макс. 50 секунд. Изменяет время отображения пуша в Chrome. // Установите 0, чтобы пуш отображался до тех пор, пока пользователь не взаимодействует с ним. "chrome_image": "image_URL", // опционально. URL к большому изображению. "chrome_root_params": { // опционально. Установить параметры, специфичные для сообщений, отправляемых в Chrome. "key": "value" }, "chrome_button_text1": "text1", // опционально "chrome_button_url1": "button1_URL", // опционально. Игнорируется, если chrome_button_text1 не установлен. "chrome_button_text2": "text2", // опционально "chrome_button_url2": "button2_url" // опционально. Игнорируется, если chrome_button_text2 не установлен. }] }}Параметры Firefox
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "firefox_title": { // опционально. Объект ИЛИ строка. Здесь можно указать заголовок сообщения. "en": "title" }, "firefox_content": { // опционально. Объект ИЛИ строка. Здесь можно указать контент сообщения. "en": "content" }, "firefox_icon": "URL.png", // опционально. Полный URL к иконке или путь к // файлу в ресурсах расширения. "firefox_root_params": { // опционально. Установить параметры, специфичные для сообщений, отправляемых в Firefox. "key": "value" } }] }}Параметры Amazon
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "adm_header": { // опционально. Объект ИЛИ строка. Здесь можно указать заголовок сообщения. "en": "header" }, "adm_content": { // опционально. Объект ИЛИ строка. Здесь можно указать контент сообщения. "en": "content" }, "adm_root_params": { // опционально. Пользовательский объект ключ-значение "key": "value" }, "adm_sound": "push.mp3", // опционально. "adm_sound_off": true, // опционально. Включить/выключить звук, установленный полем "adm_sound" "adm_icon": "icon.png", // опционально. Полный URL к иконке. "adm_custom_icon": "URL.png", // опционально. "adm_banner": "URL.png", // опционально. "adm_ttl": 3600, // опционально. Параметр времени жизни — максимальный срок жизни // сообщения в секундах. "adm_priority": -1 // опционально. Приоритет пуша в панели пушей Amazon, // допустимые значения: -2, -1, 0, 1 и 2. }] }}Параметры Mac OS X
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "mac_title": { // опционально. Объект ИЛИ строка. Добавляет заголовок для push-уведомления. "en": "title" }, "mac_subtitle": { // опционально. Добавляет подзаголовок для push-уведомления. "en": "subtitle" }, "mac_content": { // опционально. Добавляет контент для push-уведомления. "en": "content" }, "mac_badges": 3, // опционально. "mac_sound": "sound.caf", // опционально. "mac_sound_off": true, // опционально. Включить/выключить звук, установленный полем "mac_sound" "mac_root_params": { // опционально. "content-available": 1 }, "mac_ttl": 3600 // опционально. Параметр времени жизни — максимальный срок жизни сообщения в секундах. }] }}Параметры Windows
Anchor link to{ "request": { "application": "12345-67891", // обязательно. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "wns_content": { // обязательно. Контент (XML или raw) уведомления, закодированный в base64 MIME // в виде объекта ИЛИ строки "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // опционально. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // опционально. Используется в политике замены плиток. // Буквенно-цифровая строка не более 16 символов. "wns_cache": 1, // опционально. (1|0) Преобразуется в значение X-WNS-Cache-Policy. "wns_ttl": 600 // опционально. Время истечения срока действия уведомления в секундах. }] }}Ответ:
| Код состояния HTTP | status_code | Описание |
|---|---|---|
| 200 | 200 | Сообщение успешно создано |
| 200 | 210 | Ошибка аргумента. См. status_message для получения дополнительной информации |
| 400 | N/A | Неверно сформированная строка запроса |
| 500 | 500 | Внутренняя ошибка |
Трассировка сообщений API
Anchor link toВ целях балансировки нагрузки мы не храним сообщения, отправленные через API с параметром “devices”, который содержит менее 10 устройств в массиве. Из-за этого такие сообщения не будут отображаться в вашей Истории сообщений.
Чтобы видеть отчеты по пушам на этапе тестирования, используйте трассировку сообщений API. Включение этой опции ON позволяет вам преодолеть это ограничение на 1 час и сохранить такие пуши в Истории сообщений. Трассировка сообщений API автоматически отключается через 1 час.
Трассировку сообщений API можно активировать на странице Истории сообщений, нажав Начать трассировку сообщений API в правом верхнем углу.
Условия по тегам
Anchor link toКаждое условие по тегу представляет собой массив вида [tagName, operator, operand], где
- tagName: имя тега
- operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
- operand: строка | целое число | массив | дата
Описание операторов
Anchor link to- EQ: значение тега равно операнду;
- IN: значение тега пересекается с операндом (операнд всегда должен быть массивом);
- NOTEQ: значение тега не равно операнду;
- NOTIN: значение тега не пересекается с операндом (операнд всегда должен быть массивом);
- GTE: значение тега больше или равно операнду;
- LTE: значение тега меньше или равно операнду;
- BETWEEN: значение тега больше или равно минимальному значению операнда, но меньше или равно максимальному значению операнда (операнд всегда должен быть массивом);
- NOTSET: тег не установлен. Операнд не учитывается;
- ANY: тег имеет любое значение. Операнд не учитывается.
Строковые теги
Anchor link toДопустимые операторы: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
Допустимые операнды:
- EQ, NOTEQ: операнд должен быть строкой;
- IN, NOTIN: операнд должен быть массивом строк, например
["value 1", "value 2", "value N"]; - NOTSET: тег не установлен. Операнд не учитывается;
- ANY: тег имеет любое значение. Операнд не учитывается.
Целочисленные теги
Anchor link toДопустимые операторы: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Допустимые операнды:
- EQ, NOTEQ, GTE, LTE: операнд должен быть целым числом;
- IN, NOTIN: операнд должен быть массивом целых чисел, например
[value 1, value 2, value N]; - BETWEEN: операнд должен быть массивом целых чисел, например
[min_value, max_value]; - NOTSET: тег не установлен. Операнд не учитывается;
- ANY: тег имеет любое значение. Операнд не учитывается.
Теги даты
Anchor link toДопустимые операторы: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Допустимые операнды:
"YYYY-MM-DD 00:00"(строка)- unix timestamp
1234567890(целое число) "N days ago"(строка) для операторов EQ, BETWEEN, GTE, LTE
Логические теги
Anchor link toДопустимые операторы: EQ, NOTSET, ANY
Допустимые операнды: 0, 1, true, false
Теги-списки
Anchor link toДопустимые операторы: IN, NOTIN, NOTSET, ANY
Допустимые операнды: операнд должен быть массивом строк, например ["value 1", "value 2", "value N"].
Сниппеты для /createMessage
Anchor link toПримеры запросов /createMessage:
#!/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
Удаляет запланированное сообщение.
Тело запроса
Anchor link to| Имя | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| message* | string | Код сообщения, полученный в запросе /createMessage. |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // обязательно. Код сообщения, полученный в /createMessage }}Коды состояния:
| Код состояния HTTP | status_code | Описание |
|---|---|---|
| 200 | 200 | Сообщение успешно удалено |
| 200 | 210 | Ошибка аргумента. См. status_message для получения дополнительной информации |
| 400 | N/A | Неверно сформированная строка запроса |
| 500 | 500 | Внутренняя ошибка |
<?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
Получает детали сообщения.
Тело запроса
Anchor link to| Имя | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| message* | string | Код сообщения или 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", // обязательно. Токен доступа API из Панели управления Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // обязательно. код сообщения или ID сообщения }}createTargetedMessage Устарело
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
Создает новое целевое push-уведомление.
Тело запроса
Anchor link to| Имя | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| devices_filter* | string | См. примечание ниже. |
| send_date* | string | YYYY-MM-DD HH:mm или ‘now’. |
| ignore_user_timezone | boolean | Если не указано, для “send_date” по умолчанию используется UTC-0. |
| timezone | string | Если не указано, для “send_date” по умолчанию используется UTC-0. |
| campaign | string | Код кампании, к которой вы хотите присвоить это push-сообщение. |
| content* | string | Контент уведомления. Подробности см. в примере запроса. |
| transactionId | string | Уникальный идентификатор сообщения для предотвращения дублирования сообщений в случае проблем с сетью. Хранится на стороне Pushwoosh в течение 5 минут. |
| link | string | Ссылка, которая будет открыта после того, как пользователь откроет push-сообщение. |
| minimize_link | integer | 0 - не сокращать, 2 - bit.ly. По умолчанию = 2. |
| data | object | Строка JSON или объект JSON. Будет передан как параметр “u” в полезной нагрузке (преобразован в строку JSON). |
| preset | string | Код пресета. |
| send_rate | integer | Регулирование скорости. Допустимые значения от 100 до 1000 пушей в секунду. |
| inbox_date | string | Укажите, когда удалить сообщение из Inbox. |
| inbox_image | string | URL изображения, которое будет показано рядом с сообщением в Inbox. |
{ "status_code": 200, "status_message": "OK", "response": { "messageCode": "97B0-C7473871-2FBDFDC6" }}The request cannot be fulfilled due to bad syntax.Больше примеров ответов:
{ "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", // обязательно. Токен доступа API из Панели управления Pushwoosh "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // обязательно. Синтаксис объяснен ниже "send_date": "now", // опционально. YYYY-MM-DD HH:mm ИЛИ 'now' "ignore_user_timezone": true, // опционально. "timezone": "America/New_York", // опционально. Если не указано, для "send_date" по умолчанию используется UTC-0. // Больше информации https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // опционально. Код кампании, к которой вы хотите присвоить это push-сообщение. "content": { // опционально. Объект ИЛИ строка. Используйте "wns_content" для Windows. "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // опционально. Уникальный идентификатор сообщения для предотвращения дублирования // в случае проблем с сетью. Хранится на стороне // Pushwoosh в течение 5 минут. "rich_media": "XXXXX-XXXXX", // опционально. Скопируйте код Rich Media из URL-адреса // страницы редактора Rich Media в Панели управления Pushwoosh. "link": "https://google.com", // опционально. Для диплинков добавьте "minimize_link": 0 "minimize_link": 0, // опционально. 0 — не сокращать, 2 — bitly. По умолчанию = 2. // Сокращатель URL-адресов Google отключен с 30 марта 2019 года. // Обратите внимание, что у сервисов сокращения ссылок есть ограничения // на количество вызовов. "data": { // опционально. Строка JSON или объект JSON. "key": "value" // Будет передан как параметр "u" в полезной нагрузке }, // (преобразован в строку JSON). "preset": "XXXXX-XXXXX", // опционально. Код пресета пуша из вашей Панели управления. "send_rate": 100, // опционально. Регулирование скорости. Допустимые значения от 100 до 1000 пушей/секунду. "dynamic_content_placeholders": { // опционально. Плейсхолдеры для динамического контента вместо тегов устройства. "firstname": "John", "lastname": "Doe" },
// Чтобы сохранить сообщение в Inbox через API, используйте "inbox_date" или "inbox_image". // Сообщение сохраняется, когда используется хотя бы один из этих параметров. "inbox_image": "Inbox image URL", // опционально. Изображение, которое будет показано рядом с сообщением. "inbox_date": "2017-02-02" // опционально. Укажите, когда удалить сообщение из Inbox. // Сообщение будет удалено из Inbox в 00:00:01 UTC // указанной даты, поэтому предыдущая дата является последним // днем, когда пользователь может видеть сообщение в своем Inbox. // Если не указано, дата удаления по умолчанию - следующий // день после даты отправки. }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "devices_filter": "FILTER CONDITION", "send_date": "now", // опционально. YYYY-MM-DD HH:mm ИЛИ 'now' "content": { // опционально. Объект ИЛИ строка. "en": "English", // Используйте "wns_content" для Windows. "de": "Deutsch" }, "ignore_user_timezone": true, // опционально. "timezone": "America/New_York", // опционально. Если не указано, для "send_date" по умолчанию используется UTC-0. // Больше информации https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // опционально. Код кампании, к которой вы хотите присвоить это push-сообщение.
// Параметры, связанные с iOS "ios_badges": 5, // опционально. Число на значке приложения iOS. // Используйте "+n" или "-n" для увеличения/уменьшения значения значка на n. "ios_sound": "sound file.wav", // опционально. Имя звукового файла в основном бандле приложения. // Если оставить пустым, устройство не будет издавать звук // при получении пуша. "ios_sound_off": true, // опционально. Включить/выключить звук, установленный полем "ios_sound". "ios_ttl": 3600, // опционально. Параметр времени жизни — максимальный срок жизни сообщения в секундах. "ios_silent": 1, // опционально. Включает тихие уведомления (игнорирует "sound" и "content"). "ios_category_id": "1", // опционально. ID категории iOS8 из Pushwoosh. "ios_category_custom": "category", // опционально. Пользовательская категория APNS. "ios_root_params": { // опционально. Параметры корневого уровня для словаря aps. "aps": { "content-available": "0", // опционально. Установите "1" для отправки тихого пуша и "0" для обычного. "mutable-content": 1 // обязательно для медиа-вложений в iOS10+. }, "attachment": "YOUR_ATTACHMENT_URL", // URL медиа-вложения для iOS10+. "data": {} // опционально. Пользовательские данные, макс. 4 КБ }, "apns_trim_content": 1, // опционально. (0|1) Обрезает слишком длинные строки контента многоточием. "ios_title": { // опционально. Добавляет заголовок для push-уведомления iOS. "en": "title" }, "ios_subtitle": { // опционально. Добавляет подзаголовок для push-уведомления iOS. "en": "subTitle" }, "ios_content": { // опционально. Добавляет контент для push-уведомления iOS. "en": "content" },
// Параметры, связанные с Android "android_root_params": { // опционально. Пользовательский объект ключ-значение. "key": "value" // Параметры корневого уровня для получателей полезной нагрузки android. }, "android_sound": "soundfile", // опционально. Без расширения файла. Если оставить пустым, устройство // не будет издавать звук при получении пуша. "android_sound_off": true, // опционально. Включить/выключить звук, установленный полем "android_sound" "android_header": { // опционально. Объект ИЛИ строка. Заголовок уведомления Android. "en": "header" }, "android_content": { // опционально. Объект ИЛИ строка. Контент уведомления Android. "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // опционально. Полный URL к файлу изображения. "android_banner": "URL.png", // опционально. Полный URL к файлу изображения. "android_badges": 5, // опционально. целое число. Число на значке иконки приложения Android. // Используйте "+n" или "-n" для увеличения/уменьшения значения значка на n. "android_gcm_ttl": 3600, // опционально. Параметр времени жизни — максимальный срок жизни сообщения в секундах. "android_vibration": 0, // опционально. Принудительная вибрация Android для высокоприоритетных пушей. "android_led": "#rrggbb", // опционально. HEX-цвет светодиода, устройство сделает все возможное для аппроксимации. "android_priority": -1, // опционально. Устанавливает параметр "importance" для устройств с Android 8.0 // и выше, а также параметр "priority" для устройств // с Android 7.1 и ниже. Устанавливает уровень прерывания // канала уведомлений или конкретного уведомления. // Допустимые значения: -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // опционально. "normal" или "high". Включает доставку уведомления // когда устройство находится в режиме энергосбережения. "android_ibc": "#RRGGBB", // опционально. цвет фона иконки на Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" и т.д. "android_silent": 1, // опционально. 0 или 1. Включить тихое уведомление. // Игнорировать звук и контент
// Параметры, связанные с Amazon "adm_root_params": { // опционально. Пользовательский объект ключ-значение "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // опционально. Включить/выключить звук, установленный полем "adm_sound" "adm_header": { "en": "Header" }, "adm_content": { "en": "content" }, "adm_icon": "icon.png", "adm_custom_icon": "URL.png", "adm_banner": "URL.png", "adm_ttl": 3600, // опционально. Параметр времени жизни — максимальный срок жизни // сообщения в секундах. "adm_priority": -1, // опционально. Приоритет пуша в панели пушей Amazon, // допустимые значения: -2, -1, 0, 1 и 2.
// Параметры, связанные с Mac OS X "mac_badges": 3, "mac_sound": "sound.caf", "mac_sound_off": true, "mac_root_params": { "content-available": 1 }, "mac_ttl": 3600, // опционально. Параметр времени жизни — максимальный срок жизни сообщения в секундах. "mac_title": { // опционально. Добавляет заголовок для push-уведомления. "en": "title" }, "mac_subtitle": { // опционально. Добавляет подзаголовок для push-уведомления MacOS. "en": "subtitle" }, "mac_content": { // опционально. Добавляет контент для push-уведомления MacOS. "en": "content" },
// Параметры, связанные с Windows "wns_content": { // обязательно. Контент (XML или raw) уведомления, закодированный // в base64 MIME в виде объекта ИЛИ строки "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // опционально. Используется в политике замены плиток. // Буквенно-цифровая строка не более 16 символов. "wns_cache": 1, // опционально. (1|0) Преобразуется в значение X-WNS-Cache-Policy. "wns_ttl": 600, // опционально. Время истечения срока действия уведомления в секундах.
// Параметры, связанные с Safari "safari_title": { // опционально. Объект ИЛИ строка. Заголовок уведомления. "en": "title" }, "safari_content": { // опционально. Объект ИЛИ строка. Контент уведомления. "en": "content" }, "safari_action": "Click here", // опционально. "safari_url_args": [ // обязательно. но значение может быть пустым "firstArgument", "secondArgument" ], "safari_ttl": 3600, // опционально. Параметр времени жизни — максимальный // срок жизни сообщения в секундах.
// Параметры, связанные с Chrome "chrome_title": { // опционально. Вы можете указать заголовок сообщения в этом параметре. "en": "title" }, "chrome_content": { // опционально. Вы можете указать контент сообщения в этом параметре. "en": "content" }, "chrome_icon": "icon_URL", // опционально. Полный URL к иконке или путь к файлу в ресурсах расширения "chrome_gcm_ttl": 3600, // опционально. Параметр времени жизни – максимальный срок жизни сообщения в секундах. "chrome_duration": 20, // опционально. Изменяет время отображения пуша в Chrome. Установите 0, чтобы пуш отображался // до тех пор, пока пользователь не взаимодействует с ним. "chrome_image": "image_URL", // опционально. URL к большому изображению "chrome_root_params": { // опционально. Установить параметры, специфичные для сообщений, отправляемых в Chrome. "key": "value" }, "chrome_button_text1": "text1", // опционально. "chrome_button_url1": "button1_URL", // опционально. Игнорируется, если chrome_button_text1 не установлен. "chrome_button_text2": "text2", // опционально. "chrome_button_url2": "button2_url", // опционально. Игнорируется, если chrome_button_text2 не установлен.
// Параметры, связанные с Firefox "firefox_title": { // опционально. Объект ИЛИ строка. Здесь можно указать заголовок сообщения. "en": "title" }, "firefox_content": { // опционально. Объект ИЛИ строка. Здесь можно указать контент сообщения. "en": "content" }, "firefox_icon": "icon_URL", // опционально. Полный URL к иконке или путь // к файлу в ресурсах расширения. "firefox_root_params": { // опционально. Установить параметры, специфичные для сообщений, отправляемых в Firefox. "key": "value" } }}Основы очень просты – все фильтры выполняются над наборами сущностей.
Наборы
Anchor link toНаборы определяются как:
1. Устройства, подписанные на конкретное приложение (A);
2. Устройства, которые соответствуют указанным значениям тегов (T) или значению тега для конкретного приложения (AT);\
Синтаксис
Anchor link toДавайте попробуем на нескольких примерах в соответствии с приведенным выше списком.
Таргетинг на подписчиков приложения
Anchor link toФильтр “A” определяет набор устройств, подписанных на конкретное приложение:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
где
- “XXXXX-XXXXX” – Код приложения Pushwoosh
- [“iOS”, “Android”, …] – массив целевых платформ. Если опущен, сообщение будет отправлено на все платформы, доступные для этого приложения.
Фильтрация по значениям тегов
Anchor link toФильтр “T” определяет набор устройств, которым присвоены указанные значения тегов.
T(\"Age\", IN, [17,20])
Определяет набор устройств, у которых тег “age” установлен в одно из значений: 17, 18, 19, 20.
Типы тегов и операторы
Anchor link toОчень важно понимать, что теги являются общими для приложений, и это представляет собой очень мощный инструмент для сегментации и фильтрации ваших целевых пользователей без привязки к конкретному приложению.
Тег может быть одного из трех различных типов: Строка, Целое число, Список. Тип тега определяет, какие операторы вы можете использовать для конкретного тега.
Строковые теги
Anchor link toПрименимые операторы:
- EQ – нацеливается на устройства с указанным значением тега
- IN – нацеливается на устройства с любым из указанных значений тегов
- NOTIN – нацеливается на устройства без указанных значений тегов
- NOTEQ – нацеливается на устройства со значением тега, не равным указанному
- NOTSET – нацеливается на устройства без значения для указанного тега
- ANY – нацеливается на устройства с любым значением, установленным для указанного тега
Примеры:
T (\"Age\", EQ, 30) – фильтрует пользователей в возрасте 30 лет
T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – фильтрует пользователей, которые выбрали красный, зеленый или синий в качестве своего любимого цвета.
T (\"Name", NOTSET, \"\") – нацеливается на устройства без значения для тега Name.
Вы можете использовать числовые значения со строковыми тегами, но такие значения будут преобразованы в строку.
Целочисленные теги
Anchor link toПрименимые операторы:
- GTE – больше или равно указанному значению
- LTE– меньше или равно указанному значению
- EQ – равно указанному значению
- BETWEEN – между минимальным и максимальным указанными значениями
- IN – любое из указанных значений
- NOTIN – ни одно из указанных значений не присвоено устройству
- NOTEQ – устройства со значением тега, не равным указанному
- NOTSET – устройства без значения для указанного тега
- ANY – устройства с любым значением, установленным для указанного тега
Примеры:
T (\"Level\", EQ, 14) – фильтрует пользователей только на 14 уровне.
T (\"Level\", BETWEEN, [1,5) – фильтрует пользователей на 1, 2, 3, 4 и 5 уровнях.
T (\"Level", GTE, 29) – нацеливается на пользователей, достигших как минимум 29 уровня.
Теги-списки
Anchor link toПрименимые операторы:
- IN – устройства с любым из указанных значений тегов
Пример: T("Category", IN, ["breaking_news","business","politics"])
Теги даты
Anchor link toПрименимые операторы:
- GTE – больше или равно указанному значению
- LTE– меньше или равно указанному значению
- EQ – равно указанному значению
- BETWEEN – между минимальным и максимальным указанными значениями
- NOTEQ – устройства со значением тега, не равным указанному
- NOTSET – устройства без значения для указанного тега
- ANY – устройства с любым значением, установленным для указанного тега
Примеры:
AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])
AT("7777D-322A7","Last Application Open", GTE, "90 days ago")
Операции
Anchor link to- “+” – объединяет два набора (равно ИЛИ)
- “*” – пересекает два набора (равно И)
- “\” – вычитает один набор из другого (равно НЕ)
Все операции левоассоциативны. ”+” и ”*” имеют одинаковый приоритет. "" имеет более высокий приоритет. Вы можете использовать скобки для определения приоритетов вычислений.
Обратите внимание, что операция “\” не коммутативна. A("12345-12345") \ A("67890-67890") не то же самое, что A("67890-67890") \ A("12345-12345").
getPushHistory Устарело
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
Получает историю сообщений с деталями пушей.
Тело запроса
Anchor link to| Имя | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| limitMessages | integer | Ограничивает количество сообщений в ответе. Возможные значения от 10 до 1000. |
| source | string | Источник истории пушей. Может быть null или: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”. |
| searchBy | string | Возможные значения для поиска. Может быть null или: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”. |
| value | string | Значение поиска, установленное в соответствии с полем “searchBy”. |
| lastNotificationID | string | Используется для пагинации. Последний messageId из предыдущего вызова /getPushHistory. Подробности ниже. |
{ "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", // обязательно. Токен доступа API из Панели управления Pushwoosh "source": null, // опционально. Возможные значения: null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // опционально. Возможные значения: "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // опционально. Значение поиска, установленное в соответствии с полем "searchBy". "lastNotificationID": 0, // опционально. Используется для пагинации. Последний messageId из // предыдущего вызова /getPushHistory. Подробности ниже. "limitMessages": 1000 // опционально. Возможное значение от 10 до 1000. }}Этот метод вернет 1000 сообщений из аккаунта, отсортированных по Id сообщения. Чтобы получить вторую страницу, укажите последний Id сообщения из предыдущего ответа в параметре lastNotificationId.
Типы данных ответа
Anchor link toid -- int | 0code -- stringcreateDate -- string (дата: %Y-%m-%d %H:%M:%S)sendDate -- string (дата: %Y-%m-%d %H:%M:%S)content -- array ( dict {язык: значение} | list [])title -- array ( dict {язык: значение} | list [])subtitle -- array ( dict {язык: значение} | list [])url -- stringios_title -- string | array ( dict {язык: значение} ) | nullios_subtitle -- string | array ( dict {язык: значение} ) | nullios_root_params -- dict (JSON) | nullandroid_header -- string | array ( dict {язык: значение} ) | 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 (устарело) -- list (JSON) | nulldata -- dict (JSON) | nullopen -- dict [dict [string: int]] | "" Пример: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Пример: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Пример: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Пример: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
Отменяет запланированное сообщение.
Тело запроса
Anchor link to| Имя | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| message* | string | Код сообщения, полученный в ответе /createMessage. |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа API из Панели управления Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // обязательно. Код сообщения, полученный в ответе /createMessage }}Коды состояния:
| Код состояния HTTP | status_code | Описание |
|---|---|---|
| 200 | 200 | Сообщение успешно отменено |
| 200 | 210 | Ошибка аргумента. См. status_message для получения дополнительной информации. |
| 400 | N/A | Неверно сформированная строка запроса |
| 500 | 500 | Внутренняя ошибка |