انتقل إلى المحتوى

واجهة برمجة تطبيقات الرسائل (Messages API)

createMessage

Anchor link to

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

ينشئ إشعار دفع جديد.

نص الطلب

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 application code.
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel.
"notifications": [{
"send_date": "now", // optional. YYYY-MM-DD HH:mm OR 'now'
"content": { // optional. object OR string.
"en": "English", // Use "wns_content" instead for Windows.
"fr": "French"
},
"title": { // optional. object OR string.
"en": "Title", // Ignored if platform-specific titles are specified
"fr": "Titre" // 'ios_title', 'android_header', etc.
}, // see the platform-specific parameters examples below.
"subtitle":{ // optional. object OR string.
"en": "Subtitle", // Ignored if platform-specific titles are specified
"fr": "Sous-titre" // 'ios_subtitle', etc.
}, // see the platform-specific parameters examples below.
"ignore_user_timezone": true, // optional.
"timezone": "America/New_York", // optional. If ignored UTC-0 is default for "send_date".
// See https://php.net/manual/timezones.php for
// supported timezones.
"campaign": "CAMPAIGN_CODE", // optional. Campaign code to which you want to
// assign this push message.
"geozone": { // optional. Send to Geozone
"lat": 22.22,
"lng": 33.33,
"range": 110
},
"rich_media": "XXXXX-XXXXX", // optional. Copy the Rich Media code from the URL bar of
// the Rich Media editor page in Pushwoosh Control Panel.
"link": "https://google.com", // optional. For deeplinks add "minimize_link": 0
"minimize_link": 0, // optional. 0 — do not minimize, 2 — bitly. Default = 2.
// Please note that shorteners have restrictions
// on a number of calls.
"data": { // optional. JSON string or JSON object, will be passed as
"key": "value" // "u" parameter in the payload (converted to JSON string).
},
"transactionId": "unique UUID", // optional. Unique message identifier to prevent duplicating
// in case of network problems. Stored on the side of
// Pushwoosh for 5 minutes.
"platforms": [ // optional. 1 — iOS; 3 — Android; 7 — Mac OS X; 8 — Windows;
1, 3, 7, 8, 9, 10, // 9 — Amazon; 10 — Safari; 11 — Chrome;
11, 12, 17 // 12 — Firefox; 17 — Huawei
],
"preset": "XXXXX-XXXXX", // optional. Push Preset Code from your Control Panel.
// If specific params are sent in the request,
// they override preset's params.
"send_rate": 100, // optional. Throttling. Valid values are from 100 to 1000 pushes/second.
"send_rate_avoid": true, // optional. If set to true, throttling limit will not be applied to
// this specific push notification.
// Templating related, please refer to the Template Engine guide to learn more
"template_bindings": { // optional.
"TemplatePlaceholder": "Value"
},
"dynamic_content_placeholders": { // optional. Placeholders for dynamic content instead of device tags.
"firstname": "John",
"lastname": "Doe"
},
// Frequency capping params. Ensure that Global frequency capping is configured in the Control Panel.
"capping_days": 30, // optional. Amount of days for frequency capping (max 30 days)
"capping_count": 10, // optional. The max number of pushes that can be sent from a
// specific app to a particular device within a 'capping_days'
// period. In case the message created exceeds the
// 'capping_count' limit for a device, it won't
// be sent to that device.
"capping_exclude": true, // optional. If set to true, this push notification will not
// be counted towards the capping for future pushes.
"capping_avoid": true, // optional. If set to true, capping will not be applied to
// this specific push notification.
// To save the message to the Inbox via API, use "inbox_date" or "inbox_image".
// The message is saved when at least one of these parameters is used.
"inbox_date": "2017-02-02", // optional. Specify when to remove a message from the Inbox.
// Message will be removed from Inbox at 00:00:01 UTC
// of the date specified, so the previous date is the
// last day a user can see the message in their Inbox.
// If not specified, the default removal date is the
// next day after the send date.
"inbox_image": "Inbox image URL", // optional. The image to be shown near the message.
"inbox_days": 5, // optional. Specify when to remove a message from the
// Inbox(lifetime of an inbox message in days).
// Can be used instead of the "inbox_date" parameter.
// Up to 30 days.
"devices": [ // optional. Specify tokens or hwids to send targeted push
"hwid_XXXX" // notifications. Not more than 1000 tokens/hwids in
], // an array. If set, the message will only be sent to
// the devices on the list. Application Group for devices
// list is not allowed. iOS push tokens can only be lower case.
// User-centric push notifications
"users": [ // optional. If set, message will only be delivered to the
"user_XXXX" // specified user ID's (set via /registerUser call).
], // If specified together with devices parameter,
// the latter will be ignored. Not more than 1000 user
// ID's in an array. Application Group for users list
// is not allowed.
// Filters and conditions
"filter": "FILTER_NAME", // optional.
"conditions": [ // optional. See the remark below.
["Country", "EQ", "fr"],
["Language", "EQ", "en"]
],
"conditions_operator": "AND" // optional. Logical operator for conditions arrays.
// Possible values: AND | OR. AND is default.
}]
}
}

مثال على طلب إشعار VoIP

Anchor link to

يدعم Pushwoosh إشعارات المكالمات بنمط VoIP لنظامي iOS و Android.
أدناه يمكنك العثور على مثال لطلبات createMessage API لكل منصة.

مثال
{
"request": {
"application": "XXXXX-XXXXX", // required. Pushwoosh application code.
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel.
"notifications": [
{
"voip_push": true, // required. Parameter is required to send out a VoIP push notification.
"ios_root_params": {
"aps": {
"mutable-content": 1 // required for iOS10+ Media attachments.
},
"callerName": "CallerName", // optional. Caller name. If not specified, "unknown caller" is shown.
"video": true, // optional. Indicates whether video calls are supported.
"supportsHolding": true, // optional. Indicates whether call holding functionality is supported.
"supportsDTMF": false, // optional. Controls Dual-Tone Multi-Frequency signal support.
"callId": "42", // optional. The unique identifier of the call to cancel.
"cancelCall": true // optional. Set to "true" to cancel the call with the specified "callId".
}
}
]
}
}
مثال
{
"request": {
"application": "XXXXX-XXXXX", // required. Pushwoosh application code.
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel.
"notifications": [
{
"voip_push": true, // required. Parameter is required to send out a VoIP push notification.
"android_root_params": {
"callerName": "callerName", // optional. Caller name. If not specified, "unknown caller" is shown.
"video": true, // optional. Indicates whether video calls are supported.
"callId": 42, // optional. The unique identifier of the call to cancel.
"cancelCall": true // optional. Set to "true" to cancel the call with the specified "callId".
}
}
]
}
}

المعلمات الخاصة بالمنصة

Anchor link to

معلمات iOS

Anchor link to
مثال
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"ios_title": { // optional. Object OR string. Adds iOS specific title for push notification.
"en": "title"
},
"ios_subtitle": { // optional. Object OR string. Adds iOS specific subtitle for push notification.
"en": "subtitle"
},
"ios_content": { // optional. Object OR string. Adds iOS specific content for push notification.
"en": "content"
},
"ios_badges": 5, // optional. iOS application badge number.
// Use "+n" or "-n" to increment/decrement the badge value by n.
"ios_sound": "sound file.wav", // optional. Sound file name in the main bundle of application.
// If left empty, the device will produce a default system sound.
"ios_sound_off": true, // optional. Enable/disable sound set by "ios_sound" field.
"ios_ttl": 3600, // optional. Time to live parameter - maximum message lifespan in seconds.
"ios_silent": 1, // optional. Enables silent notifications (ignore "sound" and "content").
"ios_category_id": "1", // optional. iOS8 category ID from Pushwoosh.
"ios_root_params": { // optional. Root level parameters to the aps dictionary.
"aps": {
"content-available": "0", // optional. Set "1" to send a silent push and "0" for regular push.
"mutable-content": 1 // required for iOS10+ Media attachments.
},
"callerName": "CallerName", // optional VoIP parameter. Caller name. If not specified, "unknown caller" is shown.
"video": true, // optional VoIP parameter. Indicates whether video calls are supported.
"supportsHolding": true, // optional VoIP parameter. Indicates whether call holding functionality is supported.
"supportsDTMF": false, // optional VoIP parameter. Controls Dual-Tone Multi-Frequency signal support.
"data": {} // optional User supplied data, max of 4KB
},
"ios_attachment": "URL", // optional. Insert media content in notification.
"ios_thread_id": "some thread id", // optional. Identifier to group related notifications.
// Messages with the same thread ID will be grouped
// on the lock screen and in the Notification Center.
"ios_critical": true, // optional. Marks iOS notification as a critical alert
// playing sound even if a device is muted or
// Do Not Disturb mode is on.
"ios_category_custom": "category", // optional. Custom APNS category.
"ios_interruption_level": "active", // optional. One of "passive", "active", "time-sensitive",
// "critical". Indicates the importance and
// delivery timing of a notification. Refer to the
// One-time push guide for details.
"apns_trim_content": 1 // optional. (0|1) Trims the exceeding content strings with ellipsis.
}]
}
}

معلمات Android

Anchor link to
مثال
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"android_header": { // optional. Android notification header.
"en": "header"
},
"android_content": { // optional. Android notification content.
"en": "content"
},
"android_root_params": { // optional. Custom key-value object.
"key": "value", // Root level parameters for the android payload recipients.
"CancelID": 12345678, // optional. Cancels the push notification with the
"voip": true, // required VoIP parameter. Parameter is required to send out VoIP push notifications.
"callerName": "callerName", // optional VoIP parameter. Caller name. If not specified, "unknown caller" is shown.
"video": true, // optional VoIP parameter. Indicates whether video calls are supported.
}, // specified Message ID (get the ID from the Message History)
"android_sound": "soundfile", // optional. No file extension. If left empty,
// the device will produce a default system sound.
"android_sound_off": true, // optional. Enable/disable sound set by "android_sound" field
"android_icon": "icon.png", // optional.
"android_custom_icon": "URL.png", // optional. Full URL to the image file.
"android_banner": "URL.png", // optional. Full URL to the image file.
"android_badges": 5, // optional. Android application icon badge number.
// Use "+n" or "-n" to increment/decrement the badge value by n.
"android_gcm_ttl": 3600, // optional. Time to live parameter — maximum message lifespan in seconds.
"android_vibration": 0, // optional. Android force-vibration for high-priority pushes.
"android_led": "#rrggbb", // optional. LED hex color, device will do its best approximation.
"android_priority": -1, // optional. Sets the "importance" parameter for devices with
// Android 8.0 and higher, as well as the "priority" parameter
// for devices with Android 7.1 and lower. Establishes the
// interruption level of a notification channel or a particular
// notification. Valid values are -2, -1, 0, 1, 2.
"android_delivery_priority": "normal", // optional. "normal" or "high".
// Enables notification’s delivery when the
// device is in the power saving mode.
"android_ibc": "#RRGGBB", // optional. icon background color on Lollipop, #RRGGBB,
// #AARRGGBB, "red", "black", "yellow", etc.
"android_silent": 1, // optional. 0 or 1. Enable silent notification.
// Ignore sound and content
"android_group_id": "123" // optional. Identifier to group related notifications. Messages with
// the same thread ID will be grouped in
// the Notification Center.
}]
}
}

معلمات Huawei

Huawei
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"huawei_android_header": { // optional. Object OR string. Notification title
"en": "header"
},
"huawei_android_content": { // optional. Object OR string. Notification content
"en": "content"
},
"huawei_android_badges": true, // optional.
"huawei_android_silent": 0, // optional. 0 or 1. Enable silent notification.
// Ignore sound and content
"huawei_android_icon": "URL.png", // optional.
"huawei_android_led": "#FF0011", // optional. LED hex color, device will do its best approximation
"huawei_android_vibration": 1, // optional. Huawei force-vibration for high-priority pushes
"huawei_android_sound": "sound.wav", // optional. If left empty, the device will produce
// a default system sound
"huawei_android_sound_off": true, // optional. Enable/disable sound set by
// "huawei_android_sound" field
"huawei_android_custom_icon": "URL.png", // optional
"huawei_android_gcm_ttl": 2400, // optional. Time to live parameter - maximum
// message lifespan in seconds
"huawei_android_banner": "URL.png", // optional. Full path URL to the image file
"huawei_android_root_params": { // optional. Custom key-value object.
"key": "value" // Root-level parameters for Huawei payload recipients.
},
"huawei_android_priority": 0, // optional. Valid values: -2, -1, 0, 1, 2
"huawei_android_ibc": "#0011AA", // optional. Icon background color on Lollipop
"huawei_android_lockscreen": 1, // optional
"huawei_android_delivery_priority": "normal", // optional. "normal" or "high". Enables notification
// delivery in power saving mode
"huawei_android_group_id": "group_id" // optional. Identifier to group related notifications
}]
}
}

معلمات Safari

Anchor link to
Safari
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"safari_url_args": [ // required, but the value may be empty
"firstArgument",
"secondArgument"
],
"safari_title": { // optional. Object OR string. Title of the notification.
"en": "content"
},
"safari_content": { // optional. Object OR string. Content of the notification.
"en": "content"
},
"safari_action": "Click here", // optional.
"safari_ttl": 3600 // optional. Time to live parameter — the maximum
// lifespan of a message in seconds.
}]
}
}

معلمات Chrome

Anchor link to
Chrome
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"chrome_title": { // optional. Object OR string. You can specify the header
"en": "title" // of the message in this parameter.
},
"chrome_content": { // optional. Object OR string. You can specify the content
"en": "content" // of the message in this parameter.
},
"chrome_icon": "URL.png", // optional. Full URL to the icon or extension resources file path
"chrome_gcm_ttl": 3600, // optional. Time to live parameter – maximum message lifespan in seconds.
"chrome_duration": 20, // optional. max 50 seconds. Changes chrome push display time.
// Set to 0 to display push until user interacts with it.
"chrome_image": "image_URL", // optional. URL to large image.
"chrome_root_params": { // optional. Set parameters specific to messages sent to Chrome.
"key": "value"
},
"chrome_button_text1": "text1", // optional
"chrome_button_url1": "button1_URL", // optional. Ignored if chrome_button_text1 is not set.
"chrome_button_text2": "text2", // optional
"chrome_button_url2": "button2_url" // optional. Ignored if chrome_button_text2 is not set.
}]
}
}

معلمات Firefox

Anchor link to
Firefox
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"firefox_title": { // optional. Object OR string. You can specify message header here.
"en": "title"
},
"firefox_content": { // optional. Object OR string. You can specify message content here.
"en": "content"
},
"firefox_icon": "URL.png", // optional. Full path URL to the icon or path to the
// file in extension resources.
"firefox_root_params": { // optional. Set parameters specific to messages sent to Firefox.
"key": "value"
}
}]
}
}

معلمات Amazon

Anchor link to
Amazon
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"adm_header": { // optional. Object OR string. You can specify message header here.
"en": "header"
},
"adm_content": { // optional. Object OR string. You can specify message content here.
"en": "content"
},
"adm_root_params": { // optional. Custom key-value object
"key": "value"
},
"adm_sound": "push.mp3", // optional.
"adm_sound_off": true, // optional. Enable/disable sound set by "adm_sound" field
"adm_icon": "icon.png", // optional. Full URL to the icon.
"adm_custom_icon": "URL.png", // optional.
"adm_banner": "URL.png", // optional.
"adm_ttl": 3600, // optional. Time to live parameter — the maximum message
// lifespan in seconds.
"adm_priority": -1 // optional. Priority of the push in Amazon push drawer,
// valid values are -2, -1, 0, 1 and 2.
}]
}
}

معلمات Mac OS X

Anchor link to
Mac OS X
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"mac_title": { // optional. Object OR string. Adds Title for push notification.
"en": "title"
},
"mac_subtitle": { // optional. Adds subtitle for push notification.
"en": "subtitle"
},
"mac_content": { // optional. Adds content for push notification.
"en": "content"
},
"mac_badges": 3, // optional.
"mac_sound": "sound.caf", // optional.
"mac_sound_off": true, // optional. Enable/disable sound set by "mac_sound" field
"mac_root_params": { // optional.
"content-available": 1
},
"mac_ttl": 3600 // optional. Time to live parameter — maximum message lifespan in seconds.
}]
}
}

معلمات Windows

Anchor link to
Windows
{
"request": {
"application": "12345-67891", // required. Pushwoosh application code
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"notifications": [{
"wns_content": { // required. Content (XML or raw) of notification encoded in MIME's base64
// in form of Object OR String
"en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==",
"de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4="
},
"wns_type": "Badge", // optional. 'Tile' | 'Toast' | 'Badge' | 'Raw'
"wns_tag": "myTag", // optional. Used in Tile replacement policy.
// An alphanumeric string of no more than 16 characters.
"wns_cache": 1, // optional. (1|0) Translates into X-WNS-Cache-Policy value.
"wns_ttl": 600 // optional. Expiration time for notification in seconds.
}]
}
}

الاستجابة:

رمز حالة HTTPstatus_codeالوصف
200200تم إنشاء الرسالة بنجاح
200210خطأ في الوسيط. انظر status_message لمزيد من المعلومات
400N/Aسلسلة طلب غير صالحة
500500خطأ داخلي

تتبع رسائل API

Anchor link to

لأغراض موازنة التحميل، لا نقوم بتخزين الرسائل المرسلة عبر API مع معلمة “devices” التي تحتوي على أقل من 10 أجهزة في مصفوفة. ولهذا السبب، لن يتم عرض هذه الرسائل في سجل الرسائل الخاص بك.

لرؤية تقارير الدفع أثناء مرحلة الاختبار، استخدم تتبع رسائل API. يتيح لك تشغيل هذا الخيار ON تجاوز هذا الحد لمدة ساعة واحدة وحفظ هذه الإشعارات في سجل الرسائل. يتم إيقاف تشغيل تتبع رسائل API تلقائيًا بعد ساعة واحدة.

يمكن تفعيل تتبع رسائل API من صفحة سجل الرسائل بالنقر على بدء تتبع رسائل API في الزاوية اليمنى العليا.

شروط الوسوم (Tags)

Anchor link to

كل شرط وسم هو مصفوفة مثل [tagName, operator, operand] حيث

  • tagName: اسم الوسم
  • operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
  • operand: string | integer | array | date

وصف المشغل (Operator)

Anchor link to
  • EQ: قيمة الوسم تساوي المعامل؛
  • IN: قيمة الوسم تتقاطع مع المعامل (يجب أن يكون المعامل دائمًا مصفوفة)؛
  • NOTEQ: قيمة الوسم لا تساوي المعامل؛
  • NOTIN: قيمة الوسم لا تتقاطع مع المعامل (يجب أن يكون المعامل دائمًا مصفوفة)؛
  • GTE: قيمة الوسم أكبر من أو تساوي المعامل؛
  • LTE: قيمة الوسم أقل من أو تساوي المعامل؛
  • BETWEEN: قيمة الوسم أكبر من أو تساوي قيمة المعامل الدنيا ولكنها أقل من أو تساوي قيمة المعامل القصوى (يجب أن يكون المعامل دائمًا مصفوفة)؛
  • NOTSET: الوسم غير معين. لا يتم النظر في المعامل؛
  • ANY: الوسم له أي قيمة. لا يتم النظر في المعامل.

وسوم السلاسل النصية (String tags)

Anchor link to

المشغلات الصالحة: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
المعاملات الصالحة:

  • EQ, NOTEQ: يجب أن يكون المعامل سلسلة نصية؛
  • IN, NOTIN: يجب أن يكون المعامل مصفوفة من السلاسل النصية مثل ["value 1", "value 2", "value N"]؛
  • NOTSET: الوسم غير معين. لا يتم النظر في المعامل؛
  • ANY: الوسم له أي قيمة. لا يتم النظر في المعامل.

وسوم الأعداد الصحيحة (Integer tags)

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: الوسم له أي قيمة. لا يتم النظر في المعامل.

وسوم التاريخ (Date tags)

Anchor link to

المشغلات الصالحة: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
المعاملات الصالحة:

  • "YYYY-MM-DD 00:00" (string)
  • الطابع الزمني يونكس 1234567890 (integer)
  • "N days ago" (string) للمشغلات EQ, BETWEEN, GTE, LTE

وسوم القيم المنطقية (Boolean tags)

Anchor link to

المشغلات الصالحة: EQ, NOTSET, ANY
المعاملات الصالحة: 0, 1, true, false

وسوم القوائم (List tags)

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

يحذف رسالة مجدولة.

نص الطلب

Anchor link to
الاسمالنوعالوصف
auth*stringرمز الوصول إلى API من لوحة تحكم Pushwoosh.
message*stringرمز الرسالة الذي تم الحصول عليه في طلب /createMessage.
{
"status_code": 200,
"status_message": "OK"
}
مثال
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"message": "xxxx-xxxxxxx-xxxxxx" // required. Message code obtained in /createMessage
}
}

رموز الحالة:

رمز حالة HTTPstatus_codeالوصف
200200تم حذف الرسالة بنجاح
200210خطأ في الوسيط. انظر 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رمز الرسالة أو معرف الرسالة.
{
"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 access token from Pushwoosh Control Panel
"message": "xxxx-xxxxxxx-xxxxxx" // required. message code or message ID
}
}

createTargetedMessage

Anchor link to

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

ينشئ إشعار دفع مستهدف جديد.

نص الطلب

Anchor link to
الاسمالنوعالوصف
auth*stringرمز الوصول إلى API من لوحة تحكم Pushwoosh.
devices_filter*stringانظر الملاحظة أدناه.
send_date*stringYYYY-MM-DD HH:mm أو ‘now’.
ignore_user_timezonebooleanإذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ “send_date”.
timezonestringإذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ “send_date”.
campaignstringرمز الحملة التي تريد تعيين رسالة الدفع هذه إليها.
content*stringمحتوى الإشعار. انظر مثال الطلب للحصول على التفاصيل.
transactionIdstringمعرف رسالة فريد لمنع تكرار الرسائل في حالة وجود مشاكل في الشبكة. يتم تخزينه على جانب Pushwoosh لمدة 5 دقائق.
linkstringالرابط الذي سيتم فتحه بمجرد أن يفتح المستخدم رسالة الدفع.
minimize_linkinteger0 - لا تقم بالتقصير، 2 - bit.ly. الافتراضي = 2.
dataobjectسلسلة JSON أو كائن JSON. سيتم تمريره كمعلمة “u” في الحمولة (يتم تحويله إلى سلسلة JSON).
presetstringرمز الإعداد المسبق.
send_rateintegerتقييد المعدل. القيم الصالحة هي من 100 إلى 1000 دفعة في الثانية.
inbox_datestringحدد متى تتم إزالة رسالة من صندوق الوارد.
inbox_imagestringعنوان URL للصورة التي سيتم عرضها بجوار الرسالة في صندوق الوارد.
{
"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", // required. API access token from Pushwoosh Control Panel
"devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // required. Syntax explained below
"send_date": "now", // optional. YYYY-MM-DD HH:mm OR 'now'
"ignore_user_timezone": true, // optional.
"timezone": "America/New_York", // optional. If ignored UTC-0 is default for "send_date".
// More info https://php.net/manual/timezones.php.
"campaign": "CAMPAIGN_CODE", // optional. Campaign code to which you want to assign this push message.
"content": { // optional. Object OR string. Use "wns_content" instead for Windows.
"en": "English",
"de": "Deutsch"
},
"transactionId": "unique UUID", // optional. Unique message identifier to prevent duplicating messages
// in case of network problems. Stored on the side of
// Pushwoosh for 5 minutes.
"rich_media": "XXXXX-XXXXX", // optional. Copy the Rich Media code from the URL bar of the
// Rich Media editor page in Pushwoosh Control Panel.
"link": "https://google.com", // optional. For deeplinks add "minimize_link": 0
"minimize_link": 0, // optional. 0 — do not minimize, 2 — bitly. Default = 2.
// Google URL shortener is disabled since March 30, 2019.
// Please note that shorteners have restrictions
// on a number of calls.
"data": { // optional. JSON string or JSON object.
"key": "value" // Will be passed as "u" parameter in the payload
}, // (converted to JSON string).
"preset": "XXXXX-XXXXX", // optional. Push Preset Code from your Control Panel.
"send_rate": 100, // optional. Throttling. Valid values are from 100 to 1000 pushes/second.
"dynamic_content_placeholders": { // optional. Placeholders for dynamic content instead of device tags.
"firstname": "John",
"lastname": "Doe"
},
// To save the message to the Inbox via API, use "inbox_date" or "inbox_image".
// The message is saved when at least one of these parameters is used.
"inbox_image": "Inbox image URL", // optional. The image to be shown near the message.
"inbox_date": "2017-02-02" // optional. Specify when to remove a message from the Inbox.
// Message will be removed from Inbox at 00:00:01 UTC of
// the date specified, so the previous date is the last
// day a user can see the message in their Inbox.
// If not specified, the default removal date is the next
// day after the send date.
}
}

الأساسيات بسيطة جدًا - يتم تنفيذ جميع المرشحات على مجموعات من الكيانات.

المجموعات

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, \"\") – يستهدف الأجهزة التي لا تحتوي على قيمة لوسم الاسم.

يمكنك استخدام قيم رقمية مع وسوم السلاسل النصية، ولكن سيتم تحويل هذه القيم إلى سلسلة نصية.

وسوم الأعداد الصحيحة

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
  • “+” – يجمع مجموعتين (يساوي OR)
  • “*” – يقاطع مجموعتين (يساوي AND)
  • “\” – يطرح مجموعة من أخرى (يساوي NOT)

جميع العمليات ترابطية من اليسار. ”+” و ”*” لهما نفس الأولوية. "" لها أولوية أكبر. يمكنك استخدام الأقواس لتحديد أولويات الحسابات.

لاحظ أن عملية "" ليست تبادلية. 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

يحصل على سجل الرسائل مع تفاصيل الدفع.

نص الطلب

Anchor link to
الاسمالنوعالوصف
auth*stringرمز الوصول إلى API من لوحة تحكم Pushwoosh.
limitMessagesintegerيحد من عدد الرسائل في الاستجابة. القيم الممكنة من 10 إلى 1000.
sourcestringمصدر سجل الدفع. يمكن أن يكون 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", // required. API access token from Pushwoosh Control Panel
"source": null, // optional. Possible values are null, "CP", "API", "GeoZone",
// "RSS", "AutoPush", "A/B Test"
"searchBy": "applicationCode", // optional. Possible values are "", "notificationID",
// "notificationCode", "applicationCode", "campaignCode"
"value": "C8717-703F2", // optional. Search value set according to the "searchBy" field.
"lastNotificationID": 0, // optional. Used for pagination. Last messageId from the
// previous /getPushHistory call. See details below.
"limitMessages": 1000 // optional. Possible value from 10 to 1000.
}
}

سيعيد هذا الأسلوب 1000 رسالة من الحساب مرتبة حسب معرف الرسالة. للحصول على الصفحة الثانية، حدد آخر معرف رسالة من الاستجابة السابقة في معلمة 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

يحذف رسالة مجدولة.

نص الطلب

Anchor link to
الاسمالنوعالوصف
auth*stringرمز الوصول إلى API من لوحة تحكم Pushwoosh.
message*stringرمز الرسالة الذي تم الحصول عليه في استجابة /createMessage.
{
"status_code":200,
"status_message":"OK"
}
مثال
{
"request":{
"auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
"message": "xxxx-xxxxxxx-xxxxxx" // required. The message code obtained in /createMessage response
}
}

رموز الحالة:

رمز حالة HTTPstatus_codeالوصف
200200تم إلغاء الرسالة بنجاح
200210خطأ في الوسيط. انظر status_message لمزيد من المعلومات.
400N/Aسلسلة طلب غير صالحة
500500خطأ داخلي