বিষয়বস্তুতে যান

নোটিফাই

POST https://api.pushwoosh.com/messaging/v2/notify

একটি একক বার্তা তৈরি এবং সময়সূচী করে।

রিকোয়েস্ট স্ট্রাকচার

Anchor link to

রিকোয়েস্ট বডি একটি NotifyRequest যা দুটি ধরণের মধ্যে ঠিক একটি:

  • segment: সেগমেন্ট কোড দ্বারা একটি অডিয়েন্স সেগমেন্টকে টার্গেট করুন, অথবা — প্রথমে একটি সেগমেন্ট তৈরি না করে — একটি seglang এক্সপ্রেশন বা একটি স্ট্রাকচার্ড ফিল্টার এক্সপ্রেশন ব্যবহার করুন।
  • transactional: hwids, ইউজার আইডি, পুশ টোকেন, বা টেস্ট ডিভাইসের একটি সুস্পষ্ট তালিকায় পাঠান।
Shape
{
"segment": { ... }, // OR
"transactional": { ... },
"transaction_id": "unique-uuid"
}
ফিল্ডটাইপবর্ণনা
transaction_idstringঐচ্ছিক। রিকোয়েস্টের জন্য আইডমপোটেন্সি কী — segment এবং transactional উভয়ের সাথে কাজ করে। ৫ মিনিটের মধ্যে একই transaction_id দিয়ে পুনরায় কল করলে ডুপ্লিকেট বার্তা পাঠানোর পরিবর্তে আসল message_code ফেরত আসে। একটি UUID বা প্রতি লজিক্যাল সেন্ডের জন্য একটি অনন্য মান ব্যবহার করুন।

NotifySegment

Anchor link to

যেসব ব্যবহারকারী একটি অডিয়েন্স সেগমেন্ট বা ফিল্টার এক্সপ্রেশনের সাথে মেলে তাদের টার্গেট করে। code, expression, বা filter_expression-এর মধ্যে ঠিক একটি সেট করুন। expression এবং filter_expression-এর জন্য, আগে থেকে কোনো সেগমেন্ট তৈরি করার প্রয়োজন নেই — এক্সপ্রেশনটি শুধুমাত্র এই সেন্ডের জন্য ইনলাইন মূল্যায়ন করা হয়।

ফিল্ডটাইপবর্ণনা
scheduleScheduleকখন এবং কিভাবে পাঠাতে হবে। আবশ্যক।
applicationstringঅ্যাপ্লিকেশন কোড।
platformsarray of Platformযেসব প্ল্যাটফর্মে বার্তাটি টার্গেট করা হয়েছে।
codestringআগে থেকে সেভ করা একটি সেগমেন্টের সেগমেন্ট কোড। expression এবং filter_expression-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।
expressionstringSeglang এক্সপ্রেশন, শুধুমাত্র এই সেন্ডের জন্য মূল্যায়ন করা হয় — কোনো সেভ করা সেগমেন্টের প্রয়োজন নেই। code এবং filter_expression-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।
filter_expressionFilterExpressionexpression-এর মতো একই লজিক, একটি seglang স্ট্রিং-এর পরিবর্তে একটি স্ট্রাকচার্ড অবজেক্ট হিসাবে। code এবং expression-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ। FilterExpression স্কিমা সর্বজনীনভাবে নথিভুক্ত নয় — যদি আপনার স্ট্রাকচার্ড ফর্মের প্রয়োজন হয় তবে Pushwoosh সাপোর্ট থেকে এটি অনুরোধ করুন।
payloadPayloadপুশ / SMS / টেলিগ্রাম / Kakao / LINE / WhatsApp / Viber / Facebook Messenger পেলোড। email_payload-এর সাথে পারস্পরিকভাবে এক্সক্লুসিভ।
email_payloadEmailPayloadইমেল পেলোড।
campaignstringএই বার্তাটিকে অ্যাট্রিবিউট করার জন্য ক্যাম্পেইন কোড।
campaign_namestringএই বার্তাটির অভ্যন্তরীণ নাম, যা Message History-এ সারির শিরোনাম হিসেবে এবং এর এক্সপোর্টে দেখানো হয়। উপরের campaign-এর সাথে এর কোনো সম্পর্ক নেই। এটি বার্তা গ্রুপ করে না বা ডেলিভারি প্রভাবিত করে না। সর্বোচ্চ ২৫৫ অক্ষর, ছাঁটা হয়। এটি বাদ দিন বা খালি রাখুন, যাতে সারির শিরোনাম পেলোডের নিজস্ব কনটেন্ট থেকে আসে।
frequency_cappingFrequencyCappingপ্রতি-ব্যবহারকারী ফ্রিকোয়েন্সি সীমা।
send_rateSendRateসেন্ডের জন্য থ্রটলিং।
message_typeMessageTypeMESSAGE_TYPE_MARKETING (ডিফল্ট) বা MESSAGE_TYPE_TRANSACTIONAL। কন্ট্রোল-গ্রুপ ফিল্টারিং নিয়ন্ত্রণ করে।
dynamic_content_placeholdersmap<string, string>কন্টেন্টে প্লেসহোল্ডার প্রতিস্থাপন করে।
meta_dataobjectডাউনস্ট্রিম অ্যানালিটিক্সে ফরোয়ার্ড করা ফ্রি-ফর্ম মেটাডেটা।
use_latest_user_deviceboolযখন true, তখন বার্তাটি প্রতিটি ব্যবহারকারীর সবচেয়ে সম্প্রতি সক্রিয় ডিভাইসে (সর্বশেষ Last Application Open সহ ডিভাইস) পৌঁছে দেয়, সেগমেন্ট দ্বারা ম্যাচ করা প্রতিটি ডিভাইসের পরিবর্তে। platforms-এ স্কোপ করা: শুধুমাত্র সেই প্ল্যাটফর্মের ডিভাইসগুলি বিবেচনা করা হয়, এবং যদি কোনোটিতে Last Application Open ডেটা না থাকে, তাহলে সেন্ড ড্রপ করার পরিবর্তে প্রথম ম্যাচিং ডিভাইসটি ব্যবহার করা হয়। ডিফল্ট false (প্রতিটি ডিভাইসে পাঠান)।

উদাহরণ: একটি সেগমেন্টে পাঠান

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"segment": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"code": "active_users",
"payload": {
"content": {
"localized_content": {
"en": {
"ios": { "body": "Hello!" },
"android": { "body": "Hello!" }
}
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_MARKETING"
}
}'

NotifyTransactional

Anchor link to

প্রাপকদের একটি সুস্পষ্ট তালিকায় পাঠায়।

ফিল্ডটাইপবর্ণনা
scheduleScheduleআবশ্যক।
applicationstringঅ্যাপ্লিকেশন কোড।
platformsarray of Platformযেসব প্ল্যাটফর্মে বার্তাটি টার্গেট করা হয়েছে।
test_devicesboolযদি true হয়, শুধুমাত্র অ্যাপের টেস্ট ডিভাইসগুলিতে পাঠান।
hwids{ "list": [string, ...] }শুধুমাত্র এই hwids-এ পাঠান।
users{ "list": [string, ...] }শুধুমাত্র এই ইউজার আইডি-তে পাঠান।
push_tokens{ "list": [string, ...] }শুধুমাত্র এই পুশ টোকেন-এ পাঠান।
payloadPayloadপুশ / SMS / টেলিগ্রাম / Kakao / LINE / WhatsApp / Viber / Facebook Messenger পেলোড।
email_payloadEmailPayloadইমেল পেলোড।
return_unknown_identifiersboolযখন true, তখন রেসপন্সের unknown_identifiers তালিকায় এমন আইডেন্টিফায়ারগুলো থাকে যা পাওয়া যায়নি।
use_latest_user_deviceboolশুধুমাত্র যখন আপনি users-কে টার্গেট করেন তখন প্রযোজ্য। উপরের NotifySegment-এর মতো একই আচরণ — প্রতি ডিভাইসের পরিবর্তে প্রতি ব্যবহারকারী একটি বার্তা পৌঁছে দেয়, platforms-এ স্কোপ করা। ডিফল্ট false।
campaign, campaign_name, frequency_capping, send_rate, message_type, dynamic_content_placeholders, meta_dataউপরে NotifySegment দেখুন।

test_devices, hwids, users, এবং push_tokens পারস্পরিকভাবে এক্সক্লুসিভ। ঠিক একটি সেট করতে হবে।

উদাহরণ: ইউজার আইডি দ্বারা ট্রানজ্যাকশনাল

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-123", "user-456"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"return_unknown_identifiers": true,
"use_latest_user_device": true
}
}'

রেসপন্স

Anchor link to
{
"result": {
"message_code": "XXXXX-XXXXX-XXXXX",
"unknown_identifiers": []
}
}
ফিল্ডটাইপবর্ণনা
message_codestringঅনন্য মেসেজ কোড। এটি /getMessageDetails এবং মেসেজ পরিসংখ্যান এন্ডপয়েন্টের সাথে ব্যবহার করুন।
unknown_identifiersarray of stringঅ্যাকাউন্টে পাওয়া যায়নি এমন আইডেন্টিফায়ার। শুধুমাত্র যখন transactional কাইন্ডে return_unknown_identifiers: true সেট করা হয়েছিল তখন পপুলেট করা হয়।

শেয়ার্ড টাইপ

Anchor link to
{
"at": "2026-05-01T12:00:00Z",
"follow_user_timezone": true,
"past_timezones_behaviour": "PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY"
}
ফিল্ডটাইপবর্ণনা
attimestampপরম পাঠানোর সময় (RFC 3339)। যদি অতীতে হয়, বার্তাটি অবিলম্বে পাঠানো হয়। ভবিষ্যতে সর্বোচ্চ ১৪ দিন।
afterdurationat-এর বিকল্প। “এখন” থেকে এই অফসেটের পরে পাঠান (যেমন "3600s")।
follow_user_timezoneboolযখন true, প্রতিটি ডিভাইস তার স্থানীয় টাইমজোনে at সময়ে বার্তাটি গ্রহণ করে।
past_timezones_behaviourenumPAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY (ডিফল্ট), PAST_TIMEZONES_BEHAVIOUR_DO_NOT_SEND, বা PAST_TIMEZONES_BEHAVIOUR_NEXT_DAY। শুধুমাত্র যখন follow_user_timezone true হয় তখন অর্থপূর্ণ।

FrequencyCapping

Anchor link to

মার্কেটিং সেন্ডের জন্য প্রতি-ব্যবহারকারী ফ্রিকোয়েন্সি সীমা। ক্যাপিং নিষ্ক্রিয় করতে, frequency_capping সম্পূর্ণভাবে বাদ দিন, অথবা days: 0 এবং count: 0 একসাথে পাঠান।

{ "days": 7, "count": 3, "exclude": false, "avoid": true }
  • days (int, 1–30, বা 0 ক্যাপিং নিষ্ক্রিয় করতে): লুক-ব্যাক উইন্ডো। অবশ্যই count-এর সাথে একসাথে পাঠাতে হবে — যদি একটি 0 হয়, অন্যটিও 0 হতে হবে; একটি 0 এবং অন্যটি নন-জিরো পাঠালে 400 ফেরত আসে।
  • count (int, 1 বা তার বেশি, বা 0 ক্যাপিং নিষ্ক্রিয় করতে): days-এর মধ্যে অনুমোদিত সর্বোচ্চ বার্তা। উপরের days-এর মতো একই পেয়ারিং নিয়ম।
  • exclude (bool): যারা ইতিমধ্যে ক্যাপে পৌঁছেছে তাদের হার্ড-এক্সক্লুড করুন।
  • avoid (bool): যারা ইতিমধ্যে ক্যাপে পৌঁছেছে তাদের সফট-এভয়েড করুন (তারা এখনও অ্যানালিটিক্সের জন্য গণনা করা হয়)।
{ "value": 500, "bucket": "1s", "avoid": false }

সেন্ড থ্রটল করে। value হল প্রতি bucket-এ বার্তা; সাধারণ bucket হল "1s"।

প্ল্যাটফর্ম enum

Anchor link to

IOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, HUAWEI_ANDROID, SMS, WEB, KAKAO, TELEGRAM, LINE, WHATS_APP, VIBER, FB_MESSENGER।

MessageType enum

Anchor link to
  • MESSAGE_TYPE_UNSPECIFIED: MESSAGE_TYPE_MARKETING-এর সমতুল্য।
  • MESSAGE_TYPE_MARKETING: কন্ট্রোল-গ্রুপ ফিল্টারিং এবং ফ্রিকোয়েন্সি ক্যাপিং-এর অধীন।
  • MESSAGE_TYPE_TRANSACTIONAL: কন্ট্রোল-গ্রুপ ফিল্টারিং এবং ফ্রিকোয়েন্সি ক্যাপিং এড়িয়ে যায়। অর্ডার কনফার্মেশন, OTP, এবং অনুরূপ ক্রিটিক্যাল ফ্লো-এর জন্য ব্যবহার করুন।

সম্পর্কিত

Anchor link to