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", // required. Код приложения Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh. "notifications": [{ "send_date": "now", // optional. ГГГГ-ММ-ДД ЧЧ:мм ИЛИ 'now' "content": { // optional. объект ИЛИ строка. "en": "English", // Используйте "wns_content" для Windows. "fr": "French" }, "title": { // optional. объект ИЛИ строка. "en": "Title", // Игнорируется, если указаны заголовки для конкретных платформ "fr": "Titre" // 'ios_title', 'android_header' и т.д. }, // см. примеры параметров для конкретных платформ ниже. "subtitle":{ // optional. объект ИЛИ строка. "en": "Subtitle", // Игнорируется, если указаны заголовки для конкретных платформ "fr": "Sous-titre" // 'ios_subtitle' и т.д. }, // см. примеры параметров для конкретных платформ ниже. "ignore_user_timezone": true, // optional. "timezone": "America/New_York", // optional. Если не указано, по умолчанию для "send_date" используется UTC-0. // Поддерживаемые часовые пояса см. на https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // optional. Код кампании, к которой вы хотите привязать это push-уведомление. "geozone": { // optional. Отправить в геозону "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // optional. Скопируйте код Rich Media из адресной строки на странице редактора Rich Media в Панели управления Pushwoosh. "link": "https://google.com", // optional. Для диплинков добавьте "minimize_link": 0 "minimize_link": 0, // optional. 0 — не сокращать, 2 — bitly. По умолчанию = 2. // Обратите внимание, что у сервисов сокращения ссылок есть ограничения на количество вызовов. "data": { // optional. Строка JSON или объект JSON, будет передан как параметр "u" в полезной нагрузке (преобразован в строку JSON). "key": "value" // }, "transactionId": "unique UUID", // optional. Уникальный идентификатор сообщения для предотвращения дублирования в случае проблем с сетью. Хранится на стороне Pushwoosh в течение 5 минут. "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-уведомлений из вашей Панели управления. // Если в запросе передаются конкретные параметры, они переопределяют параметры пресета. "send_rate": 100, // optional. Регулирование скорости. Допустимые значения от 100 до 1000 push-уведомлений/секунду. "send_rate_avoid": true, // optional. Если установлено значение true, ограничение скорости не будет применяться к этому конкретному push-уведомлению. // Связано с шаблонами, для получения дополнительной информации обратитесь к руководству по движку шаблонов "template_bindings": { // optional. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // optional. Плейсхолдеры для динамического контента вместо тегов устройства. "firstname": "John", "lastname": "Doe" },
// Параметры ограничения частоты. Убедитесь, что в Панели управления настроено глобальное ограничение частоты. "capping_days": 30, // optional. Количество дней для ограничения частоты (макс. 30 дней) "capping_count": 10, // optional. Максимальное количество push-уведомлений, которое может быть отправлено из определенного приложения на конкретное устройство в течение периода 'capping_days'. Если созданное сообщение превышает лимит 'capping_count' для устройства, оно не будет отправлено на это устройство. "capping_exclude": true, // optional. Если установлено значение true, это push-уведомление не будет учитываться при ограничении частоты для будущих push-уведомлений. "capping_avoid": true, // optional. Если установлено значение true, ограничение частоты не будет применяться к этому конкретному push-уведомлению.
// Чтобы сохранить сообщение в Inbox через API, используйте "inbox_date" или "inbox_image". // Сообщение сохраняется, если используется хотя бы один из этих параметров. "inbox_date": "2017-02-02", // optional. Укажите, когда удалить сообщение из Inbox. // Сообщение будет удалено из Inbox в 00:00:01 UTC указанной даты, поэтому предыдущая дата — это последний день, когда пользователь может видеть сообщение в своем Inbox. // Если не указано, дата удаления по умолчанию — следующий день после даты отправки. "inbox_image": "Inbox image URL", // optional. Изображение, которое будет показано рядом с сообщением. "inbox_days": 5, // optional. Укажите, когда удалить сообщение из Inbox (срок жизни сообщения в Inbox в днях). // Может использоваться вместо параметра "inbox_date". // До 30 дней.
"devices": [ // optional. Укажите токены или HWID для отправки целевых push-уведомлений. "hwid_XXXX" // Не более 1000 токенов/HWID в массиве. ], // Если установлено, сообщение будет отправлено только на устройства из списка. Группа приложений для списка устройств не допускается. Push-токены iOS могут быть только в нижнем регистре.
// Push-уведомления, ориентированные на пользователя "users": [ // optional. Если установлено, сообщение будет доставлено только указанным User ID (установленным через вызов /registerUser). "user_XXXX" // ], // Если указано вместе с параметром devices, последний будет проигнорирован. Не более 1000 User ID в массиве. Группа приложений для списка пользователей не допускается.
// Фильтры и условия "filter": "FILTER_NAME", // optional. "conditions": [ // optional. См. примечание ниже. ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // optional. Логический оператор для массивов условий. // Возможные значения: AND | OR. По умолчанию AND. }] }}Пример запроса VoIP-уведомления
Anchor link toPushwoosh поддерживает уведомления о вызовах в стиле VoIP для iOS и Android.
Ниже вы найдете примеры запросов API createMessage для каждой платформы.
{ "request": { "application": "XXXXX-XXXXX", // required. Код приложения Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh. "notifications": [ { "voip_push": true, // required. Параметр необходим для отправки VoIP push-уведомления. "ios_root_params": { "aps": { "mutable-content": 1 // required для медиавложений в iOS10+. }, "callerName": "CallerName", // optional. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // optional. Указывает, поддерживаются ли видеозвонки. "supportsHolding": true, // optional. Указывает, поддерживается ли функция удержания вызова. "supportsDTMF": false, // optional. Управляет поддержкой двухтонального многочастотного сигнала. "callId": "42", // optional. Уникальный идентификатор вызова для отмены. "cancelCall": true // optional. Установите "true", чтобы отменить вызов с указанным "callId". } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // required. Код приложения Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh. "notifications": [ { "voip_push": true, // required. Параметр необходим для отправки VoIP push-уведомления. "android_root_params": { "callerName": "callerName", // optional. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // optional. Указывает, поддерживаются ли видеозвонки. "callId": 42, // optional. Уникальный идентификатор вызова для отмены. "cancelCall": true // optional. Установите "true", чтобы отменить вызов с указанным "callId". } } ] }}Параметры для конкретных платформ
Anchor link toПараметры iOS
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "ios_title": { // optional. Объект ИЛИ строка. Добавляет заголовок для push-уведомления, специфичный для iOS. "en": "title" }, "ios_subtitle": { // optional. Объект ИЛИ строка. Добавляет подзаголовок для push-уведомления, специфичный для iOS. "en": "subtitle" }, "ios_content": { // optional. Объект ИЛИ строка. Добавляет содержимое для push-уведомления, специфичное для iOS. "en": "content" }, "ios_badges": 5, // optional. Число на иконке приложения iOS. // Используйте "+n" или "-n" для увеличения/уменьшения значения на n. "ios_sound": "sound file.wav", // optional. Имя звукового файла в основном бандле приложения. // Если оставить пустым, устройство воспроизведет системный звук по умолчанию. "ios_sound_off": true, // optional. Включить/отключить звук, установленный полем "ios_sound". "ios_ttl": 3600, // optional. Параметр времени жизни — максимальное время жизни сообщения в секундах. "ios_silent": 1, // optional. Включает тихие уведомления (игнорирует "sound" и "content"). "ios_category_id": "1", // optional. ID категории iOS8 из Pushwoosh. "ios_root_params": { // optional. Параметры корневого уровня для словаря aps. "aps": { "content-available": "0", // optional. Установите "1" для отправки тихого push-уведомления и "0" для обычного. "mutable-content": 1 // required для медиавложений в iOS10+. }, "callerName": "CallerName", // optional параметр VoIP. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // optional параметр VoIP. Указывает, поддерживаются ли видеозвонки. "supportsHolding": true, // optional параметр VoIP. Указывает, поддерживается ли функция удержания вызова. "supportsDTMF": false, // optional параметр VoIP. Управляет поддержкой двухтонального многочастотного сигнала. "data": {} // optional Пользовательские данные, макс. 4 КБ }, "ios_attachment": "URL", // optional. Вставить медиаконтент в уведомление. "ios_thread_id": "some thread id", // optional. Идентификатор для группировки связанных уведомлений. // Сообщения с одинаковым ID потока будут сгруппированы // на экране блокировки и в Центре уведомлений. "ios_critical": true, // optional. Помечает уведомление iOS как критическое оповещение, // воспроизводящее звук, даже если на устройстве отключен звук или // включен режим "Не беспокоить". "ios_category_custom": "category", // optional. Пользовательская категория APNS. "ios_interruption_level": "active", // optional. Одно из: "passive", "active", "time-sensitive", // "critical". Указывает на важность и // время доставки уведомления. Подробности см. в // руководстве по разовым push-уведомлениям. "apns_trim_content": 1 // optional. (0|1) Обрезает слишком длинные строки контента, добавляя многоточие. }] }}Параметры Android
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "android_header": { // optional. Заголовок уведомления Android. "en": "header" }, "android_content": { // optional. Содержимое уведомления Android. "en": "content" }, "android_root_params": { // optional. Пользовательский объект ключ-значение. "key": "value", // Параметры корневого уровня для получателей полезной нагрузки Android. "CancelID": 12345678, // optional. Отменяет push-уведомление с "voip": true, // required параметр VoIP. Параметр необходим для отправки VoIP push-уведомлений. "callerName": "callerName", // optional параметр VoIP. Имя звонящего. Если не указано, отображается "неизвестный абонент". "video": true, // optional параметр VoIP. Указывает, поддерживаются ли видеозвонки. }, // указанным ID сообщения (получите ID из истории сообщений) "android_sound": "soundfile", // optional. Без расширения файла. Если оставить пустым, // устройство воспроизведет системный звук по умолчанию. "android_sound_off": true, // optional. Включить/отключить звук, установленный полем "android_sound" "android_icon": "icon.png", // optional. "android_custom_icon": "URL.png", // optional. Полный URL-адрес файла изображения. "android_banner": "URL.png", // optional. Полный URL-адрес файла изображения. "android_badges": 5, // optional. Число на иконке приложения Android. // Используйте "+n" или "-n" для увеличения/уменьшения значения на n. "android_gcm_ttl": 3600, // optional. Параметр времени жизни — максимальное время жизни сообщения в секундах. "android_vibration": 0, // optional. Принудительная вибрация Android для push-уведомлений с высоким приоритетом. "android_led": "#rrggbb", // optional. HEX-цвет светодиода, устройство постарается максимально точно его воспроизвести. "android_priority": -1, // optional. Устанавливает параметр "importance" для устройств с // Android 8.0 и выше, а также параметр "priority" // для устройств с Android 7.1 и ниже. Устанавливает // уровень прерывания для канала уведомлений или конкретного // уведомления. Допустимые значения: -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // optional. "normal" или "high". // Включает доставку уведомлений, когда // устройство находится в режиме энергосбережения. "android_ibc": "#RRGGBB", // optional. цвет фона иконки на Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" и т.д. "android_silent": 1, // optional. 0 или 1. Включить тихое уведомление. // Игнорировать звук и содержимое "android_group_id": "123" // optional. Идентификатор для группировки связанных уведомлений. Сообщения с // одинаковым ID потока будут сгруппированы в // Центре уведомлений. }] }}Параметры Huawei
{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "huawei_android_header": { // optional. Объект ИЛИ строка. Заголовок уведомления "en": "header" }, "huawei_android_content": { // optional. Объект ИЛИ строка. Содержимое уведомления "en": "content" }, "huawei_android_badges": true, // optional. "huawei_android_silent": 0, // optional. 0 или 1. Включить тихое уведомление. // Игнорировать звук и содержимое "huawei_android_icon": "URL.png", // optional. "huawei_android_led": "#FF0011", // optional. HEX-цвет светодиода, устройство постарается максимально точно его воспроизвести "huawei_android_vibration": 1, // optional. Принудительная вибрация Huawei для push-уведомлений с высоким приоритетом "huawei_android_sound": "sound.wav", // optional. Если оставить пустым, устройство воспроизведет // системный звук по умолчанию "huawei_android_sound_off": true, // optional. Включить/отключить звук, установленный // полем "huawei_android_sound" "huawei_android_custom_icon": "URL.png", // optional "huawei_android_gcm_ttl": 2400, // optional. Параметр времени жизни — максимальное // время жизни сообщения в секундах "huawei_android_banner": "URL.png", // optional. Полный URL-адрес файла изображения "huawei_android_root_params": { // optional. Пользовательский объект ключ-значение. "key": "value" // Параметры корневого уровня для получателей полезной нагрузки Huawei. }, "huawei_android_priority": 0, // optional. Допустимые значения: -2, -1, 0, 1, 2 "huawei_android_ibc": "#0011AA", // optional. Цвет фона иконки на Lollipop "huawei_android_lockscreen": 1, // optional "huawei_android_delivery_priority": "normal", // optional. "normal" или "high". Включает доставку уведомлений // в режиме энергосбережения "huawei_android_group_id": "group_id" // optional. Идентификатор для группировки связанных уведомлений }] }}Параметры Safari
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "safari_url_args": [ // required, но значение может быть пустым "firstArgument", "secondArgument" ], "safari_title": { // optional. Объект ИЛИ строка. Заголовок уведомления. "en": "content" }, "safari_content": { // optional. Объект ИЛИ строка. Содержимое уведомления. "en": "content" }, "safari_action": "Click here", // optional. "safari_ttl": 3600 // optional. Параметр времени жизни — максимальное // время жизни сообщения в секундах. }] }}Параметры Chrome
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "chrome_title": { // optional. Объект ИЛИ строка. Вы можете указать заголовок "en": "title" // сообщения в этом параметре. }, "chrome_content": { // optional. Объект ИЛИ строка. Вы можете указать содержимое "en": "content" // сообщения в этом параметре. }, "chrome_icon": "URL.png", // optional. Полный URL-адрес иконки или путь к файлу в ресурсах расширения "chrome_gcm_ttl": 3600, // optional. Параметр времени жизни – максимальное время жизни сообщения в секундах. "chrome_duration": 20, // optional. макс. 50 секунд. Изменяет время отображения push-уведомления в Chrome. // Установите 0, чтобы отображать push-уведомление, пока пользователь не взаимодействует с ним. "chrome_image": "image_URL", // optional. URL-адрес большого изображения. "chrome_root_params": { // optional. Установить параметры, специфичные для сообщений, отправляемых в Chrome. "key": "value" }, "chrome_button_text1": "text1", // optional "chrome_button_url1": "button1_URL", // optional. Игнорируется, если chrome_button_text1 не установлен. "chrome_button_text2": "text2", // optional "chrome_button_url2": "button2_url" // optional. Игнорируется, если chrome_button_text2 не установлен. }] }}Параметры Firefox
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "firefox_title": { // optional. Объект ИЛИ строка. Здесь можно указать заголовок сообщения. "en": "title" }, "firefox_content": { // optional. Объект ИЛИ строка. Здесь можно указать содержимое сообщения. "en": "content" }, "firefox_icon": "URL.png", // optional. Полный URL-адрес иконки или путь к // файлу в ресурсах расширения. "firefox_root_params": { // optional. Установить параметры, специфичные для сообщений, отправляемых в Firefox. "key": "value" } }] }}Параметры Amazon
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "adm_header": { // optional. Объект ИЛИ строка. Здесь можно указать заголовок сообщения. "en": "header" }, "adm_content": { // optional. Объект ИЛИ строка. Здесь можно указать содержимое сообщения. "en": "content" }, "adm_root_params": { // optional. Пользовательский объект ключ-значение "key": "value" }, "adm_sound": "push.mp3", // optional. "adm_sound_off": true, // optional. Включить/отключить звук, установленный полем "adm_sound" "adm_icon": "icon.png", // optional. Полный URL-адрес иконки. "adm_custom_icon": "URL.png", // optional. "adm_banner": "URL.png", // optional. "adm_ttl": 3600, // optional. Параметр времени жизни — максимальное время жизни сообщения // в секундах. "adm_priority": -1 // optional. Приоритет push-уведомления в панели уведомлений Amazon, // допустимые значения: -2, -1, 0, 1 и 2. }] }}Параметры Mac OS X
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "mac_title": { // optional. Объект ИЛИ строка. Добавляет заголовок для push-уведомления. "en": "title" }, "mac_subtitle": { // optional. Добавляет подзаголовок для push-уведомления. "en": "subtitle" }, "mac_content": { // optional. Добавляет содержимое для push-уведомления. "en": "content" }, "mac_badges": 3, // optional. "mac_sound": "sound.caf", // optional. "mac_sound_off": true, // optional. Включить/отключить звук, установленный полем "mac_sound" "mac_root_params": { // optional. "content-available": 1 }, "mac_ttl": 3600 // optional. Параметр времени жизни — максимальное время жизни сообщения в секундах. }] }}Параметры Windows
Anchor link to{ "request": { "application": "12345-67891", // required. Код приложения Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "notifications": [{ "wns_content": { // required. Содержимое (XML или raw) уведомления, закодированное в MIME base64 // в виде объекта ИЛИ строки "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // optional. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // optional. Используется в политике замены плиток. // Буквенно-цифровая строка не более 16 символов. "wns_cache": 1, // optional. (1|0) Преобразуется в значение X-WNS-Cache-Policy. "wns_ttl": 600 // optional. Время истечения срока действия уведомления в секундах. }] }}Ответ:
| Код состояния HTTP | status_code | Описание |
|---|---|---|
| 200 | 200 | Сообщение успешно создано |
| 200 | 210 | Ошибка аргумента. См. status_message для получения дополнительной информации |
| 400 | N/A | Неверно сформированная строка запроса |
| 500 | 500 | Внутренняя ошибка |
Трассировка сообщений API
Anchor link toВ целях балансировки нагрузки мы не храним сообщения, отправленные через API с параметром “devices”, который содержит менее 10 устройств в массиве. Из-за этого такие сообщения не будут отображаться в вашей истории сообщений.
Чтобы видеть отчеты по push-уведомлениям на этапе тестирования, используйте трассировку сообщений API. Включение этой опции ON позволяет вам преодолеть это ограничение на 1 час и сохранить такие push-уведомления в истории сообщений. Трассировка сообщений 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
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
#Использованиеif [ ! -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 "Ответ:"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 аргумент: текст сообщения %%
%% Аутентификация и App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% Запуск %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% Опции детализации HTTP-клиента: false, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% Войны JSON !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 к JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Метод post, %%Запрос {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%Опции HTTP [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Опции []), io:format("And received ~p", [Response]).class PushNotification
#- Документация по API PushWoosh https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Здесь два метода: # - PushNotification.new.notify_all(message) Уведомляет всех с одинаковой опцией # - PushNotification.new.notify_devices(notification_options = {}) Уведомляет конкретные устройства с пользовательскими опциями
include HTTParty #Убедитесь, что гем HTTParty объявлен в вашем gemfile https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Измените на свои настройки @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("Это тестовое уведомление для всех устройств") 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 = {}) #- Опции по умолчанию, раскомментируйте :data или :devices при необходимости default_notification_options = { # ГГГГ-ММ-ДД ЧЧ:мм ИЛИ 'now' :send_date => "now", # Объект( язык1: 'содержимое1', язык2: 'содержимое2' ) ИЛИ строка :content => { :fr => "Test", :en => "Test" }, # Строка JSON или объект JSON "custom": "json data" #:data => { # :custom_data => value #}, # опустите это поле (push-уведомление будет доставлено на все устройства для приложения), или предоставьте список ID устройств #:devices => {} }
#- Слияние с конкретными опциями final_notification_options = default_notification_options.merge(notification_options)
#- Создание финального вызова options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Выполнение POST API вызова с помощью HTTPARTY - :body => options.to_json позволяет нам отправлять json как объект, а не как строку response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Использует классы JSON с 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: # Для Python 3.0 и новее from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Возврат к urllib2 для Python 2 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", // required. Токен доступа API из Панели управления Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // required. Код сообщения, полученный в /createMessage }}Коды состояния:
| Код состояния HTTP | status_code | Описание |
|---|---|---|
| 200 | 200 | Сообщение успешно удалено |
| 200 | 210 | Ошибка аргумента. См. status_message для получения дополнительной информации |
| 400 | N/A | Неверно сформированная строка запроса |
| 500 | 500 | Внутренняя ошибка |
<?php// см. https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// создает экземпляр запроса$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// вызывает веб-сервис '/deleteMessage'$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) { print 'Отлично, мое сообщение удалено!';} else { print 'Упс, удаление не удалось :-('; print 'Код состояния : ' . $response->getStatusCode(); print 'Сообщение о состоянии : ' . $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", // required. Токен доступа API из Панели управления Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // required. код сообщения или 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 | ГГГГ-ММ-ДД ЧЧ:мм или ‘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 push-уведомлений в секунду. |
| 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", // required. Токен доступа API из Панели управления Pushwoosh "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // required. Синтаксис объяснен ниже "send_date": "now", // optional. ГГГГ-ММ-ДД ЧЧ:мм ИЛИ 'now' "ignore_user_timezone": true, // optional. "timezone": "America/New_York", // optional. Если не указано, по умолчанию для "send_date" используется UTC-0. // Больше информации https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // optional. Код кампании, к которой вы хотите привязать это push-уведомление. "content": { // optional. Объект ИЛИ строка. Используйте "wns_content" для Windows. "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // optional. Уникальный идентификатор сообщения для предотвращения дублирования сообщений // в случае проблем с сетью. Хранится на стороне // Pushwoosh в течение 5 минут. "rich_media": "XXXXX-XXXXX", // optional. Скопируйте код Rich Media из адресной строки // страницы редактора Rich Media в Панели управления Pushwoosh. "link": "https://google.com", // optional. Для диплинков добавьте "minimize_link": 0 "minimize_link": 0, // optional. 0 — не сокращать, 2 — bitly. По умолчанию = 2. // Сокращатель URL-адресов Google отключен с 30 марта 2019 года. // Обратите внимание, что у сервисов сокращения ссылок есть ограничения // на количество вызовов. "data": { // optional. Строка JSON или объект JSON. "key": "value" // Будет передан как параметр "u" в полезной нагрузке }, // (преобразован в строку JSON). "preset": "XXXXX-XXXXX", // optional. Код пресета push-уведомлений из вашей Панели управления. "send_rate": 100, // optional. Регулирование скорости. Допустимые значения от 100 до 1000 push-уведомлений/секунду. "dynamic_content_placeholders": { // optional. Плейсхолдеры для динамического контента вместо тегов устройства. "firstname": "John", "lastname": "Doe" },
// Чтобы сохранить сообщение в Inbox через API, используйте "inbox_date" или "inbox_image". // Сообщение сохраняется, если используется хотя бы один из этих параметров. "inbox_image": "Inbox image URL", // optional. Изображение, которое будет показано рядом с сообщением. "inbox_date": "2017-02-02" // optional. Укажите, когда удалить сообщение из Inbox. // Сообщение будет удалено из Inbox в 00:00:01 UTC // указанной даты, поэтому предыдущая дата — это последний // день, когда пользователь может видеть сообщение в своем Inbox. // Если не указано, дата удаления по умолчанию — следующий // день после даты отправки. }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // required. Токен доступа API из Панели управления Pushwoosh "devices_filter": "FILTER CONDITION", "send_date": "now", // optional. ГГГГ-ММ-ДД ЧЧ:мм ИЛИ 'now' "content": { // optional. Объект ИЛИ строка. "en": "English", // Используйте "wns_content" для Windows. "de": "Deutsch" }, "ignore_user_timezone": true, // optional. "timezone": "America/New_York", // optional. Если не указано, по умолчанию для "send_date" используется UTC-0. // Больше информации https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // optional. Код кампании, к которой вы хотите привязать это push-уведомление.
// Параметры, связанные с iOS "ios_badges": 5, // optional. Число на иконке приложения iOS. // Используйте "+n" или "-n" для увеличения/уменьшения значения на n. "ios_sound": "sound file.wav", // optional. Имя звукового файла в основном бандле приложения. // Если оставить пустым, устройство не будет воспроизводить звук // при получении push-уведомления. "ios_sound_off": true, // optional. Включить/отключить звук, установленный полем "ios_sound". "ios_ttl": 3600, // optional. Параметр времени жизни — максимальное время жизни сообщения в секундах. "ios_silent": 1, // optional. Включает тихие уведомления (игнорирует "sound" и "content"). "ios_category_id": "1", // optional. ID категории iOS8 из Pushwoosh. "ios_category_custom": "category", // optional. Пользовательская категория APNS. "ios_root_params": { // optional. Параметры корневого уровня для словаря aps. "aps": { "content-available": "0", // optional. Установите "1" для отправки тихого push-уведомления и "0" для обычного. "mutable-content": 1 // required для медиавложений в iOS10+. }, "attachment": "YOUR_ATTACHMENT_URL", // URL-адрес медиавложения для iOS10+. "data": {} // optional. Пользовательские данные, макс. 4 КБ }, "apns_trim_content": 1, // optional. (0|1) Обрезает слишком длинные строки контента, добавляя многоточие. "ios_title": { // optional. Добавляет заголовок для push-уведомления iOS. "en": "title" }, "ios_subtitle": { // optional. Добавляет подзаголовок для push-уведомления iOS. "en": "subTitle" }, "ios_content": { // optional. Добавляет содержимое для push-уведомления iOS. "en": "content" },
// Параметры, связанные с Android "android_root_params": { // optional. Пользовательский объект ключ-значение. "key": "value" // Параметры корневого уровня для получателей полезной нагрузки Android. }, "android_sound": "soundfile", // optional. Без расширения файла. Если оставить пустым, устройство // не будет воспроизводить звук при получении push-уведомления. "android_sound_off": true, // optional. Включить/отключить звук, установленный полем "android_sound" "android_header": { // optional. Объект ИЛИ строка. Заголовок уведомления Android. "en": "header" }, "android_content": { // optional. Объект ИЛИ строка. Содержимое уведомления Android. "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // optional. Полный URL-адрес файла изображения. "android_banner": "URL.png", // optional. Полный URL-адрес файла изображения. "android_badges": 5, // optional. integer. Число на иконке приложения Android. // Используйте "+n" или "-n" для увеличения/уменьшения значения на n. "android_gcm_ttl": 3600, // optional. Параметр времени жизни — максимальное время жизни сообщения в секундах. "android_vibration": 0, // optional. Принудительная вибрация Android для push-уведомлений с высоким приоритетом. "android_led": "#rrggbb", // optional. HEX-цвет светодиода, устройство постарается максимально точно его воспроизвести. "android_priority": -1, // optional. Устанавливает параметр "importance" для устройств с Android 8.0 // и выше, а также параметр "priority" для устройств // с Android 7.1 и ниже. Устанавливает уровень прерывания // для канала уведомлений или конкретного уведомления. // Допустимые значения: -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // optional. "normal" или "high". Включает доставку уведомлений // когда устройство находится в режиме энергосбережения. "android_ibc": "#RRGGBB", // optional. цвет фона иконки на Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow" и т.д. "android_silent": 1, // optional. 0 или 1. Включить тихое уведомление. // Игнорировать звук и содержимое
// Параметры, связанные с Amazon "adm_root_params": { // optional. Пользовательский объект ключ-значение "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // optional. Включить/отключить звук, установленный полем "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, // optional. Параметр времени жизни — максимальное время жизни сообщения // в секундах. "adm_priority": -1, // optional. Приоритет push-уведомления в панели уведомлений 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, // optional. Параметр времени жизни — максимальное время жизни сообщения в секундах. "mac_title": { // optional. Добавляет заголовок для push-уведомления. "en": "title" }, "mac_subtitle": { // optional. Добавляет подзаголовок для push-уведомления MacOS. "en": "subtitle" }, "mac_content": { // optional. Добавляет содержимое для push-уведомления MacOS. "en": "content" },
// Параметры, связанные с Windows "wns_content": { // required. Содержимое (XML или raw) уведомления, закодированное // в MIME base64 в виде объекта ИЛИ строки "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // optional. Используется в политике замены плиток. // Буквенно-цифровая строка не более 16 символов. "wns_cache": 1, // optional. (1|0) Преобразуется в значение X-WNS-Cache-Policy. "wns_ttl": 600, // optional. Время истечения срока действия уведомления в секундах.
// Параметры, связанные с Safari "safari_title": { // optional. Объект ИЛИ строка. Заголовок уведомления. "en": "title" }, "safari_content": { // optional. Объект ИЛИ строка. Содержимое уведомления. "en": "content" }, "safari_action": "Click here", // optional. "safari_url_args": [ // required. но значение может быть пустым "firstArgument", "secondArgument" ], "safari_ttl": 3600, // optional. Параметр времени жизни — максимальное // время жизни сообщения в секундах.
// Параметры, связанные с Chrome "chrome_title": { // optional. Вы можете указать заголовок сообщения в этом параметре. "en": "title" }, "chrome_content": { // optional. Вы можете указать содержимое сообщения в этом параметре. "en": "content" }, "chrome_icon": "icon_URL", // optional. Полный URL-адрес иконки или путь к файлу в ресурсах расширения "chrome_gcm_ttl": 3600, // optional. Параметр времени жизни – максимальное время жизни сообщения в секундах. "chrome_duration": 20, // optional. Изменяет время отображения push-уведомления в Chrome. Установите 0, чтобы отображать push-уведомление, // пока пользователь не взаимодействует с ним. "chrome_image": "image_URL", // optional. URL-адрес большого изображения "chrome_root_params": { // optional. Установить параметры, специфичные для сообщений, отправляемых в Chrome. "key": "value" }, "chrome_button_text1": "text1", // optional. "chrome_button_url1": "button1_URL", // optional. Игнорируется, если chrome_button_text1 не установлен. "chrome_button_text2": "text2", // optional. "chrome_button_url2": "button2_url", // optional. Игнорируется, если chrome_button_text2 не установлен.
// Параметры, связанные с Firefox "firefox_title": { // optional. Объект ИЛИ строка. Здесь можно указать заголовок сообщения. "en": "title" }, "firefox_content": { // optional. Объект ИЛИ строка. Здесь можно указать содержимое сообщения. "en": "content" }, "firefox_icon": "icon_URL", // optional. Полный URL-адрес иконки или путь // к файлу в ресурсах расширения. "firefox_root_params": { // optional. Установить параметры, специфичные для сообщений, отправляемых в 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Очень важно понимать, что теги являются общими для всех приложений, и это представляет собой очень мощный инструмент для сегментации и фильтрации ваших целевых пользователей без привязки к конкретному приложению.
Тег может быть одного из трех разных типов: String, Integer, List. Тип тега определяет, какие операторы вы можете использовать для конкретного тега.
Строковые теги
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
Получает историю сообщений с деталями push-уведомлений.
Тело запроса
Anchor link to| Название | Тип | Описание |
|---|---|---|
| auth* | string | Токен доступа API из Панели управления Pushwoosh. |
| limitMessages | integer | Ограничивает количество сообщений в ответе. Возможные значения от 10 до 1000. |
| source | string | Источник истории push-уведомлений. Может быть 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", // required. Токен доступа API из Панели управления Pushwoosh "source": null, // optional. Возможные значения: null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // optional. Возможные значения: "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // optional. Значение поиска, установленное в соответствии с полем "searchBy". "lastNotificationID": 0, // optional. Используется для пагинации. Последний messageId из // предыдущего вызова /getPushHistory. Подробности ниже. "limitMessages": 1000 // optional. Возможные значения от 10 до 1000. }}Этот метод вернет 1000 сообщений из аккаунта, отсортированных по Id сообщения. Чтобы получить вторую страницу, укажите последний Id сообщения из предыдущего ответа в параметре lastNotificationId.
Типы данных ответа
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]] | "" Пример: '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", // required. Токен доступа API из Панели управления Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // required. Код сообщения, полученный в ответе /createMessage }}Коды состояния:
| Код состояния HTTP | status_code | Описание |
|---|---|---|
| 200 | 200 | Сообщение успешно отменено |
| 200 | 210 | Ошибка аргумента. См. status_message для получения дополнительной информации. |
| 400 | N/A | Неверно сформированная строка запроса |
| 500 | 500 | Внутренняя ошибка |