মেসেজ এপিআই
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
একটি নতুন পুশ নোটিফিকেশন তৈরি করে।
রিকোয়েস্ট বডি
Anchor link to| নাম | টাইপ | বর্ণনা |
|---|---|---|
| auth* | string | Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। |
| 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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। "notifications": [{ "send_date": "now", // ঐচ্ছিক। YYYY-MM-DD HH:mm অথবা 'now' "content": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। "en": "English", // Windows-এর জন্য এর পরিবর্তে "wns_content" ব্যবহার করুন। "fr": "French" }, "title": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। "en": "Title", // প্ল্যাটফর্ম-নির্দিষ্ট টাইটেল উল্লেখ করা থাকলে উপেক্ষা করা হয় "fr": "Titre" // 'ios_title', 'android_header', ইত্যাদি। }, // নিচে প্ল্যাটফর্ম-নির্দিষ্ট প্যারামিটারের উদাহরণ দেখুন। "subtitle":{ // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। "en": "Subtitle", // প্ল্যাটফর্ম-নির্দিষ্ট টাইটেল উল্লেখ করা থাকলে উপেক্ষা করা হয় "fr": "Sous-titre" // 'ios_subtitle', ইত্যাদি। }, // নিচে প্ল্যাটফর্ম-নির্দিষ্ট প্যারামিটারের উদাহরণ দেখুন। "ignore_user_timezone": true, // ঐচ্ছিক। "timezone": "America/New_York", // ঐচ্ছিক। উপেক্ষা করা হলে "send_date"-এর জন্য ডিফল্ট UTC-0। // সমর্থিত টাইমজোনের জন্য https://php.net/manual/timezones.php দেখুন। // "campaign": "CAMPAIGN_CODE", // ঐচ্ছিক। ক্যাম্পেইন কোড যেখানে আপনি এই পুশ মেসেজটি // অ্যাসাইন করতে চান। "geozone": { // ঐচ্ছিক। জিওজোনে পাঠান "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // ঐচ্ছিক। Pushwoosh কন্ট্রোল প্যানেলে রিচ মিডিয়া এডিটর পেজের // URL বার থেকে রিচ মিডিয়া কোডটি কপি করুন। "link": "https://google.com", // ঐচ্ছিক। ডীপলিংকের জন্য "minimize_link": 0 যোগ করুন "minimize_link": 0, // ঐচ্ছিক। 0 — ছোট করবেন না, 2 — bitly। ডিফল্ট = 2। // অনুগ্রহ করে মনে রাখবেন যে শর্টনারগুলোর // কলের সংখ্যার উপর সীমাবদ্ধতা রয়েছে। "data": { // ঐচ্ছিক। JSON স্ট্রিং বা JSON অবজেক্ট, পেলোডে "u" প্যারামিটার "key": "value" // হিসাবে পাস করা হবে (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" }, "message_type": "marketing", // ঐচ্ছিক। "marketing" বা "transactional"। // যদি বাদ দেওয়া হয়, PW_ControlGroup: true সহ ব্যবহারকারীরা মেসেজটি পাবেন না।
// ফ্রিকোয়েন্সি ক্যাপিং প্যারামিটার। নিশ্চিত করুন যে কন্ট্রোল প্যানেলে গ্লোবাল ফ্রিকোয়েন্সি ক্যাপিং কনফিগার করা আছে। // ট্রানজ্যাকশনাল মেসেজের ক্ষেত্রে ফ্রিকোয়েন্সি ক্যাপিং প্রযোজ্য নয়। // "message_type" বাদ দেওয়া সহ অন্যান্য সব ক্ষেত্রে ফ্রিকোয়েন্সি ক্যাপিং প্রযোজ্য। "capping_days": 30, // ঐচ্ছিক। ফ্রিকোয়েন্সি ক্যাপিংয়ের জন্য দিনের সংখ্যা (সর্বোচ্চ 30 দিন) "capping_count": 10, // ঐচ্ছিক। একটি নির্দিষ্ট অ্যাপ থেকে একটি নির্দিষ্ট ডিভাইসে 'capping_days' // সময়ের মধ্যে পাঠানো যেতে পারে এমন সর্বোচ্চ পুশের সংখ্যা। // যদি তৈরি করা মেসেজটি একটি ডিভাইসের জন্য 'capping_count' // সীমা অতিক্রম করে, তবে এটি সেই ডিভাইসে // পাঠানো হবে না। "capping_exclude": true, // ঐচ্ছিক। যদি true সেট করা হয়, তবে এই পুশ নোটিফিকেশনটি ভবিষ্যতের // পুশের জন্য ক্যাপিংয়ের হিসাবে গণনা করা হবে না। "capping_avoid": true, // ঐচ্ছিক। যদি true সেট করা হয়, তবে এই নির্দিষ্ট পুশ // নোটিফিকেশনে ক্যাপিং প্রয়োগ করা হবে না।
// API-এর মাধ্যমে ইনবক্সে মেসেজ সংরক্ষণ করতে, "inbox_date" বা "inbox_image" ব্যবহার করুন। // এই প্যারামিটারগুলোর মধ্যে অন্তত একটি ব্যবহার করা হলে মেসেজটি সংরক্ষিত হয়। "inbox_date": "2017-02-02", // ঐচ্ছিক। ইনবক্স থেকে একটি মেসেজ কখন সরাতে হবে তা উল্লেখ করুন। // নির্দিষ্ট তারিখের 00:00:01 UTC-তে মেসেজটি ইনবক্স থেকে সরানো হবে, // তাই আগের তারিখটিই শেষ দিন যখন একজন ব্যবহারকারী তাদের // ইনবক্সে মেসেজটি দেখতে পারবেন। // যদি উল্লেখ না করা হয়, তবে ডিফল্ট অপসারণের তারিখ হলো // পাঠানোর তারিখের পরের দিন। "inbox_image": "Inbox image URL", // ঐচ্ছিক। মেসেজের পাশে দেখানো হবে এমন ছবি। "inbox_days": 5, // ঐচ্ছিক। ইনবক্স থেকে একটি মেসেজ কখন সরাতে হবে তা উল্লেখ করুন // (ইনবক্স মেসেজের জীবনকাল দিনে)। // "inbox_date" প্যারামিটারের পরিবর্তে ব্যবহার করা যেতে পারে। // 30 দিন পর্যন্ত।
"devices": [ // ঐচ্ছিক। টার্গেটেড পুশ নোটিফিকেশন পাঠাতে টোকেন বা hwid উল্লেখ করুন "hwid_XXXX" // । একটি অ্যারেতে 1000-এর বেশি টোকেন/hwid নয়। ], // যদি সেট করা হয়, মেসেজটি শুধুমাত্র তালিকার // ডিভাইসগুলিতে পাঠানো হবে। ডিভাইস তালিকার জন্য অ্যাপ্লিকেশন // গ্রুপ অনুমোদিত নয়। iOS পুশ টোকেন শুধুমাত্র ছোট হাতের হতে পারে। "to": [ // ঐচ্ছিক। ইমেল, SMS এবং অনুরূপ চ্যানেলগুলির জন্য। প্রাপকদের তালিকা "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 toPushwoosh iOS এবং Android-এর জন্য VoIP-স্টাইলের কল নোটিফিকেশন সমর্থন করে।
নিচে আপনি প্রতিটি প্ল্যাটফর্মের জন্য API createMessage রিকোয়েস্টের উদাহরণ খুঁজে পেতে পারেন।
{ "request": { "application": "XXXXX-XXXXX", // আবশ্যক। Pushwoosh অ্যাপ্লিকেশন কোড। "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। "notifications": [ { "voip_push": true, // আবশ্যক। একটি VoIP পুশ নোটিফিকেশন পাঠাতে এই প্যারামিটারটি প্রয়োজন। "ios_root_params": { "aps": { "mutable-content": 1 // iOS10+ মিডিয়া অ্যাটাচমেন্টের জন্য আবশ্যক। }, "callerName": "CallerName", // ঐচ্ছিক। কলারের নাম। যদি উল্লেখ না করা হয়, "unknown caller" দেখানো হয়। "video": true, // ঐচ্ছিক। ভিডিও কল সমর্থিত কিনা তা নির্দেশ করে। "supportsHolding": true, // ঐচ্ছিক। কল হোল্ডিং কার্যকারিতা সমর্থিত কিনা তা নির্দেশ করে। "supportsDTMF": false, // ঐচ্ছিক। ডুয়াল-টোন মাল্টি-ফ্রিকোয়েন্সি সিগন্যাল সমর্থন নিয়ন্ত্রণ করে। "callId": "42", // ঐচ্ছিক। বাতিল করার জন্য কলের ইউনিক আইডেন্টিফায়ার। "cancelCall": true // ঐচ্ছিক। নির্দিষ্ট "callId" সহ কলটি বাতিল করতে "true" সেট করুন। } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // আবশ্যক। Pushwoosh অ্যাপ্লিকেশন কোড। "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। "notifications": [ { "voip_push": true, // আবশ্যক। একটি VoIP পুশ নোটিফিকেশন পাঠাতে এই প্যারামিটারটি প্রয়োজন। "android_root_params": { "callerName": "callerName", // ঐচ্ছিক। কলারের নাম। যদি উল্লেখ না করা হয়, "unknown caller" দেখানো হয়। "video": true, // ঐচ্ছিক। ভিডিও কল সমর্থিত কিনা তা নির্দেশ করে। "callId": 42, // ঐচ্ছিক। বাতিল করার জন্য কলের ইউনিক আইডেন্টিফায়ার। "cancelCall": true // ঐচ্ছিক। নির্দিষ্ট "callId" সহ কলটি বাতিল করতে "true" সেট করুন। } } ] }}প্ল্যাটফর্ম-নির্দিষ্ট প্যারামিটার
Anchor link toiOS প্যারামিটার
Anchor link to{ "request": { "application": "12345-67891", // আবশ্যক। Pushwoosh অ্যাপ্লিকেশন কোড "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "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", // ঐচ্ছিক। Pushwoosh থেকে iOS8 ক্যাটাগরি আইডি। "ios_root_params": { // ঐচ্ছিক। aps ডিকশনারিতে রুট লেভেল প্যারামিটার। "aps": { "content-available": "0", // ঐচ্ছিক। সাইলেন্ট পুশ পাঠাতে "1" এবং নিয়মিত পুশের জন্য "0" সেট করুন। "mutable-content": 1 // iOS10+ মিডিয়া অ্যাটাচমেন্টের জন্য আবশ্যক। }, "callerName": "CallerName", // ঐচ্ছিক VoIP প্যারামিটার। কলারের নাম। যদি উল্লেখ না করা হয়, "unknown caller" দেখানো হয়। "video": true, // ঐচ্ছিক VoIP প্যারামিটার। ভিডিও কল সমর্থিত কিনা তা নির্দেশ করে। "supportsHolding": true, // ঐচ্ছিক VoIP প্যারামিটার। কল হোল্ডিং কার্যকারিতা সমর্থিত কিনা তা নির্দেশ করে। "supportsDTMF": false, // ঐচ্ছিক VoIP প্যারামিটার। ডুয়াল-টোন মাল্টি-ফ্রিকোয়েন্সি সিগন্যাল সমর্থন নিয়ন্ত্রণ করে। "data": {} // ঐচ্ছিক ব্যবহারকারী সরবরাহকৃত ডেটা, সর্বোচ্চ 4KB }, "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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "notifications": [{ "android_header": { // ঐচ্ছিক। Android নোটিফিকেশন হেডার। "en": "header" }, "android_content": { // ঐচ্ছিক। Android নোটিফিকেশন কন্টেন্ট। "en": "content" }, "android_root_params": { // ঐচ্ছিক। কাস্টম কী-ভ্যালু অবজেক্ট। "key": "value", // অ্যান্ড্রয়েড পেলোড প্রাপকদের জন্য রুট লেভেল প্যারামিটার। "CancelID": 12345678, // ঐচ্ছিক। নির্দিষ্ট মেসেজ আইডি সহ পুশ নোটিফিকেশন বাতিল করে "voip": true, // আবশ্যক VoIP প্যারামিটার। VoIP পুশ নোটিফিকেশন পাঠাতে এই প্যারামিটারটি প্রয়োজন। "callerName": "callerName", // ঐচ্ছিক VoIP প্যারামিটার। কলারের নাম। যদি উল্লেখ না করা হয়, "unknown caller" দেখানো হয়। "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, // ঐচ্ছিক। Android 8.0 এবং উচ্চতর সংস্করণের ডিভাইসগুলির জন্য "importance" প্যারামিটার // এবং Android 7.1 এবং নিম্নতর সংস্করণের ডিভাইসগুলির জন্য "priority" প্যারামিটার // সেট করে। একটি নোটিফিকেশন চ্যানেল বা একটি নির্দিষ্ট // নোটিফিকেশনের ইন্টারাপশন লেভেল স্থাপন করে। বৈধ মানগুলি হল -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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "notifications": [{ "chrome_title": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। আপনি এই প্যারামিটারে "en": "title" // মেসেজের হেডার উল্লেখ করতে পারেন। }, "chrome_content": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। আপনি এই প্যারামিটারে "en": "content" // মেসেজের কন্টেন্ট উল্লেখ করতে পারেন। }, "chrome_icon": "URL.png", // ঐচ্ছিক। আইকনের সম্পূর্ণ URL বা এক্সটেনশন রিসোর্স ফাইল পাথ "chrome_gcm_ttl": 3600, // ঐচ্ছিক। টাইম টু লিভ প্যারামিটার – সেকেন্ডে সর্বোচ্চ মেসেজ জীবনকাল। "chrome_duration": 20, // ঐচ্ছিক। সর্বোচ্চ 50 সেকেন্ড। ক্রোম পুশ প্রদর্শনের সময় পরিবর্তন করে। // ব্যবহারকারী ইন্টারঅ্যাক্ট না করা পর্যন্ত পুশ প্রদর্শন করতে 0 সেট করুন। "chrome_image": "image_URL", // ঐচ্ছিক। বড় ইমেজের URL। "chrome_root_params": { // ঐচ্ছিক। ক্রোমে পাঠানো মেসেজের জন্য নির্দিষ্ট প্যারামিটার সেট করুন। "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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "notifications": [{ "firefox_title": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। আপনি এখানে মেসেজ হেডার উল্লেখ করতে পারেন। "en": "title" }, "firefox_content": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। আপনি এখানে মেসেজ কন্টেন্ট উল্লেখ করতে পারেন। "en": "content" }, "firefox_icon": "URL.png", // ঐচ্ছিক। আইকনের সম্পূর্ণ পাথ URL বা এক্সটেনশন // রিসোর্সে ফাইলের পাথ। "firefox_root_params": { // ঐচ্ছিক। ফায়ারফক্সে পাঠানো মেসেজের জন্য নির্দিষ্ট প্যারামিটার সেট করুন। "key": "value" } }] }}Amazon প্যারামিটার
Anchor link to{ "request": { "application": "12345-67891", // আবশ্যক। Pushwoosh অ্যাপ্লিকেশন কোড "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "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 // ঐচ্ছিক। অ্যামাজন পুশ ড্রয়ারে পুশের অগ্রাধিকার, // বৈধ মানগুলি হল -2, -1, 0, 1 এবং 2। }] }}Mac OS X প্যারামিটার
Anchor link to{ "request": { "application": "12345-67891", // আবশ্যক। Pushwoosh অ্যাপ্লিকেশন কোড "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "notifications": [{ "wns_content": { // আবশ্যক। MIME-এর বেস64-এ এনকোড করা নোটিফিকেশনের কন্টেন্ট (XML বা raw) // অবজেক্ট বা স্ট্রিং আকারে "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // ঐচ্ছিক। 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // ঐচ্ছিক। টাইল রিপ্লেসমেন্ট নীতিতে ব্যবহৃত হয়। // ১৬ অক্ষরের বেশি নয় এমন একটি আলফানিউমেরিক স্ট্রিং। "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লোড ব্যালেন্সিংয়ের উদ্দেশ্যে, আমরা “devices” প্যারামিটার সহ API-এর মাধ্যমে পাঠানো মেসেজগুলো সংরক্ষণ করি না, যদি অ্যারেতে ১০টির কম ডিভাইস থাকে। এর কারণে, এই ধরনের মেসেজগুলো আপনার মেসেজ হিস্ট্রিতে প্রদর্শিত হবে না।
টেস্টিং পর্যায়ে পুশ রিপোর্ট দেখতে, API মেসেজিং ট্রেসিং ব্যবহার করুন। এই অপশনটি ON করলে আপনি ১ ঘণ্টার জন্য এই সীমাটি ওভাররাইড করতে পারবেন এবং এই ধরনের পুশগুলো মেসেজ হিস্ট্রিতে সংরক্ষণ করতে পারবেন। API মেসেজিং ট্রেসিং ১ ঘণ্টা পর স্বয়ংক্রিয়ভাবে OFF হয়ে যায়।
API মেসেজিং ট্রেসিং মেসেজ হিস্ট্রি পেজে উপরের ডানদিকের কোণায় Start API messaging tracing ক্লিক করে সক্রিয় করা যেতে পারে।
ট্যাগ কন্ডিশন
Anchor link toপ্রতিটি ট্যাগ কন্ডিশন একটি অ্যারে যেমন [tagName, operator, operand] যেখানে
- tagName: একটি ট্যাগের নাম
- operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
- operand: string | integer | array | date
অপারেটরের বর্ণনা
Anchor link to- EQ: ট্যাগ মান অপারেন্ডের সমান;
- IN: ট্যাগ মান অপারেন্ডের সাথে ছেদ করে (অপারেন্ড অবশ্যই একটি অ্যারে হতে হবে);
- NOTEQ: ট্যাগ মান একটি অপারেন্ডের সমান নয়;
- NOTIN: ট্যাগ মান অপারেন্ডের সাথে ছেদ করে না (অপারেন্ড অবশ্যই একটি অ্যারে হতে হবে);
- GTE: ট্যাগ মান অপারেন্ডের চেয়ে বড় বা সমান;
- LTE: ট্যাগ মান অপারেন্ডের চেয়ে ছোট বা সমান;
- BETWEEN: ট্যাগ মান সর্বনিম্ন অপারেন্ড মানের চেয়ে বড় বা সমান কিন্তু সর্বোচ্চ অপারেন্ড মানের চেয়ে ছোট বা সমান (অপারেন্ড অবশ্যই একটি অ্যারে হতে হবে);
- NOTSET: ট্যাগ সেট করা নেই। অপারেন্ড বিবেচনা করা হয় না;
- ANY: ট্যাগের যেকোনো মান আছে। অপারেন্ড বিবেচনা করা হয় না।
স্ট্রিং ট্যাগ
Anchor link toবৈধ অপারেটর: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
বৈধ অপারেন্ড:
- EQ, NOTEQ: অপারেন্ড অবশ্যই একটি স্ট্রিং হতে হবে;
- IN, NOTIN: অপারেন্ড অবশ্যই স্ট্রিং-এর একটি অ্যারে হতে হবে যেমন
["value 1", "value 2", "value N"]; - NOTSET: ট্যাগ সেট করা নেই। অপারেন্ড বিবেচনা করা হয় না;
- ANY: ট্যাগের যেকোনো মান আছে। অপারেন্ড বিবেচনা করা হয় না।
ইন্টিজার ট্যাগ
Anchor link toবৈধ অপারেটর: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
বৈধ অপারেন্ড:
- EQ, NOTEQ, GTE, LTE: অপারেন্ড অবশ্যই একটি ইন্টিজার হতে হবে;
- IN, NOTIN: অপারেন্ড অবশ্যই ইন্টিজারের একটি অ্যারে হতে হবে যেমন
[value 1, value 2, value N]; - BETWEEN: অপারেন্ড অবশ্যই ইন্টিজারের একটি অ্যারে হতে হবে যেমন
[min_value, max_value]; - NOTSET: ট্যাগ সেট করা নেই। অপারেন্ড বিবেচনা করা হয় না;
- ANY: ট্যাগের যেকোনো মান আছে। অপারেন্ড বিবেচনা করা হয় না।
ডেট ট্যাগ
Anchor link toবৈধ অপারেটর: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
বৈধ অপারেন্ড:
"YYYY-MM-DD 00:00"(স্ট্রিং)- unix টাইমস্ট্যাম্প
1234567890(ইন্টিজার) "N days ago"(স্ট্রিং) EQ, BETWEEN, GTE, LTE অপারেটরের জন্য
বুলিয়ান ট্যাগ
Anchor link toবৈধ অপারেটর: EQ, NOTSET, ANY
বৈধ অপারেন্ড: 0, 1, true, false
লিস্ট ট্যাগ
Anchor link toবৈধ অপারেটর: IN, NOTIN, NOTSET, ANY
বৈধ অপারেন্ড: অপারেন্ড অবশ্যই স্ট্রিং-এর একটি অ্যারে হতে হবে যেমন ["value 1", "value 2", "value N"]।
/createMessage স্নিপেট
Anchor link toনমুনা /createMessage রিকোয়েস্ট:
#!/bin/bash
#Usageif [ ! -n "$1" ] || [ ! -n "$2" ]then echo "`basename $0` usage: api_token appid message"; exit 1;fi;MESSAGE="$3";if [ -z "$3" ]thenMESSAGE='One push to rule them all!'fi;
echo -e "Response:"curl --data-binary "{\"request\": {\"application\":\"$2\", \"auth\":\"$1\", \"notifications\": [{ \"send_date\": \"now\", \"content\": \"$MESSAGE\" }] }}" \-H "Content-type: application/json" \"https://api.pushwoosh.com/json/1.3/createMessage"echo "";exit 0;<?phpdefine('PW_AUTH', 'API TOKEN');define('PW_APPLICATION', 'APPLICATION CODE');define('PW_DEBUG', true);
function pwCall($method, $data) { $url = 'https://api.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]);
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request"; print "[PW] response: $response"; print '[PW] info: ' . print_r($info, true); }}
pwCall('createMessage', array( 'application' => PW_APPLICATION, 'auth' => PW_AUTH, 'notifications' => array( array( 'send_date' => 'now', 'content' => 'test', 'data' => array('custom' => 'json data'), 'link' => 'https://pushwoosh.com/' ) ) ));-module(pushwoosh).-export([run/0, stop/0, sendMessage/1]).%% sendMessage argument: message text %%
%% Authentication & App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% KickStart %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% HTTP Client verbosity options flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% JSON Wars !encode(S) -> encode(S, [$"]).encode([], Acc) -> lists:reverse([$" | Acc]);encode([C | Cs], Acc) -> Hex = lists:flatten(io_lib:format("~4.16.0b", [C])), encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
sendMessage(Message_text) -> %% URL to JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Method post, %%Request {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP options [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Options []), io:format("And received ~p", [Response]).class PushNotification
#- PushWoosh API Documentation https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Two methods here: # - PushNotification.new.notify_all(message) Notifies all with the same option # - PushNotification.new.notify_devices(notification_options = {}) Notifies specific devices with custom options
include HTTParty #Make sure to have the HTTParty gem declared in your gemfile https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Change to your settings @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("This is a test notification to all devices") def notify_all(message) notify_devices({:content => message}) end
# PushNotification.new.notify_device({ # :content => "TEST", # :data => {:custom_data => value}, # :devices => array_of_tokens #}) def notify_devices(notification_options = {}) #- Default options, uncomment :data or :devices if needed default_notification_options = { # YYYY-MM-DD HH:mm OR 'now' :send_date => "now", # Object( language1: 'content1', language2: 'content2' ) OR string :content => { :fr => "Test", :en => "Test" }, # JSON string or JSON object "custom": "json data" #:data => { # :custom_data => value #}, # omit this field (push notification will be delivered to all the devices for the application), or provide the list of devices IDs #:devices => {} }
#- Merging with specific options final_notification_options = default_notification_options.merge(notification_options)
#- Constructing the final call options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Executing the POST API Call with HTTPARTY - :body => options.to_json allows us to send the json as an object instead of a string response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Uses JSON classes from https://json.org/java/
package com.arellomobile;
import org.json.*;import java.io.*;import java.net.*;
public class SendPushNotificationSample{ public static final String PUSHWOOSH_SERVICE_BASE_URL = "https://api.pushwoosh.com/json/1.3/"; private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN"; private static final String APPLICATION_CODE = "PW_APPLICATION_CODE";
public static void main(String[] args) throws JSONException, MalformedURLException { String method = "createMessage"; URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
JSONArray notificationsArray = new JSONArray() .put(new JSONObject().put("send_date", "now") .put("content", "test") .put("link", "https://pushwoosh.com/"));
JSONObject requestObject = new JSONObject() .put("application", APPLICATION_CODE) .put("auth", AUTH_TOKEN) .put("notifications", notificationsArray);
JSONObject mainRequest = new JSONObject().put("request", requestObject); JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
System.out.println("Response is: " + response); }}
class SendServerRequest{ static JSONObject sendJSONRequest(URL url, String request) { HttpURLConnection connection = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoInput(true); connection.setDoOutput(true);
DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); writer.write(request.getBytes("UTF-8")); writer.flush(); writer.close();
return parseResponse(connection); } catch (Exception e) { System.out.println("An error occurred: " + e.getMessage()); return null; } finally { if (connection != null) { connection.disconnect(); } } }
static JSONObject parseResponse(HttpURLConnection connection) throws IOException, JSONException { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) { response.append(line).append(''); } reader.close();
return new JSONObject(response.toString()); }}import json
PW_AUTH = 'API TOKEN'PW_APPLICATION_CODE = 'APPLICATION CODE'
try: # For Python 3.0 and later from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopen from urllib2 import Request
def pw_call(method, data): url = 'https://api.pushwoosh.com/json/1.3/' + method data = json.dumps({'request': data}) req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'}) try: f = urlopen(req) response = f.read() f.close() print('Pushwoosh response: ' + str(response)) except Exception as e: print ('Request error: ' + str(e))
if __name__ == '__main__': pw_call('createMessage', { 'auth': PW_AUTH, 'application': PW_APPLICATION_CODE, 'notifications': [ { 'send_date': 'now', 'content': 'test', 'data': {"custom": "json data"}, 'link': 'https://pushwoosh.com' } ] } )using System;using System.IO;using System.Net;using Newtonsoft.Json.Linq;
namespace WebApplication1{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string pwAuth = "YOUR_AUTH_TOKEN"; string pwApplication = "PW_APPLICATION_CODE"; JObject json = new JObject( new JProperty("application", pwApplication), new JProperty("auth", pwAuth), new JProperty("notifications", new JArray( new JObject( new JProperty("send_date", "now"), new JProperty("content", "test"), new JProperty("wp_type", "Toast"), new JProperty("wp_count", 3), new JProperty("data", new JObject( new JProperty("custom", "json data"))), new JProperty("link", "https://pushwoosh.com/"), new JProperty("conditions", new JArray( (object)new JArray("Color", "EQ", "black"))))))); PWCall("createMessage", json); } private void PWCall(string action, JObject data) { Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action); JObject json = new JObject(new JProperty("request", data)); DoPostRequest(url, json); } private void DoPostRequest(Uri url, JObject data) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ContentType = "text/json"; req.Method = "POST"; using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(data.ToString()); } HttpWebResponse httpResponse; try { httpResponse = (HttpWebResponse)req.GetResponse(); } catch (Exception exc) { throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message)); } using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); Page.Response.Write(responseText); } } }}package main
import( "fmt" "encoding/json" "net/http" "bytes" "io/ioutil")
const ( PW_APPLICATION = "APPLICATION CODE" PW_AUTH = "API TOKEN" PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/")
func pwCall(method string, data []byte) (bool) { url := PW_ENDPOINT + method request, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) request.Header.Set("Content-Type", "application/json")
client := http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error occur: " + err.Error()) return false } defer response.Body.Close()
fmt.Println("Response Status: ", response.Status) if (response.StatusCode == 200) { body, _ := ioutil.ReadAll(response.Body) fmt.Println("Response Body: ", string(body)) return true } return false}
func main() { requestData := map[string]interface{}{ "request": map[string]interface{} { "auth": PW_AUTH, "application": PW_APPLICATION, "notifications": []interface{}{ map[string]interface{} { "send_date": "now", "content": "test", "link": "https://pushwoosh.com", }, }, }, } jsonRequest, _ := json.Marshal(requestData) requestString := string(jsonRequest) fmt.Println("Request body: " + requestString)
pwCall("createMessage", jsonRequest)}$.ajax({ type: "POST", url: "https://api.pushwoosh.com/json/1.3/createMessage", data: JSON.stringify({ "request": { "application": "APPLICATION CODE", "auth": "API TOKEN", "notifications": [{ "send_date": "now", "ignore_user_timezone": true, "content": "Hello world!" }] } }), dataType: "json"}).done(function(data) { console.log(data);});deleteMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/deleteMessage
একটি নির্ধারিত মেসেজ ডিলিট করে।
রিকোয়েস্ট বডি
Anchor link to| নাম | টাইপ | বর্ণনা |
|---|---|---|
| auth* | string | Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। |
| message* | string | /createMessage রিকোয়েস্টে প্রাপ্ত মেসেজ কোড। |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "message": "xxxx-xxxxxxx-xxxxxx" // আবশ্যক। /createMessage-এ প্রাপ্ত মেসেজ কোড }}স্ট্যাটাস কোড:
| HTTP স্ট্যাটাস কোড | status_code | বর্ণনা |
|---|---|---|
| 200 | 200 | মেসেজ সফলভাবে ডিলিট করা হয়েছে |
| 200 | 210 | আর্গুমেন্ট ত্রুটি। আরও তথ্যের জন্য status_message দেখুন |
| 400 | N/A | ত্রুটিপূর্ণ রিকোয়েস্ট স্ট্রিং |
| 500 | 500 | অভ্যন্তরীণ ত্রুটি |
<?php// see https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// creates request instance$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// call '/deleteMessage' Web Service$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) { print 'Great, my message has been deleted !';} else { print 'Oups, the deletion failed :-('; print 'Status code : ' . $response->getStatusCode(); print 'Status message : ' . $response->getStatusMessage();}getMessageDetails
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getMessageDetails
মেসেজের বিস্তারিত তথ্য পুনরুদ্ধার করে।
রিকোয়েস্ট বডি
Anchor link to| নাম | টাইপ | বর্ণনা |
|---|---|---|
| auth* | string | Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। |
| 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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "message": "xxxx-xxxxxxx-xxxxxx" // আবশ্যক। মেসেজ কোড বা মেসেজ আইডি }}createTargetedMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
একটি নতুন টার্গেটেড পুশ নোটিফিকেশন তৈরি করে।
রিকোয়েস্ট বডি
Anchor link to| নাম | টাইপ | বর্ণনা |
|---|---|---|
| auth* | string | Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। |
| devices_filter* | string | নিচের মন্তব্য দেখুন। |
| send_date* | string | YYYY-MM-DD HH:mm বা ‘now’। |
| ignore_user_timezone | boolean | যদি উপেক্ষা করা হয়, “send_date”-এর জন্য ডিফল্ট UTC-0। |
| timezone | string | যদি উপেক্ষা করা হয়, “send_date”-এর জন্য ডিফল্ট UTC-0। |
| campaign | string | একটি ক্যাম্পেইনের কোড যেখানে আপনি এই পুশ মেসেজটি অ্যাসাইন করতে চান। |
| 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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // আবশ্যক। সিনট্যাক্স নিচে ব্যাখ্যা করা হয়েছে "send_date": "now", // ঐচ্ছিক। YYYY-MM-DD HH:mm অথবা 'now' "ignore_user_timezone": true, // ঐচ্ছিক। "timezone": "America/New_York", // ঐচ্ছিক। উপেক্ষা করা হলে "send_date"-এর জন্য ডিফল্ট UTC-0। // আরও তথ্য https://php.net/manual/timezones.php। "campaign": "CAMPAIGN_CODE", // ঐচ্ছিক। ক্যাম্পেইন কোড যেখানে আপনি এই পুশ মেসেজটি অ্যাসাইন করতে চান। "content": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। Windows-এর জন্য এর পরিবর্তে "wns_content" ব্যবহার করুন। "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // ঐচ্ছিক। নেটওয়ার্ক সমস্যার ক্ষেত্রে মেসেজ ডুপ্লিকেট হওয়া থেকে // আটকাতে ইউনিক মেসেজ আইডেন্টিফায়ার। Pushwoosh-এর // দিকে 5 মিনিটের জন্য সংরক্ষিত থাকে। "rich_media": "XXXXX-XXXXX", // ঐচ্ছিক। Pushwoosh কন্ট্রোল প্যানেলে রিচ মিডিয়া এডিটর পেজের // URL বার থেকে রিচ মিডিয়া কোডটি কপি করুন। "link": "https://google.com", // ঐচ্ছিক। ডীপলিংকের জন্য "minimize_link": 0 যোগ করুন "minimize_link": 0, // ঐচ্ছিক। 0 — ছোট করবেন না, 2 — bitly। ডিফল্ট = 2। // Google URL শর্টনার মার্চ 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 UTC-তে মেসেজটি ইনবক্স থেকে সরানো হবে, // তাই আগের তারিখটিই শেষ দিন যখন একজন ব্যবহারকারী তাদের // ইনবক্সে মেসেজটি দেখতে পারবেন। // যদি উল্লেখ না করা হয়, তবে ডিফল্ট অপসারণের তারিখ হলো // পাঠানোর তারিখের পরের দিন। }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "devices_filter": "FILTER CONDITION", "send_date": "now", // ঐচ্ছিক। YYYY-MM-DD HH:mm অথবা 'now' "content": { // ঐচ্ছিক। অবজেক্ট অথবা স্ট্রিং। "en": "English", // Windows-এর জন্য এর পরিবর্তে "wns_content" ব্যবহার করুন। "de": "Deutsch" }, "ignore_user_timezone": true, // ঐচ্ছিক। "timezone": "America/New_York", // ঐচ্ছিক। উপেক্ষা করা হলে "send_date"-এর জন্য ডিফল্ট UTC-0। // আরও তথ্য 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", // ঐচ্ছিক। Pushwoosh থেকে iOS8 ক্যাটাগরি আইডি। "ios_category_custom": "category", // ঐচ্ছিক। কাস্টম APNS ক্যাটাগরি। "ios_root_params": { // ঐচ্ছিক। aps ডিকশনারিতে রুট লেভেল প্যারামিটার। "aps": { "content-available": "0", // ঐচ্ছিক। সাইলেন্ট পুশ পাঠাতে "1" এবং নিয়মিত পুশের জন্য "0" সেট করুন। "mutable-content": 1 // iOS10+ মিডিয়া অ্যাটাচমেন্টের জন্য আবশ্যক। }, "attachment": "YOUR_ATTACHMENT_URL", // iOS10+ মিডিয়া অ্যাটাচমেন্ট URL। "data": {} // ঐচ্ছিক। ব্যবহারকারী সরবরাহকৃত ডেটা, সর্বোচ্চ 4KB }, "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_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, // ঐচ্ছিক। Android 8.0 এবং উচ্চতর সংস্করণের ডিভাইসগুলির জন্য "importance" প্যারামিটার // এবং Android 7.1 এবং নিম্নতর সংস্করণের ডিভাইসগুলির জন্য "priority" প্যারামিটার // সেট করে। একটি নোটিফিকেশন চ্যানেল বা একটি নির্দিষ্ট নোটিফিকেশনের // ইন্টারাপশন লেভেল স্থাপন করে। // বৈধ মানগুলি হল -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, // ঐচ্ছিক। অ্যামাজন পুশ ড্রয়ারে পুশের অগ্রাধিকার, // বৈধ মানগুলি হল -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": { // আবশ্যক। MIME-এর বেস64-এ এনকোড করা নোটিফিকেশনের // কন্টেন্ট (XML বা raw) অবজেক্ট বা স্ট্রিং আকারে "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // ঐচ্ছিক। টাইল রিপ্লেসমেন্ট নীতিতে ব্যবহৃত হয়। // ১৬ অক্ষরের বেশি নয় এমন একটি আলফানিউমেরিক স্ট্রিং। "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, // ঐচ্ছিক। ক্রোম পুশ প্রদর্শনের সময় পরিবর্তন করে। ব্যবহারকারী // ইন্টারঅ্যাক্ট না করা পর্যন্ত পুশ প্রদর্শন করতে 0 সেট করুন। "chrome_image": "image_URL", // ঐচ্ছিক। বড় ইমেজের URL "chrome_root_params": { // ঐচ্ছিক। ক্রোমে পাঠানো মেসেজের জন্য নির্দিষ্ট প্যারামিটার সেট করুন। "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": { // ঐচ্ছিক। ফায়ারফক্সে পাঠানো মেসেজের জন্য নির্দিষ্ট প্যারামিটার সেট করুন। "key": "value" } }}এর মূল বিষয়গুলো খুব সহজ – সমস্ত ফিল্টার সত্তার সেট-এর উপর সঞ্চালিত হয়।
সেটগুলো এভাবে সংজ্ঞায়িত করা হয়:
১. নির্দিষ্ট অ্যাপে সাবস্ক্রাইব করা ডিভাইস (A);
২. নির্দিষ্ট ট্যাগ মান (T) বা অ্যাপ-নির্দিষ্ট ট্যাগ মান (AT) এর সাথে মিলে যাওয়া ডিভাইস;\
সিনট্যাক্স
Anchor link toউপরের তালিকা অনুযায়ী কিছু নমুনা দিয়ে চেষ্টা করা যাক।
অ্যাপ সাবস্ক্রাইবারদের টার্গেট করা
Anchor link to“A” ফিল্টার একটি নির্দিষ্ট অ্যাপে সাবস্ক্রাইব করা ডিভাইসগুলোর একটি সেট সংজ্ঞায়িত করে:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
যেখানে
- “XXXXX-XXXXX” – Pushwoosh অ্যাপ্লিকেশন কোড
- [“iOS”, “Android”, …] – টার্গেট করা প্ল্যাটফর্মের অ্যারে। যদি বাদ দেওয়া হয়, মেসেজটি এই অ্যাপের জন্য উপলব্ধ সমস্ত প্ল্যাটফর্মে পাঠানো হবে।
ট্যাগ ভ্যালু দ্বারা ফিল্টার করা
Anchor link to“T” ফিল্টারটি নির্দিষ্ট ট্যাগ মান নির্ধারিত ডিভাইসগুলির একটি সেট সংজ্ঞায়িত করে।
T(\"Age\", IN, [17,20])
ডিভাইসগুলির সেট সংজ্ঞায়িত করে যেগুলির “age” ট্যাগটি 17, 18, 19, 20 মানগুলির মধ্যে একটিতে সেট করা আছে।
ট্যাগের প্রকার এবং অপারেটর
Anchor link toসবচেয়ে গুরুত্বপূর্ণ বিষয় হল ট্যাগগুলো অ্যাপগুলোর মধ্যে শেয়ার করা হয়, এবং এটি আপনার টার্গেট ব্যবহারকারীদের একটি নির্দিষ্ট অ্যাপে আবদ্ধ না করে সেগমেন্ট এবং ফিল্টার করার জন্য একটি খুব শক্তিশালী উপকরণ উপস্থাপন করে।
ট্যাগটি তিনটি ভিন্ন ধরনের হতে পারে: স্ট্রিং, ইন্টিজার, লিস্ট। ট্যাগের ধরন নির্ধারণ করে যে আপনি একটি নির্দিষ্ট ট্যাগের জন্য কোন অপারেটর ব্যবহার করতে পারেন।
স্ট্রিং ট্যাগ
Anchor link toপ্রযোজ্য অপারেটর:
- EQ – একটি নির্দিষ্ট ট্যাগ মান সহ ডিভাইসগুলিকে টার্গেট করে
- IN – নির্দিষ্ট ট্যাগ মানগুলির যেকোনো একটি সহ ডিভাইসগুলিকে টার্গেট করে
- NOTIN – কোনো নির্দিষ্ট ট্যাগ মান ছাড়া ডিভাইসগুলিকে টার্গেট করে
- NOTEQ – একটি নির্দিষ্ট মানের সমান নয় এমন ট্যাগ মান সহ ডিভাইসগুলিকে টার্গেট করে
- NOTSET – একটি নির্দিষ্ট ট্যাগের জন্য কোনো মান ছাড়া ডিভাইসগুলিকে টার্গেট করে
- ANY – একটি নির্দিষ্ট ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইসগুলিকে টার্গেট করে
উদাহরণ:
T (\"Age\", EQ, 30) – ৩০ বছর বয়সী ব্যবহারকারীদের ফিল্টার করে
T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – যারা তাদের প্রিয় রঙ হিসাবে লাল, সবুজ বা নীল বেছে নিয়েছে তাদের ফিল্টার করে।
T (\"Name", NOTSET, \"\") – Name ট্যাগের জন্য কোনো মান ছাড়া ডিভাইসগুলিকে টার্গেট করে।
আপনি স্ট্রিং ট্যাগগুলির সাথে সংখ্যাসূচক মান ব্যবহার করতে পারেন, তবে এই ধরনের মানগুলি একটি স্ট্রিং-এ রূপান্তরিত হবে।
ইন্টিজার ট্যাগ
Anchor link toপ্রযোজ্য অপারেটর:
- GTE – একটি নির্দিষ্ট মানের চেয়ে বড় বা সমান
- LTE– একটি নির্দিষ্ট মানের চেয়ে ছোট বা সমান
- EQ – একটি নির্দিষ্ট মানের সমান
- BETWEEN – নির্দিষ্ট সর্বনিম্ন এবং সর্বোচ্চ মানের মধ্যে
- IN – নির্দিষ্ট মানগুলির যেকোনো একটি
- NOTIN – একটি ডিভাইসে কোনো নির্দিষ্ট মান নির্ধারিত নেই
- NOTEQ – একটি নির্দিষ্ট মানের সমান নয় এমন ট্যাগ মান সহ ডিভাইস
- NOTSET – একটি নির্দিষ্ট ট্যাগের জন্য কোনো মান ছাড়া ডিভাইস
- ANY – একটি নির্দিষ্ট ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
উদাহরণ:
T (\"Level\", EQ, 14) – শুধুমাত্র ১৪ লেভেলের ব্যবহারকারীদের ফিল্টার করে।
T (\"Level\", BETWEEN, [1,5) – ১, ২, ৩, ৪, এবং ৫ লেভেলের ব্যবহারকারীদের ফিল্টার করে।
T (\"Level", GTE, 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 | Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। |
| 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 | পেজিনেশনের জন্য ব্যবহৃত হয়। পূর্ববর্তী /getPushHistory কল থেকে শেষ messageId। নিচে বিস্তারিত দেখুন। |
{ "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", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "source": null, // ঐচ্ছিক। সম্ভাব্য মানগুলি হল null, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // ঐচ্ছিক। সম্ভাব্য মানগুলি হল "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // ঐচ্ছিক। "searchBy" ফিল্ড অনুযায়ী সেট করা অনুসন্ধানের মান। "lastNotificationID": 0, // ঐচ্ছিক। পেজিনেশনের জন্য ব্যবহৃত হয়। পূর্ববর্তী // /getPushHistory কল থেকে শেষ messageId। নিচে বিস্তারিত দেখুন। "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 | Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন। |
| message* | string | /createMessage রেসপন্সে প্রাপ্ত মেসেজ কোড। |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // আবশ্যক। Pushwoosh কন্ট্রোল প্যানেল থেকে API অ্যাক্সেস টোকেন "message": "xxxx-xxxxxxx-xxxxxx" // আবশ্যক। /createMessage রেসপন্সে প্রাপ্ত মেসেজ কোড }}স্ট্যাটাস কোড:
| HTTP স্ট্যাটাস কোড | status_code | বর্ণনা |
|---|---|---|
| 200 | 200 | মেসেজ সফলভাবে বাতিল করা হয়েছে |
| 200 | 210 | আর্গুমেন্ট ত্রুটি। আরও তথ্যের জন্য status_message দেখুন। |
| 400 | N/A | ত্রুটিপূর্ণ রিকোয়েস্ট স্ট্রিং |
| 500 | 500 | অভ্যন্তরীণ ত্রুটি |