واجهة برمجة تطبيقات الرسائل (Messages API)
createMessage
Anchor link toPOST 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", // مطلوب. رمز تطبيق Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh. "notifications": [{ "send_date": "now", // اختياري. YYYY-MM-DD HH:mm أو 'now' "content": { // اختياري. كائن أو سلسلة نصية. "en": "English", // استخدم "wns_content" بدلاً من ذلك لنظام Windows. "fr": "French" }, "title": { // اختياري. كائن أو سلسلة نصية. "en": "Title", // يتم تجاهله إذا تم تحديد عناوين خاصة بالمنصة "fr": "Titre" // 'ios_title'، 'android_header'، إلخ. }, // انظر أمثلة المعلمات الخاصة بالمنصة أدناه. "subtitle":{ // اختياري. كائن أو سلسلة نصية. "en": "Subtitle", // يتم تجاهله إذا تم تحديد عناوين خاصة بالمنصة "fr": "Sous-titre" // 'ios_subtitle'، إلخ. }, // انظر أمثلة المعلمات الخاصة بالمنصة أدناه. "ignore_user_timezone": true, // اختياري. "timezone": "America/New_York", // اختياري. إذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ "send_date". // انظر https://php.net/manual/timezones.php لـ // المناطق الزمنية المدعومة. "campaign": "CAMPAIGN_CODE", // اختياري. رمز الحملة الذي تريد // تعيين رسالة الدفع هذه إليه. "geozone": { // اختياري. إرسال إلى Geozone "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // اختياري. انسخ رمز Rich Media من شريط URL لـ // صفحة محرر Rich Media في لوحة تحكم Pushwoosh. "link": "https://google.com", // اختياري. للروابط العميقة أضف "minimize_link": 0 "minimize_link": 0, // اختياري. 0 — عدم التصغير، 2 — bitly. الافتراضي = 2. // يرجى ملاحظة أن خدمات تقصير الروابط لديها قيود // على عدد الاستدعاءات. "data": { // اختياري. سلسلة JSON أو كائن JSON، سيتم تمريره كـ "key": "value" // معلمة "u" في الحمولة (محولة إلى سلسلة JSON). }, "transactionId": "unique UUID", // اختياري. معرف رسالة فريد لمنع التكرار // في حالة وجود مشاكل في الشبكة. يتم تخزينه على جانب // Pushwoosh لمدة 5 دقائق. "platforms": [ // اختياري. 1 — iOS؛ 3 — Android؛ 7 — Mac OS X؛ 8 — Windows؛ 1, 3, 7, 8, 9, 10, // 9 — Amazon؛ 10 — Safari؛ 11 — Chrome؛ 11, 12, 17 // 12 — Firefox؛ 17 — Huawei ], "preset": "XXXXX-XXXXX", // اختياري. رمز الإعداد المسبق للدفع من لوحة التحكم الخاصة بك. // إذا تم إرسال معلمات محددة في الطلب، // فإنها تتجاوز معلمات الإعداد المسبق. "send_rate": 100, // اختياري. التحكم في معدل الإرسال. القيم الصالحة هي من 100 إلى 1000 دفعة/ثانية. "send_rate_avoid": true, // اختياري. إذا تم التعيين إلى true، فلن يتم تطبيق حد التحكم في معدل الإرسال على // إشعار الدفع المحدد هذا. // متعلق بالقوالب، يرجى الرجوع إلى دليل محرك القوالب لمعرفة المزيد "template_bindings": { // اختياري. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // اختياري. عناصر نائبة للمحتوى الديناميكي بدلاً من وسوم الجهاز. "firstname": "John", "lastname": "Doe" },
// معلمات تحديد التكرار. تأكد من تكوين تحديد التكرار العالمي في لوحة التحكم. "capping_days": 30, // اختياري. عدد الأيام لتحديد التكرار (بحد أقصى 30 يومًا) "capping_count": 10, // اختياري. الحد الأقصى لعدد الدفعات التي يمكن إرسالها من // تطبيق معين إلى جهاز معين خلال فترة 'capping_days' // . في حالة تجاوز الرسالة التي تم إنشاؤها // حد 'capping_count' لجهاز ما، فلن يتم // إرسالها إلى ذلك الجهاز. "capping_exclude": true, // اختياري. إذا تم التعيين إلى true، فلن يتم احتساب إشعار الدفع هذا // ضمن تحديد التكرار للدفعات المستقبلية. "capping_avoid": true, // اختياري. إذا تم التعيين إلى true، فلن يتم تطبيق تحديد التكرار على // إشعار الدفع المحدد هذا.
// لحفظ الرسالة في صندوق الوارد عبر API، استخدم "inbox_date" أو "inbox_image". // يتم حفظ الرسالة عند استخدام أحد هذه المعلمات على الأقل. "inbox_date": "2017-02-02", // اختياري. حدد متى تتم إزالة الرسالة من صندوق الوارد. // ستتم إزالة الرسالة من صندوق الوارد في الساعة 00:00:01 بالتوقيت العالمي المنسق // من التاريخ المحدد، لذا فإن التاريخ السابق هو // آخر يوم يمكن للمستخدم رؤية الرسالة فيه في صندوق الوارد الخاص به. // إذا لم يتم تحديده، فإن تاريخ الإزالة الافتراضي هو // اليوم التالي لتاريخ الإرسال. "inbox_image": "Inbox image URL", // اختياري. الصورة التي ستظهر بجوار الرسالة. "inbox_days": 5, // اختياري. حدد متى تتم إزالة الرسالة من // صندوق الوارد (عمر رسالة صندوق الوارد بالأيام). // يمكن استخدامه بدلاً من معلمة "inbox_date". // حتى 30 يومًا.
"devices": [ // اختياري. حدد الرموز أو hwids لإرسال دفعات مستهدفة "hwid_XXXX" // . لا يزيد عن 1000 رمز/hwid في ], // المصفوفة. إذا تم تعيينه، سيتم إرسال الرسالة فقط إلى // الأجهزة الموجودة في القائمة. لا يُسمح بمجموعة التطبيقات لقائمة الأجهزة // . يمكن أن تكون رموز الدفع لنظام iOS بأحرف صغيرة فقط. "to": [ // اختياري. للبريد الإلكتروني والرسائل القصيرة والقنوات المماثلة. قائمة المستلمين "email_1", "email_2" // (مثل عناوين البريد الإلكتروني، أرقام الهواتف). 1000 عنصر كحد أقصى. ], // للدفع، استخدم "devices" بدلاً من ذلك. // إشعارات الدفع المتمحورة حول المستخدم "users": [ // اختياري. إذا تم تعيينه، سيتم تسليم الرسالة فقط إلى "user_XXXX" // معرفات المستخدم المحددة (يتم تعيينها عبر استدعاء /registerUser). ], // إذا تم تحديده مع devices أو to، // سيتم تجاهل الأخير. لا يزيد عن 1000 مستخدم // في المصفوفة. لا يُسمح بمجموعة التطبيقات لقائمة المستخدمين // .
// الفلاتر والشروط "filter": "FILTER_NAME", // اختياري. "conditions": [ // اختياري. انظر الملاحظة أدناه. ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // اختياري. عامل منطقي لمصفوفات الشروط. // القيم الممكنة: AND | OR. AND هو الافتراضي. }] }}مثال على طلب إشعار VoIP
Anchor link toيدعم Pushwoosh إشعارات المكالمات بأسلوب VoIP لنظامي iOS و Android.
أدناه يمكنك العثور على أمثلة لطلبات createMessage API لكل منصة.
{ "request": { "application": "XXXXX-XXXXX", // مطلوب. رمز تطبيق Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh. "notifications": [ { "voip_push": true, // مطلوب. المعلمة مطلوبة لإرسال إشعار دفع VoIP. "ios_root_params": { "aps": { "mutable-content": 1 // مطلوب لمرفقات الوسائط في iOS10+ }, "callerName": "CallerName", // اختياري. اسم المتصل. إذا لم يتم تحديده، يتم عرض "متصل غير معروف". "video": true, // اختياري. يشير إلى ما إذا كانت مكالمات الفيديو مدعومة. "supportsHolding": true, // اختياري. يشير إلى ما إذا كانت وظيفة تعليق المكالمات مدعومة. "supportsDTMF": false, // اختياري. يتحكم في دعم إشارة التردد المتعدد ثنائي النغمة. "callId": "42", // اختياري. المعرف الفريد للمكالمة المراد إلغاؤها. "cancelCall": true // اختياري. اضبط على "true" لإلغاء المكالمة بالمعرف "callId" المحدد. } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // مطلوب. رمز تطبيق Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh. "notifications": [ { "voip_push": true, // مطلوب. المعلمة مطلوبة لإرسال إشعار دفع VoIP. "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": { // اختياري. كائن أو سلسلة نصية. يضيف عنوانًا خاصًا بـ iOS لإشعار الدفع. "en": "title" }, "ios_subtitle": { // اختياري. كائن أو سلسلة نصية. يضيف عنوانًا فرعيًا خاصًا بـ iOS لإشعار الدفع. "en": "subtitle" }, "ios_content": { // اختياري. كائن أو سلسلة نصية. يضيف محتوى خاصًا بـ 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", // اختياري. معرف فئة iOS8 من Pushwoosh. "ios_root_params": { // اختياري. معلمات المستوى الجذر لقاموس aps. "aps": { "content-available": "0", // اختياري. اضبط "1" لإرسال دفعة صامتة و "0" لدفعة عادية. "mutable-content": 1 // مطلوب لمرفقات الوسائط في iOS10+ }, "callerName": "CallerName", // معلمة VoIP اختيارية. اسم المتصل. إذا لم يتم تحديده، يتم عرض "متصل غير معروف". "video": true, // معلمة VoIP اختيارية. يشير إلى ما إذا كانت مكالمات الفيديو مدعومة. "supportsHolding": true, // معلمة VoIP اختيارية. يشير إلى ما إذا كانت وظيفة تعليق المكالمات مدعومة. "supportsDTMF": false, // معلمة VoIP اختيارية. يتحكم في دعم إشارة التردد المتعدد ثنائي النغمة. "data": {} // اختياري بيانات مقدمة من المستخدم، بحد أقصى 4 كيلوبايت }, "ios_attachment": "URL", // اختياري. إدراج محتوى وسائط في الإشعار. "ios_thread_id": "some thread id", // اختياري. معرف لتجميع الإشعارات ذات الصلة. // سيتم تجميع الرسائل التي لها نفس معرف السلسلة // على شاشة القفل وفي مركز الإشعارات. "ios_critical": true, // اختياري. يحدد إشعار iOS كتنبيه حرج // يشغل الصوت حتى لو كان الجهاز في وضع صامت أو // وضع "عدم الإزعاج" قيد التشغيل. "ios_category_custom": "category", // اختياري. فئة APNS مخصصة. "ios_interruption_level": "active", // اختياري. واحد من "passive"، "active"، "time-sensitive"، // "critical". يشير إلى أهمية // وتوقيت تسليم الإشعار. ارجع إلى // دليل الدفع لمرة واحدة للحصول على التفاصيل. "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, // اختياري. يلغي إشعار الدفع بالمعرف "voip": true, // معلمة VoIP مطلوبة. المعلمة مطلوبة لإرسال إشعارات دفع VoIP. "callerName": "callerName", // معلمة VoIP اختيارية. اسم المتصل. إذا لم يتم تحديده، يتم عرض "متصل غير معروف". "video": true, // معلمة VoIP اختيارية. يشير إلى ما إذا كانت مكالمات الفيديو مدعومة. }, // المحدد (احصل على المعرف من سجل الرسائل) "android_sound": "soundfile", // اختياري. بدون امتداد ملف. إذا ترك فارغًا، // سيصدر الجهاز صوت النظام الافتراضي. "android_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة حقل "android_sound" "android_icon": "icon.png", // اختياري. "android_custom_icon": "URL.png", // اختياري. عنوان URL كامل لملف الصورة. "android_banner": "URL.png", // اختياري. عنوان URL كامل لملف الصورة. "android_badges": 5, // اختياري. رقم شارة أيقونة تطبيق Android. // استخدم "+n" أو "-n" لزيادة/إنقاص قيمة الشارة بمقدار n. "android_gcm_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة بالثواني. "android_vibration": 0, // اختياري. اهتزاز قسري في Android للدفعات ذات الأولوية العالية. "android_led": "#rrggbb", // اختياري. لون LED سداسي عشري، سيقوم الجهاز بأفضل تقريب له. "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" // اختياري. معرف لتجميع الإشعارات ذات الصلة. الرسائل التي لها // نفس معرف السلسلة سيتم تجميعها في // مركز الإشعارات. }] }}معلمات 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", // اختياري. لون LED سداسي عشري، سيقوم الجهاز بأفضل تقريب له "huawei_android_vibration": 1, // اختياري. اهتزاز قسري في Huawei للدفعات ذات الأولوية العالية "huawei_android_sound": "sound.wav", // اختياري. إذا ترك فارغًا، سيصدر الجهاز // صوت النظام الافتراضي "huawei_android_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة // حقل "huawei_android_sound" "huawei_android_custom_icon": "URL.png", // اختياري "huawei_android_gcm_ttl": 2400, // اختياري. معلمة مدة البقاء - أقصى // عمر للرسالة بالثواني "huawei_android_banner": "URL.png", // اختياري. عنوان URL كامل المسار لملف الصورة "huawei_android_root_params": { // اختياري. كائن مفتاح-قيمة مخصص. "key": "value" // معلمات المستوى الجذر لمستلمي حمولة Huawei. }, "huawei_android_priority": 0, // اختياري. القيم الصالحة: -2، -1، 0، 1، 2 "huawei_android_ibc": "#0011AA", // اختياري. لون خلفية الأيقونة على Lollipop "huawei_android_lockscreen": 1, // اختياري "huawei_android_delivery_priority": "normal", // اختياري. "normal" أو "high". يتيح تسليم الإشعار // في وضع توفير الطاقة "huawei_android_group_id": "group_id" // اختياري. معرف لتجميع الإشعارات ذات الصلة }] }}معلمات Safari
Anchor link to{ "request": { "application": "12345-67891", // مطلوب. رمز تطبيق Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "notifications": [{ "safari_url_args": [ // مطلوب، ولكن قد تكون القيمة فارغة "firstArgument", "secondArgument" ], "safari_title": { // اختياري. كائن أو سلسلة نصية. عنوان الإشعار. "en": "content" }, "safari_content": { // اختياري. كائن أو سلسلة نصية. محتوى الإشعار. "en": "content" }, "safari_action": "Click here", // اختياري. "safari_ttl": 3600 // اختياري. معلمة مدة البقاء — أقصى // عمر للرسالة بالثواني. }] }}معلمات Chrome
Anchor link to{ "request": { "application": "12345-67891", // مطلوب. رمز تطبيق Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "notifications": [{ "chrome_title": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد رأس "en": "title" // الرسالة في هذه المعلمة. }, "chrome_content": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد محتوى "en": "content" // الرسالة في هذه المعلمة. }, "chrome_icon": "URL.png", // اختياري. عنوان URL كامل للأيقونة أو مسار ملف موارد الامتداد "chrome_gcm_ttl": 3600, // اختياري. معلمة مدة البقاء – أقصى عمر للرسالة بالثواني. "chrome_duration": 20, // اختياري. 50 ثانية كحد أقصى. يغير وقت عرض دفعة chrome. // اضبط على 0 لعرض الدفعة حتى يتفاعل المستخدم معها. "chrome_image": "image_URL", // اختياري. عنوان URL لصورة كبيرة. "chrome_root_params": { // اختياري. تعيين معلمات خاصة بالرسائل المرسلة إلى Chrome. "key": "value" }, "chrome_button_text1": "text1", // اختياري "chrome_button_url1": "button1_URL", // اختياري. يتم تجاهله إذا لم يتم تعيين chrome_button_text1. "chrome_button_text2": "text2", // اختياري "chrome_button_url2": "button2_url" // اختياري. يتم تجاهله إذا لم يتم تعيين chrome_button_text2. }] }}معلمات Firefox
Anchor link to{ "request": { "application": "12345-67891", // مطلوب. رمز تطبيق Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "notifications": [{ "firefox_title": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد رأس الرسالة هنا. "en": "title" }, "firefox_content": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد محتوى الرسالة هنا. "en": "content" }, "firefox_icon": "URL.png", // اختياري. عنوان URL كامل المسار للأيقونة أو مسار إلى // الملف في موارد الامتداد. "firefox_root_params": { // اختياري. تعيين معلمات خاصة بالرسائل المرسلة إلى Firefox. "key": "value" } }] }}معلمات Amazon
Anchor link to{ "request": { "application": "12345-67891", // مطلوب. رمز تطبيق Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "notifications": [{ "adm_header": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد رأس الرسالة هنا. "en": "header" }, "adm_content": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد محتوى الرسالة هنا. "en": "content" }, "adm_root_params": { // اختياري. كائن مفتاح-قيمة مخصص "key": "value" }, "adm_sound": "push.mp3", // اختياري. "adm_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة حقل "adm_sound" "adm_icon": "icon.png", // اختياري. عنوان URL كامل للأيقونة. "adm_custom_icon": "URL.png", // اختياري. "adm_banner": "URL.png", // اختياري. "adm_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة // بالثواني. "adm_priority": -1 // اختياري. أولوية الدفعة في درج دفعات Amazon، // القيم الصالحة هي -2، -1، 0، 1 و 2. }] }}معلمات Mac OS X
Anchor link to{ "request": { "application": "12345-67891", // مطلوب. رمز تطبيق Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "notifications": [{ "mac_title": { // اختياري. كائن أو سلسلة نصية. يضيف عنوانًا لإشعار الدفع. "en": "title" }, "mac_subtitle": { // اختياري. يضيف عنوانًا فرعيًا لإشعار الدفع. "en": "subtitle" }, "mac_content": { // اختياري. يضيف محتوى لإشعار الدفع. "en": "content" }, "mac_badges": 3, // اختياري. "mac_sound": "sound.caf", // اختياري. "mac_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة حقل "mac_sound" "mac_root_params": { // اختياري. "content-available": 1 }, "mac_ttl": 3600 // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة بالثواني. }] }}معلمات Windows
Anchor link to{ "request": { "application": "12345-67891", // مطلوب. رمز تطبيق Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "notifications": [{ "wns_content": { // مطلوب. محتوى (XML أو خام) الإشعار المشفر بـ base64 الخاص بـ MIME // في شكل كائن أو سلسلة نصية "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // اختياري. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // اختياري. يستخدم في سياسة استبدال Tile. // سلسلة أبجدية رقمية لا تزيد عن 16 حرفًا. "wns_cache": 1, // اختياري. (1|0) يترجم إلى قيمة X-WNS-Cache-Policy. "wns_ttl": 600 // اختياري. وقت انتهاء صلاحية الإشعار بالثواني. }] }}الاستجابة:
| رمز حالة HTTP | status_code | الوصف |
|---|---|---|
| 200 | 200 | تم إنشاء الرسالة بنجاح |
| 200 | 210 | خطأ في الوسيطة. انظر status_message لمزيد من المعلومات |
| 400 | N/A | سلسلة طلب غير صالحة |
| 500 | 500 | خطأ داخلي |
تتبع رسائل API
Anchor link toلأغراض موازنة التحميل، نحن لا نخزن الرسائل المرسلة عبر API مع معلمة “devices” التي تحتوي على أقل من 10 أجهزة في مصفوفة. لهذا السبب، لن يتم عرض هذه الرسائل في سجل الرسائل الخاص بك.
لرؤية تقارير الدفع أثناء مرحلة الاختبار، استخدم تتبع رسائل API. تشغيل هذا الخيار ON يسمح لك بتجاوز هذا الحد لمدة ساعة واحدة وحفظ هذه الدفعات في سجل الرسائل. يتم إيقاف تشغيل تتبع رسائل API تلقائيًا بعد ساعة واحدة.
يمكن تنشيط تتبع رسائل 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"(سلسلة نصية)- الطابع الزمني يونكس
1234567890(عدد صحيح) "N days ago"(سلسلة نصية) للعوامل EQ, BETWEEN, GTE, LTE
وسوم القيم المنطقية (Boolean)
Anchor link toالعوامل الصالحة: EQ, NOTSET, ANY
المعاملات الصالحة: 0, 1, true, false
وسوم القائمة
Anchor link toالعوامل الصالحة: IN, NOTIN, NOTSET, ANY
المعاملات الصالحة: يجب أن يكون المعامل مصفوفة من السلاسل النصية مثل ["value 1", "value 2", "value N"].
مقتطفات /createMessage
Anchor link toنماذج طلبات /createMessage:
#!/bin/bash
#Usageif [ ! -n "$1" ] || [ ! -n "$2" ]then echo "`basename $0` usage: api_token appid message"; exit 1;fi;MESSAGE="$3";if [ -z "$3" ]thenMESSAGE='One push to rule them all!'fi;
echo -e "Response:"curl --data-binary "{\"request\": {\"application\":\"$2\", \"auth\":\"$1\", \"notifications\": [{ \"send_date\": \"now\", \"content\": \"$MESSAGE\" }] }}" \-H "Content-type: application/json" \"https://api.pushwoosh.com/json/1.3/createMessage"echo "";exit 0;<?phpdefine('PW_AUTH', 'API TOKEN');define('PW_APPLICATION', 'APPLICATION CODE');define('PW_DEBUG', true);
function pwCall($method, $data) { $url = 'https://api.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]);
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request"; print "[PW] response: $response"; print '[PW] info: ' . print_r($info, true); }}
pwCall('createMessage', array( 'application' => PW_APPLICATION, 'auth' => PW_AUTH, 'notifications' => array( array( 'send_date' => 'now', 'content' => 'test', 'data' => array('custom' => 'json data'), 'link' => 'https://pushwoosh.com/' ) ) ));-module(pushwoosh).-export([run/0, stop/0, sendMessage/1]).%% وسيطة sendMessage: نص الرسالة %%
%% المصادقة و App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% KickStart %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% خيارات تفصيل عميل HTTP flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% JSON Wars !encode(S) -> encode(S, [$"]).encode([], Acc) -> lists:reverse([$" | Acc]);encode([C | Cs], Acc) -> Hex = lists:flatten(io_lib:format("~4.16.0b", [C])), encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
sendMessage(Message_text) -> %% URL to JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Method post, %%Request {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP options [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Options []), io:format("And received ~p", [Response]).class PushNotification
#- وثائق PushWoosh API 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("This is a test notification to all devices") def notify_all(message) notify_devices({:content => message}) end
# PushNotification.new.notify_device({ # :content => "TEST", # :data => {:custom_data => value}, # :devices => array_of_tokens #}) def notify_devices(notification_options = {}) #- خيارات افتراضية، قم بإلغاء التعليق على :data أو :devices إذا لزم الأمر default_notification_options = { # YYYY-MM-DD HH:mm OR 'now' :send_date => "now", # Object( language1: 'content1', language2: 'content2' ) OR string :content => { :fr => "Test", :en => "Test" }, # JSON string or JSON object "custom": "json data" #:data => { # :custom_data => value #}, # omit this field (push notification will be delivered to all the devices for the application), or provide the list of devices IDs #:devices => {} }
#- دمج مع خيارات محددة 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: # For Python 3.0 and later from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopen from urllib2 import Request
def pw_call(method, data): url = 'https://api.pushwoosh.com/json/1.3/' + method data = json.dumps({'request': data}) req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'}) try: f = urlopen(req) response = f.read() f.close() print('Pushwoosh response: ' + str(response)) except Exception as e: print ('Request error: ' + str(e))
if __name__ == '__main__': pw_call('createMessage', { 'auth': PW_AUTH, 'application': PW_APPLICATION_CODE, 'notifications': [ { 'send_date': 'now', 'content': 'test', 'data': {"custom": "json data"}, 'link': 'https://pushwoosh.com' } ] } )using System;using System.IO;using System.Net;using Newtonsoft.Json.Linq;
namespace WebApplication1{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string pwAuth = "YOUR_AUTH_TOKEN"; string pwApplication = "PW_APPLICATION_CODE"; JObject json = new JObject( new JProperty("application", pwApplication), new JProperty("auth", pwAuth), new JProperty("notifications", new JArray( new JObject( new JProperty("send_date", "now"), new JProperty("content", "test"), new JProperty("wp_type", "Toast"), new JProperty("wp_count", 3), new JProperty("data", new JObject( new JProperty("custom", "json data"))), new JProperty("link", "https://pushwoosh.com/"), new JProperty("conditions", new JArray( (object)new JArray("Color", "EQ", "black"))))))); PWCall("createMessage", json); } private void PWCall(string action, JObject data) { Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action); JObject json = new JObject(new JProperty("request", data)); DoPostRequest(url, json); } private void DoPostRequest(Uri url, JObject data) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ContentType = "text/json"; req.Method = "POST"; using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(data.ToString()); } HttpWebResponse httpResponse; try { httpResponse = (HttpWebResponse)req.GetResponse(); } catch (Exception exc) { throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message)); } using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); Page.Response.Write(responseText); } } }}package main
import( "fmt" "encoding/json" "net/http" "bytes" "io/ioutil")
const ( PW_APPLICATION = "APPLICATION CODE" PW_AUTH = "API TOKEN" PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/")
func pwCall(method string, data []byte) (bool) { url := PW_ENDPOINT + method request, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) request.Header.Set("Content-Type", "application/json")
client := http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error occur: " + err.Error()) return false } defer response.Body.Close()
fmt.Println("Response Status: ", response.Status) if (response.StatusCode == 200) { body, _ := ioutil.ReadAll(response.Body) fmt.Println("Response Body: ", string(body)) return true } return false}
func main() { requestData := map[string]interface{}{ "request": map[string]interface{} { "auth": PW_AUTH, "application": PW_APPLICATION, "notifications": []interface{}{ map[string]interface{} { "send_date": "now", "content": "test", "link": "https://pushwoosh.com", }, }, }, } jsonRequest, _ := json.Marshal(requestData) requestString := string(jsonRequest) fmt.Println("Request body: " + requestString)
pwCall("createMessage", jsonRequest)}$.ajax({ type: "POST", url: "https://api.pushwoosh.com/json/1.3/createMessage", data: JSON.stringify({ "request": { "application": "APPLICATION CODE", "auth": "API TOKEN", "notifications": [{ "send_date": "now", "ignore_user_timezone": true, "content": "Hello world!" }] } }), dataType: "json"}).done(function(data) { console.log(data);});deleteMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/deleteMessage
يحذف رسالة مجدولة.
نص الطلب
Anchor link to| الاسم | النوع | الوصف |
|---|---|---|
| auth* | string | رمز الوصول إلى API من لوحة تحكم Pushwoosh. |
| message* | string | رمز الرسالة الذي تم الحصول عليه في طلب /createMessage. |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // مطلوب. رمز الرسالة الذي تم الحصول عليه في /createMessage }}رموز الحالة:
| رمز حالة HTTP | status_code | الوصف |
|---|---|---|
| 200 | 200 | تم حذف الرسالة بنجاح |
| 200 | 210 | خطأ في الوسيطة. انظر status_message لمزيد من المعلومات |
| 400 | N/A | سلسلة طلب غير صالحة |
| 500 | 500 | خطأ داخلي |
<?php// انظر 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 'Great, my message has been deleted !';} else { print 'Oups, the deletion failed :-('; print 'Status code : ' . $response->getStatusCode(); print 'Status message : ' . $response->getStatusMessage();}getMessageDetails
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getMessageDetails
يسترجع تفاصيل الرسالة.
نص الطلب
Anchor link to| الاسم | النوع | الوصف |
|---|---|---|
| auth* | string | رمز الوصول إلى API من لوحة تحكم Pushwoosh. |
| message* | string | رمز الرسالة أو معرف الرسالة. |
{ "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" // مطلوب. رمز الرسالة أو معرف الرسالة }}createTargetedMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
تُنشئ إشعار دفع مستهدف جديد.
نص الطلب
Anchor link to| الاسم | النوع | الوصف |
|---|---|---|
| auth* | string | رمز الوصول إلى API من لوحة تحكم Pushwoosh. |
| devices_filter* | string | انظر الملاحظة أدناه. |
| send_date* | string | YYYY-MM-DD HH:mm أو ‘now’. |
| ignore_user_timezone | boolean | إذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ “send_date”. |
| timezone | string | إذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ “send_date”. |
| campaign | string | رمز حملة تريد تعيين رسالة الدفع هذه إليها. |
| content* | string | محتوى الإشعار. انظر مثال الطلب للحصول على التفاصيل. |
| transactionId | string | معرف رسالة فريد لمنع تكرار الرسائل في حالة وجود مشاكل في الشبكة. يتم تخزينه على جانب Pushwoosh لمدة 5 دقائق. |
| link | string | الرابط الذي سيتم فتحه بمجرد أن يفتح المستخدم رسالة الدفع. |
| minimize_link | integer | 0 - عدم التصغير، 2 - bit.ly. الافتراضي = 2. |
| data | object | سلسلة JSON أو كائن JSON. سيتم تمريره كمعلمة “u” في الحمولة (محولة إلى سلسلة JSON). |
| preset | string | رمز الإعداد المسبق. |
| send_rate | integer | التحكم في معدل الإرسال. القيم الصالحة هي من 100 إلى 1000 دفعة في الثانية. |
| inbox_date | string | حدد متى تتم إزالة الرسالة من صندوق الوارد. |
| inbox_image | string | عنوان URL للصورة التي ستظهر بجوار الرسالة في صندوق الوارد. |
{ "status_code": 200, "status_message": "OK", "response": { "messageCode": "97B0-C7473871-2FBDFDC6" }}The request cannot be fulfilled due to bad syntax.أمثلة استجابة إضافية:
{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Invalid tag set specification. \")\" expected.", "type": "syntax" }] }}{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Application \"11111-11111\" not found", "type": "semantic", "near": "\"11111-11111\"" }] }}{ "status_code": 210, "status_message": "Errors occurred while compiling filter", "response": { "errors": [{ "message": "Invalid character \"/\" at 1:19", "type": "lexical" }] }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // مطلوب. الصيغة مشروحة أدناه "send_date": "now", // اختياري. YYYY-MM-DD HH:mm أو 'now' "ignore_user_timezone": true, // اختياري. "timezone": "America/New_York", // اختياري. إذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ "send_date". // مزيد من المعلومات https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // اختياري. رمز الحملة الذي تريد تعيين رسالة الدفع هذه إليه. "content": { // اختياري. كائن أو سلسلة نصية. استخدم "wns_content" بدلاً من ذلك لنظام Windows. "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // اختياري. معرف رسالة فريد لمنع تكرار الرسائل // في حالة وجود مشاكل في الشبكة. يتم تخزينه على جانب // Pushwoosh لمدة 5 دقائق. "rich_media": "XXXXX-XXXXX", // اختياري. انسخ رمز Rich Media من شريط URL لـ // صفحة محرر Rich Media في لوحة تحكم Pushwoosh. "link": "https://google.com", // اختياري. للروابط العميقة أضف "minimize_link": 0 "minimize_link": 0, // اختياري. 0 — عدم التصغير، 2 — bitly. الافتراضي = 2. // تم تعطيل خدمة تقصير عناوين URL من Google منذ 30 مارس 2019. // يرجى ملاحظة أن خدمات تقصير الروابط لديها قيود // على عدد الاستدعاءات. "data": { // اختياري. سلسلة JSON أو كائن JSON. "key": "value" // سيتم تمريره كمعلمة "u" في الحمولة }, // (محولة إلى سلسلة JSON). "preset": "XXXXX-XXXXX", // اختياري. رمز الإعداد المسبق للدفع من لوحة التحكم الخاصة بك. "send_rate": 100, // اختياري. التحكم في معدل الإرسال. القيم الصالحة هي من 100 إلى 1000 دفعة/ثانية. "dynamic_content_placeholders": { // اختياري. عناصر نائبة للمحتوى الديناميكي بدلاً من وسوم الجهاز. "firstname": "John", "lastname": "Doe" },
// لحفظ الرسالة في صندوق الوارد عبر API، استخدم "inbox_date" أو "inbox_image". // يتم حفظ الرسالة عند استخدام أحد هذه المعلمات على الأقل. "inbox_image": "Inbox image URL", // اختياري. الصورة التي ستظهر بجوار الرسالة. "inbox_date": "2017-02-02" // اختياري. حدد متى تتم إزالة الرسالة من صندوق الوارد. // ستتم إزالة الرسالة من صندوق الوارد في الساعة 00:00:01 بالتوقيت العالمي المنسق من // التاريخ المحدد، لذا فإن التاريخ السابق هو آخر // يوم يمكن للمستخدم رؤية الرسالة فيه في صندوق الوارد الخاص به. // إذا لم يتم تحديده، فإن تاريخ الإزالة الافتراضي هو اليوم // التالي لتاريخ الإرسال. }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "devices_filter": "FILTER CONDITION", "send_date": "now", // اختياري. YYYY-MM-DD HH:mm أو 'now' "content": { // اختياري. كائن أو سلسلة نصية. "en": "English", // استخدم "wns_content" بدلاً من ذلك لنظام Windows. "de": "Deutsch" }, "ignore_user_timezone": true, // اختياري. "timezone": "America/New_York", // اختياري. إذا تم تجاهله، يكون UTC-0 هو الافتراضي لـ "send_date". // مزيد من المعلومات https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // اختياري. رمز الحملة الذي تريد تعيين رسالة الدفع هذه إليه.
// المعلمات المتعلقة بـ iOS "ios_badges": 5, // اختياري. رقم شارة تطبيق iOS. // استخدم "+n" أو "-n" لزيادة/إنقاص قيمة الشارة بمقدار n. "ios_sound": "sound file.wav", // اختياري. اسم ملف الصوت في الحزمة الرئيسية للتطبيق. // إذا ترك فارغًا، فلن يصدر الجهاز أي صوت // عند تلقي دفعة. "ios_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة حقل "ios_sound". "ios_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة بالثواني. "ios_silent": 1, // اختياري. يتيح الإشعارات الصامتة (تجاهل "sound" و "content"). "ios_category_id": "1", // اختياري. معرف فئة iOS8 من Pushwoosh. "ios_category_custom": "category", // اختياري. فئة APNS مخصصة. "ios_root_params": { // اختياري. معلمات المستوى الجذر لقاموس aps. "aps": { "content-available": "0", // اختياري. اضبط "1" لإرسال دفعة صامتة و "0" لدفعة عادية. "mutable-content": 1 // مطلوب لمرفقات الوسائط في iOS10+ }, "attachment": "YOUR_ATTACHMENT_URL", // عنوان URL لمرفق وسائط iOS10+ "data": {} // اختياري. بيانات مقدمة من المستخدم، بحد أقصى 4 كيلوبايت }, "apns_trim_content": 1, // اختياري. (0|1) يقص سلاسل المحتوى الزائدة بنقاط الحذف. "ios_title": { // اختياري. يضيف عنوانًا لإشعار دفع iOS. "en": "title" }, "ios_subtitle": { // اختياري. يضيف عنوانًا فرعيًا لإشعار دفع iOS. "en": "subTitle" }, "ios_content": { // اختياري. يضيف محتوى لإشعار دفع iOS. "en": "content" },
// المعلمات المتعلقة بـ Android "android_root_params": { // اختياري. كائن مفتاح-قيمة مخصص. "key": "value" // معلمات المستوى الجذر لمستلمي حمولة android. }, "android_sound": "soundfile", // اختياري. بدون امتداد ملف. إذا ترك فارغًا، فلن يصدر الجهاز // أي صوت عند تلقي دفعة. "android_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة حقل "android_sound" "android_header": { // اختياري. كائن أو سلسلة نصية. رأس إشعار Android. "en": "header" }, "android_content": { // اختياري. كائن أو سلسلة نصية. محتوى إشعار Android. "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // اختياري. عنوان URL كامل المسار لملف الصورة. "android_banner": "URL.png", // اختياري. عنوان URL كامل المسار لملف الصورة. "android_badges": 5, // اختياري. عدد صحيح. رقم شارة أيقونة تطبيق Android. // استخدم "+n" أو "-n" لزيادة/إنقاص قيمة الشارة بمقدار n. "android_gcm_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة بالثواني. "android_vibration": 0, // اختياري. اهتزاز قسري في Android للدفعات ذات الأولوية العالية. "android_led": "#rrggbb", // اختياري. لون LED سداسي عشري، سيقوم الجهاز بأفضل تقريب له. "android_priority": -1, // اختياري. يضبط معلمة "importance" للأجهزة التي تعمل بنظام Android 8.0 // والإصدارات الأحدث، بالإضافة إلى معلمة "priority" للأجهزة // التي تعمل بنظام Android 7.1 والإصدارات الأقدم. يحدد مستوى المقاطعة // لقناة إشعار أو إشعار معين. // القيم الصالحة هي -2، -1، 0، 1، 2. "android_delivery_priority": "normal", // اختياري. "normal" أو "high". يتيح تسليم الإشعار // عندما يكون الجهاز في وضع توفير الطاقة. "android_ibc": "#RRGGBB", // اختياري. لون خلفية الأيقونة على Lollipop، #RRGGBB، // #AARRGGBB، "red"، "black"، "yellow"، إلخ. "android_silent": 1, // اختياري. 0 أو 1. تمكين الإشعار الصامت. // تجاهل الصوت والمحتوى
// المعلمات المتعلقة بـ Amazon "adm_root_params": { // اختياري. كائن مفتاح-قيمة مخصص "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // اختياري. تمكين/تعطيل الصوت المحدد بواسطة حقل "adm_sound" "adm_header": { "en": "Header" }, "adm_content": { "en": "content" }, "adm_icon": "icon.png", "adm_custom_icon": "URL.png", "adm_banner": "URL.png", "adm_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة // بالثواني. "adm_priority": -1, // اختياري. أولوية الدفعة في درج دفعات Amazon، // القيم الصالحة هي -2، -1، 0، 1 و 2.
// المعلمات المتعلقة بـ Mac OS X "mac_badges": 3, "mac_sound": "sound.caf", "mac_sound_off": true, "mac_root_params": { "content-available": 1 }, "mac_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى عمر للرسالة بالثواني. "mac_title": { // اختياري. يضيف عنوانًا لإشعار الدفع. "en": "title" }, "mac_subtitle": { // اختياري. يضيف عنوانًا فرعيًا لإشعار دفع MacOS. "en": "subtitle" }, "mac_content": { // اختياري. يضيف محتوى لإشعار دفع MacOS. "en": "content" },
// المعلمات المتعلقة بـ Windows "wns_content": { // مطلوب. محتوى (XML أو خام) الإشعار المشفر // بـ base64 الخاص بـ MIME في شكل كائن أو سلسلة نصية "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // اختياري. يستخدم في سياسة استبدال Tile. // سلسلة أبجدية رقمية لا تزيد عن 16 حرفًا. "wns_cache": 1, // اختياري. (1|0) يترجم إلى قيمة X-WNS-Cache-Policy. "wns_ttl": 600, // اختياري. وقت انتهاء صلاحية الإشعار بالثواني.
// المعلمات المتعلقة بـ Safari "safari_title": { // اختياري. كائن أو سلسلة نصية. عنوان الإشعار. "en": "title" }, "safari_content": { // اختياري. كائن أو سلسلة نصية. محتوى الإشعار. "en": "content" }, "safari_action": "Click here", // اختياري. "safari_url_args": [ // مطلوب. ولكن قد تكون القيمة فارغة "firstArgument", "secondArgument" ], "safari_ttl": 3600, // اختياري. معلمة مدة البقاء — أقصى // عمر للرسالة بالثواني.
// المعلمات المتعلقة بـ Chrome "chrome_title": { // اختياري. يمكنك تحديد رأس الرسالة في هذه المعلمة. "en": "title" }, "chrome_content": { // اختياري. يمكنك تحديد محتوى الرسالة في هذه المعلمة. "en": "content" }, "chrome_icon": "icon_URL", // اختياري. عنوان URL كامل المسار للأيقونة أو مسار ملف موارد الامتداد "chrome_gcm_ttl": 3600, // اختياري. معلمة مدة البقاء – أقصى عمر للرسالة بالثواني. "chrome_duration": 20, // اختياري. يغير وقت عرض دفعة chrome. اضبط على 0 لعرض الدفعة // حتى يتفاعل المستخدم معها. "chrome_image": "image_URL", // اختياري. عنوان URL لصورة كبيرة "chrome_root_params": { // اختياري. تعيين معلمات خاصة بالرسائل المرسلة إلى Chrome. "key": "value" }, "chrome_button_text1": "text1", // اختياري. "chrome_button_url1": "button1_URL", // اختياري. يتم تجاهله إذا لم يتم تعيين chrome_button_text1. "chrome_button_text2": "text2", // اختياري. "chrome_button_url2": "button2_url", // اختياري. يتم تجاهله إذا لم يتم تعيين chrome_button_text2.
// المعلمات المتعلقة بـ Firefox "firefox_title": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد رأس الرسالة هنا. "en": "title" }, "firefox_content": { // اختياري. كائن أو سلسلة نصية. يمكنك تحديد محتوى الرسالة هنا. "en": "content" }, "firefox_icon": "icon_URL", // اختياري. عنوان URL كامل المسار للأيقونة أو مسار // إلى الملف في موارد الامتداد. "firefox_root_params": { // اختياري. تعيين معلمات خاصة بالرسائل المرسلة إلى Firefox. "key": "value" } }}الأساسيات بسيطة جدًا - يتم تنفيذ جميع الفلاتر على مجموعات من الكيانات.
المجموعات
Anchor link toيتم تعريف المجموعات على النحو التالي:
1. الأجهزة المشتركة في تطبيق معين (A)؛
2. الأجهزة التي تطابق قيم الوسم المحددة (T) أو قيمة الوسم الخاصة بالتطبيق (AT)؛\
الصيغة
Anchor link toلنجرب بعض العينات وفقًا للقائمة أعلاه.
استهداف مشتركي التطبيق
Anchor link toيحدد الفلتر “A” مجموعة من الأجهزة المشتركة في تطبيق معين:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
حيث
- “XXXXX-XXXXX” – رمز تطبيق Pushwoosh
- [“iOS”, “Android”, …] – مصفوفة من المنصات المستهدفة. إذا تم حذفها، سيتم إرسال الرسالة إلى جميع المنصات المتاحة لهذا التطبيق.
التصفية حسب قيم الوسم
Anchor link toيحدد الفلتر “T” مجموعة من الأجهزة التي تم تعيين قيم الوسم المحددة لها.
T(\"Age\", IN, [17,20])
يحدد مجموعة الأجهزة التي تم تعيين وسم “age” لها على إحدى القيم: 17، 18، 19، 20.
أنواع الوسوم والعوامل
Anchor link toالشيء المهم جدًا الذي يجب فهمه هو أن الوسوم مشتركة بين التطبيقات، وهذا يمثل أداة قوية جدًا لتقسيم وتصفية المستخدمين المستهدفين دون ربط نفسك بتطبيق معين.
يمكن أن يكون الوسم من ثلاثة أنواع مختلفة: 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 toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
يحصل على سجل الرسائل مع تفاصيل الدفع.
نص الطلب
Anchor link to| الاسم | النوع | الوصف |
|---|---|---|
| auth* | string | رمز الوصول إلى API من لوحة تحكم Pushwoosh. |
| limitMessages | integer | يحد من عدد الرسائل في الاستجابة. القيم الممكنة من 10 إلى 1000. |
| source | string | مصدر سجل الدفع. يمكن أن يكون null أو: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”. |
| searchBy | string | القيم الممكنة للبحث بها. يمكن أن يكون null أو: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”. |
| value | string | قيمة البحث المحددة وفقًا لحقل “searchBy”. |
| lastNotificationID | string | يستخدم للترقيم. آخر messageId من استدعاء /getPushHistory السابق. انظر التفاصيل أدناه. |
{ "status_code": 200, "status_message": "OK", "response": { "rows": [{ "id": 10191611434, "code": "8071-07AD1171-77238AD1", "createDate": "2020-09-14 12:26:21", "sendDate": "2020-09-14 12:26:21", "content": { "en": "Hello!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": "E3A64-A5F3C", "filter_conditions": "#In-app Purchase(≠0)", "filter_name": "Purchased something", "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": null, "open": { "C90C0-0E786": { "IOS": 0 } }, "sent": { "C90C0-0E786": { "IOS": 1 } }, "ctr": { "C90C0-0E786": 0 } }, { "id": 10191609202, "code": "41CA-83F8E0D7-7A63822B", "createDate": "2020-09-14 12:25:55", "sendDate": "2020-09-14 12:25:55", "content": { "en": "Hi!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": null, "filter_conditions": null, "filter_name": null, "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": { "2D732-BB981": "News" }, "open": { "C90C0-0E786": { "CHROME": 0, "IOS": 0 } }, "sent": { "C90C0-0E786": { "CHROME": 1, "IOS": 2 } }, "ctr": { "C90C0-0E786": 0 } }] }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "source": null, // اختياري. القيم الممكنة هي null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // اختياري. القيم الممكنة هي "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // اختياري. قيمة البحث المحددة وفقًا لحقل "searchBy". "lastNotificationID": 0, // اختياري. يستخدم للترقيم. آخر messageId من // استدعاء /getPushHistory السابق. انظر التفاصيل أدناه. "limitMessages": 1000 // اختياري. القيمة الممكنة من 10 إلى 1000. }}ستعيد هذه الدالة 1000 رسالة من الحساب مرتبة حسب معرف الرسالة. للحصول على الصفحة الثانية، حدد آخر معرف رسالة من الاستجابة السابقة في معلمة 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]] | "" Example: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Example: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Example: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Example: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
يحذف رسالة مجدولة.
نص الطلب
Anchor link to| الاسم | النوع | الوصف |
|---|---|---|
| auth* | string | رمز الوصول إلى API من لوحة تحكم Pushwoosh. |
| message* | string | رمز الرسالة الذي تم الحصول عليه في استجابة /createMessage. |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // مطلوب. رمز الوصول إلى API من لوحة تحكم Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // مطلوب. رمز الرسالة الذي تم الحصول عليه في استجابة /createMessage }}رموز الحالة:
| رمز حالة HTTP | status_code | الوصف |
|---|---|---|
| 200 | 200 | تم إلغاء الرسالة بنجاح |
| 200 | 210 | خطأ في الوسيطة. انظر status_message لمزيد من المعلومات. |
| 400 | N/A | سلسلة طلب غير صالحة |
| 500 | 500 | خطأ داخلي |