Перейти к содержанию

Messages API

createMessage Устарел

Anchor link to

POST 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", // необязательно. ГГГГ-ММ-ДД ЧЧ:мм ИЛИ '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 из адресной строки
// страницы редактора 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", // необязательно. Код пресета для push-уведомлений из вашей Панели управления.
// Если в запросе отправлены конкретные параметры,
// они переопределяют параметры пресета.
"send_rate": 100, // необязательно. Регулирование скорости. Допустимые значения от 100 до 1000 push-уведомлений/секунду.
"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, // необязательно. Максимальное количество push-уведомлений, которое может быть отправлено из
// конкретного приложения на определенное устройство в течение периода 'capping_days'.
// В случае, если созданное сообщение превышает
// лимит 'capping_count' для устройства, оно не будет
// отправлено на это устройство.
"capping_exclude": true, // необязательно. Если установлено значение true, это push-уведомление не будет
// учитываться при ограничении для будущих push-уведомлений.
"capping_avoid": true, // необязательно. Если установлено значение true, ограничение не будет применяться к
// этому конкретному push-уведомлению.
// Чтобы сохранить сообщение во Входящие через API, используйте "inbox_date" или "inbox_image".
// Сообщение сохраняется, когда используется хотя бы один из этих параметров.
"inbox_date": "2017-02-02", // необязательно. Укажите, когда удалить сообщение из Входящих.
// Сообщение будет удалено из Входящих в 00:00:01 UTC
// указанной даты, поэтому предыдущая дата является
// последним днем, когда пользователь может видеть сообщение в своих Входящих.
// Если не указано, дата удаления по умолчанию -
// следующий день после даты отправки.
"inbox_image": "Inbox image URL", // необязательно. Изображение, которое будет показано рядом с сообщением.
"inbox_days": 5, // необязательно. Укажите, когда удалить сообщение из
// Входящих (срок жизни сообщения во входящих в днях).
// Может использоваться вместо параметра "inbox_date".
// До 30 дней.
"devices": [ // необязательно. Укажите токены или hwid для отправки целевых push-уведомлений.
"hwid_XXXX" // Не более 1000 токенов/hwid в
], // массиве. Если установлено, сообщение будет отправлено только на
// устройства из списка. Группа приложений для списка устройств
// не допускается. Push-токены iOS могут быть только в нижнем регистре.
"to": [ // необязательно. Для email, SMS и подобных каналов. Список получателей
"email_1", "email_2" // (например, адреса электронной почты, номера телефонов). Максимум 1000 элементов.
], // Для push-уведомлений используйте "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 to

Pushwoosh поддерживает уведомления о вызовах в стиле 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".
}
}
]
}
}
Пример
{
"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" для отправки тихого push-уведомления и "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". Указывает на важность и
// время доставки уведомления. Подробности см. в
// руководстве по одноразовым push-уведомлениям.
"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 для push-уведомлений с высоким приоритетом.
"android_led": "#rrggbb", // необязательно. Шестнадцатеричный цвет светодиода, устройство сделает все возможное для аппроксимации.
"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", // необязательно. Идентификатор для группировки связанных уведомлений. Сообщения с
// одинаковым thread ID будут сгруппированы в
// Центре уведомлений.
"android_collapse_key": "promo" // необязательно. Ключ сворачивания FCM. Уведомления с одинаковым
// ключом сворачивания заменяют друг друга, пока устройство находится в автономном режиме.
}]
}
}

Параметры Huawei

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", // необязательно. Шестнадцатеричный цвет светодиода, устройство сделает все возможное для аппроксимации
"huawei_android_vibration": 1, // необязательно. Принудительная вибрация Huawei для push-уведомлений с высоким приоритетом
"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
Safari
{
"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
Chrome
{
"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 секунд. Изменяет время отображения push-уведомления в Chrome.
// Установите 0, чтобы push-уведомление отображалось до тех пор, пока пользователь не взаимодействует с ним.
"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
Firefox
{
"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
Amazon
{
"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 // необязательно. Приоритет push-уведомления в панели push-уведомлений Amazon,
// допустимые значения: -2, -1, 0, 1 и 2.
}]
}
}

Параметры Mac OS X

Anchor link to
Mac OS X
{
"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
Windows
{
"request": {
"application": "12345-67891", // обязательно. Код приложения Pushwoosh
"auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа к API из Панели управления Pushwoosh
"notifications": [{
"wns_content": { // обязательно. Контент (XML или raw) уведомления, закодированный в MIME's base64
// в виде объекта ИЛИ строки
"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 // необязательно. Время истечения срока действия уведомления в секундах.
}]
}
}

Ответ:

Код состояния HTTPstatus_codeОписание
200200Сообщение успешно создано
200210Ошибка аргумента. См. status_message для получения дополнительной информации
400N/AНеверно сформированная строка запроса
500500Внутренняя ошибка

Трассировка сообщений API

Anchor link to

В целях балансировки нагрузки мы не храним сообщения, отправленные через API с параметром “devices”, который содержит менее 10 устройств в массиве. Из-за этого такие сообщения не будут отображаться в вашей Истории сообщений.

Чтобы видеть отчеты по push-уведомлениям на этапе тестирования, используйте трассировку сообщений API. Включение этой опции позволяет вам преодолеть это ограничение на 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
Допустимые операнды:

  • "ГГГГ-ММ-ДД 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
#Usage
if [ ! -n "$1" ] || [ ! -n "$2" ]
then
echo "`basename $0` usage: api_token appid message";
exit 1;
fi;
MESSAGE="$3";
if [ -z "$3" ]
then
MESSAGE='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;

deleteMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/deleteMessage

Удаляет сообщение, независимо от того, запланировано оно еще или уже отправлено. Для запланированного сообщения это также немедленно удаляет его из Истории сообщений — для уже отправленного сообщения см. предостережение ниже.

Последующие отправки, созданные из сообщения с помощью Повторной отправки неоткрывшим, не затрагиваются — удалите или отмените каждую из них отдельно.

Используйте /cancelMessage вместо этого, если вы хотите остановить отправку, но сохранить сообщение в Истории сообщений со статусом canceled.

Тело запроса

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
}
}

Коды состояния:

Код состояния HTTPstatus_codeОписание
200200Сообщение успешно удалено
200210Ошибка аргумента, например, сообщение все еще находится в статусе creating. См. status_message для получения дополнительной информации
400N/AНеверно сформированная строка запроса
500500Внутренняя ошибка
<?php
// see https://gomoob.github.io/php-pushwoosh/delete-message.html
use 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 to

POST 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 to

POST 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_timezonebooleanЕсли проигнорировано, по умолчанию для “send_date” используется UTC-0.
timezonestringЕсли проигнорировано, по умолчанию для “send_date” используется UTC-0.
campaignstringКод кампании, к которой вы хотите привязать это push-сообщение.
content*stringКонтент уведомления. Подробности см. в примере запроса.
transactionIdstringУникальный идентификатор сообщения для предотвращения дублирования сообщений в случае проблем с сетью. Хранится на стороне Pushwoosh в течение 5 минут.
linkstringСсылка, которая будет открыта после того, как пользователь откроет push-сообщение.
minimize_linkinteger0 - не сокращать, 2 - bit.ly. По умолчанию = 2.
dataobjectСтрока JSON или объект JSON. Будет передан как параметр “u” в полезной нагрузке (преобразован в строку JSON).
presetstringКод пресета.
send_rateintegerРегулирование скорости. Допустимые значения от 100 до 1000 push-уведомлений в секунду.
inbox_datestringУкажите, когда удалить сообщение из Входящих.
inbox_imagestringURL изображения, которое будет показано рядом с сообщением во Входящих.
{
"status_code": 200,
"status_message": "OK",
"response": {
"messageCode": "97B0-C7473871-2FBDFDC6"
}
}

Больше примеров ответов:

{
"status_code": 210,
"status_message": "Errors occurred while compiling filter",
"response": {
"errors": [{
"message": "Invalid tag set specification. \")\" expected.",
"type": "syntax"
}]
}
}
Пример
{
"request": {
"auth": "yxoPUlwqm…………pIyEX4H", // обязательно. Токен доступа к API из Панели управления Pushwoosh
"devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // обязательно. Синтаксис объяснен ниже
"send_date": "now", // необязательно. ГГГГ-ММ-ДД ЧЧ:мм ИЛИ '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 из адресной строки
// страницы редактора 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", // необязательно. Код пресета для push-уведомлений из вашей Панели управления.
"send_rate": 100, // необязательно. Регулирование скорости. Допустимые значения от 100 до 1000 push-уведомлений/секунду.
"dynamic_content_placeholders": { // необязательно. Плейсхолдеры для динамического контента вместо тегов устройства.
"firstname": "John",
"lastname": "Doe"
},
// Чтобы сохранить сообщение во Входящие через API, используйте "inbox_date" или "inbox_image".
// Сообщение сохраняется, когда используется хотя бы один из этих параметров.
"inbox_image": "Inbox image URL", // необязательно. Изображение, которое будет показано рядом с сообщением.
"inbox_date": "2017-02-02" // необязательно. Укажите, когда удалить сообщение из Входящих.
// Сообщение будет удалено из Входящих в 00:00:01 UTC
// указанной даты, поэтому предыдущая дата является последней
// днем, когда пользователь может видеть сообщение в своих Входящих.
// Если не указано, дата удаления по умолчанию - следующий
// день после даты отправки.
}
}

Основы очень просты – все фильтры выполняются над наборами сущностей.

Наборы

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 to

POST https://api.pushwoosh.com/json/1.3/getPushHistory

Получает историю сообщений с деталями push-уведомлений.

Тело запроса

Anchor link to
ИмяТипОписание
auth*stringТокен доступа к API из Панели управления Pushwoosh.
limitMessagesintegerОграничивает количество сообщений в ответе. Возможные значения от 10 до 1000.
sourcestringИсточник истории push-уведомлений. Может быть null или: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”.
searchBystringВозможные значения для поиска. Может быть null или: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”.
valuestringЗначение для поиска, установленное в соответствии с полем “searchBy”.
lastNotificationIDstringИспользуется для пагинации. Последний 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 to
id -- int | 0
code -- string
createDate -- 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 -- string
ios_title -- string | array ( dict {lang: value} ) | null
ios_subtitle -- string | array ( dict {lang: value} ) | null
ios_root_params -- dict (JSON) | null
android_header -- string | array ( dict {lang: value} ) | null
android_root_params -- dict (JSON) | null
conditions -- list (JSON) | null
conditions_operator -- string | null
filter_code -- string | null
filter_name -- string | null
filter_conditions -- string | null
geozone -- string | null
campaignId -- string | ""
campaignName -- string | ""
subscription_segments (obsolete) -- list (JSON) | null
data -- dict (JSON) | null
open -- dict [dict [string: int]] | "" Example: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}
sent -- dict [dict [string: int]] | "" Example: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}
ctr -- dict [string: int] | "" Example: {'AAAAA-BBBBB': 1}
errors -- dict [string: int] | "" Example: {'ANDROID': 1, 'IOS': 1}

cancelMessage

Anchor link to

POST https://api.pushwoosh.com/json/1.3/cancelMessage

Отменяет отправку запланированного сообщения. Сообщение остается в Истории сообщений со статусом canceled. Последующие отправки, созданные из него с помощью Повторной отправки неоткрывшим, также отменяются.

Используйте /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
}
}

Коды состояния:

Код состояния HTTPstatus_codeОписание
200200Сообщение успешно отменено
200210Ошибка аргумента. См. status_message для получения дополнительной информации.
400N/AНеверно сформированная строка запроса
500500Внутренняя ошибка