# বিজ্ঞপ্তি দিন

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

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

## অনুরোধের কাঠামো

অনুরোধের বডিটি একটি `NotifyRequest` যার দুটি প্রকারের মধ্যে ঠিক একটি থাকে:

- [`segment`](#notifysegment): সেগমেন্ট কোড, একটি [seglang](/bn/developer/api-reference/segmentation-filters-api/segmentation-language/) এক্সপ্রেশন, বা একটি স্ট্রাকচার্ড ফিল্টার এক্সপ্রেশন দ্বারা একটি অডিয়েন্স সেগমেন্টকে টার্গেট করুন।
- [`transactional`](#notifytransactional): hwids, ইউজার আইডি, পুশ টোকেন, বা টেস্ট ডিভাইসের একটি সুস্পষ্ট তালিকায় পাঠান।

```json title="আকৃতি"
{
  "segment": { ... }       // অথবা
  "transactional": { ... }
}
```

## NotifySegment

যে ব্যবহারকারীরা একটি অডিয়েন্স সেগমেন্ট বা ফিল্টার এক্সপ্রেশনের সাথে মেলে তাদের টার্গেট করে।

| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
| `schedule` | [`Schedule`](#schedule) | কখন এবং কিভাবে পাঠাতে হবে। আবশ্যক। |
| `application` | string | [অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code)। |
| `platforms` | array of [`Platform`](#platform-enum) | যে প্ল্যাটফর্মগুলিতে বার্তাটি টার্গেট করা হয়েছে। |
| `code` | string | [সেগমেন্ট কোড](/bn/developer/api-reference/api-identifiers/#segment--filter-code)। `expression` এবং `filter_expression` এর সাথে পারস্পরিকভাবে স্বতন্ত্র। |
| `expression` | string | [Seglang](/bn/developer/api-reference/segmentation-filters-api/segmentation-language/) এক্সপ্রেশন। |
| `filter_expression` | `FilterExpression` | স্ট্রাকচার্ড ফিল্টার এক্সপ্রেশন (অ্যাডভান্সড)। |
| `payload` | [`Payload`](/bn/developer/api-reference/messaging-api-v2/payload-reference/) | পুশ / এসএমএস / টেলিগ্রাম / কাকাও / লাইন / হোয়াটসঅ্যাপ / ভাইবার পেলোড। `email_payload` এর সাথে পারস্পরিকভাবে স্বতন্ত্র। |
| `email_payload` | [`EmailPayload`](/bn/developer/api-reference/messaging-api-v2/email-payload-reference/) | ইমেল পেলোড। |
| `campaign` | string | এই বার্তাটি অ্যাট্রিবিউট করার জন্য [ক্যাম্পেইন কোড](/bn/developer/api-reference/api-identifiers/#campaign-code)। |
| `frequency_capping` | [`FrequencyCapping`](#frequencycapping) | প্রতি-ব্যবহারকারী ফ্রিকোয়েন্সি সীমা। |
| `send_rate` | [`SendRate`](#sendrate) | পাঠানোর জন্য থ্রটলিং। |
| `message_type` | [`MessageType`](#messagetype-enum) | `MESSAGE_TYPE_MARKETING` (ডিফল্ট) বা `MESSAGE_TYPE_TRANSACTIONAL`। কন্ট্রোল-গ্রুপ ফিল্টারিং নিয়ন্ত্রণ করে। |
| `dynamic_content_placeholders` | map&lt;string, string&gt; | কন্টেন্টে প্লেসহোল্ডার প্রতিস্থাপন করে। |
| `meta_data` | object | ডাউনস্ট্রিম অ্যানালিটিক্সে ফরোয়ার্ড করা ফ্রি-ফর্ম মেটাডেটা। |

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

```bash
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

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

| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
| `schedule` | [`Schedule`](#schedule) | আবশ্যক। |
| `application` | string | [অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code)। |
| `platforms` | array of [`Platform`](#platform-enum) | যে প্ল্যাটফর্মগুলিতে বার্তাটি টার্গেট করা হয়েছে। |
| `test_devices` | bool | যদি `true` হয়, তবে শুধুমাত্র অ্যাপের টেস্ট ডিভাইসগুলিতে পাঠান। |
| `hwids` | `{ "list": [string, ...] }` | শুধুমাত্র এই [hwids](/bn/developer/pushwoosh-knowledge-hub/device-identifiers/#hwid) এ পাঠান। |
| `users` | `{ "list": [string, ...] }` | শুধুমাত্র এই [ইউজার আইডি](/bn/developer/pushwoosh-knowledge-hub/users-userids/) তে পাঠান। |
| `push_tokens` | `{ "list": [string, ...] }` | শুধুমাত্র এই [পুশ টোকেন](/bn/developer/pushwoosh-knowledge-hub/device-identifiers/#push-token) এ পাঠান। |
| `payload` | [`Payload`](/bn/developer/api-reference/messaging-api-v2/payload-reference/) | পুশ / এসএমএস / টেলিগ্রাম / কাকাও / লাইন / হোয়াটসঅ্যাপ / ভাইবার পেলোড। |
| `email_payload` | [`EmailPayload`](/bn/developer/api-reference/messaging-api-v2/email-payload-reference/) | ইমেল পেলোড। |
| `return_unknown_identifiers` | bool | যখন `true` হয়, প্রতিক্রিয়ার `unknown_identifiers` তালিকায় এমন আইডেন্টিফায়ার থাকে যা পাওয়া যায়নি। |
| `use_latest_user_device` | bool | শুধুমাত্র যখন আপনি `users` টার্গেট করেন তখন প্রযোজ্য। যখন `true` হয়, বার্তাটি প্রতিটি ব্যবহারকারীর সবচেয়ে সাম্প্রতিক সক্রিয় ডিভাইসে বিতরণ করা হয় — যেটিতে সর্বশেষ অ্যাপ্লিকেশন খোলার সময় ছিল — সেই ইউজার আইডির সাথে যুক্ত সমস্ত ডিভাইসের পরিবর্তে। ডিফল্ট `false` (প্রতিটি ডিভাইসে পাঠান)। |
| `campaign`, `frequency_capping`, `send_rate`, `message_type`, `dynamic_content_placeholders`, `meta_data` | | উপরের `NotifySegment` দেখুন। |

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

### উদাহরণ: ইউজার আইডি দ্বারা লেনদেনমূলক

```bash
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
    }
  }'
```

## প্রতিক্রিয়া

```json
{
  "result": {
    "message_code": "XXXXX-XXXXX-XXXXX",
    "unknown_identifiers": []
  }
}
```

| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
| `message_code` | string | অনন্য [বার্তা কোড](/bn/developer/api-reference/api-identifiers/#message-code)। এটি [`/getMessageDetails`](/bn/developer/api-reference/messages-api/#getmessagedetails) এবং বার্তা পরিসংখ্যান এন্ডপয়েন্টের সাথে ব্যবহার করুন। |
| `unknown_identifiers` | array of string | অ্যাকাউন্টে পাওয়া যায়নি এমন আইডেন্টিফায়ার। শুধুমাত্র যখন `transactional` প্রকারে `return_unknown_identifiers: true` সেট করা হয়েছিল তখন এটি পূরণ করা হয়। |

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

### শিডিউল

```json
{
  "at": "2026-05-01T12:00:00Z",
  "follow_user_timezone": true,
  "past_timezones_behaviour": "PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY"
}
```

| ফিল্ড | টাইপ | বর্ণনা |
|---|---|---|
| `at` | timestamp | পাঠানোর পরম সময় (RFC 3339)। যদি অতীতে হয়, বার্তাটি অবিলম্বে পাঠানো হয়। ভবিষ্যতে সর্বোচ্চ ১৪ দিন। |
| `after` | duration | `at` এর বিকল্প। "এখন" থেকে এই অফসেটের পরে পাঠান (যেমন `"3600s"`)। |
| `follow_user_timezone` | bool | যখন `true` হয়, প্রতিটি ডিভাইস তার স্থানীয় টাইমজোনে `at` সময়ে বার্তাটি পায়। |
| `past_timezones_behaviour` | enum | `PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY` (ডিফল্ট), `PAST_TIMEZONES_BEHAVIOUR_DO_NOT_SEND`, বা `PAST_TIMEZONES_BEHAVIOUR_NEXT_DAY`। শুধুমাত্র যখন `follow_user_timezone` `true` হয় তখন অর্থপূর্ণ। |

### FrequencyCapping

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

```json
{ "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): যে ব্যবহারকারীরা ইতিমধ্যে ক্যাপে পৌঁছেছে তাদের সফট-এভয়েড করুন (তারা এখনও অ্যানালিটিক্সের জন্য গণনা করা হয়)।

<Aside type="caution" title="গুরুত্বপূর্ণ">
`days` এবং `count` অসামঞ্জস্যপূর্ণ শূন্যতা সহ পাঠানো (যেমন `{"days": 0, "count": 5}`) `400` রিটার্ন করে। এই যাচাইকরণটি `Notify`-এর জন্য একটি ব্রেকিং পরিবর্তন — যে ক্লায়েন্টরা আগে একটি একা `0` নীরবে উপেক্ষা করার উপর নির্ভর করত তারা এখন পরিবর্তে একটি ত্রুটি পাবে।
</Aside>

### SendRate

```json
{ "value": 500, "bucket": "1s", "avoid": false }
```

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

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

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

### MessageType enum

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

## সম্পর্কিত

<CardGrid>
  <LinkCard title="বাতিল করুন" href="/developer/api-reference/messaging-api-v2/cancel/" />
  <LinkCard title="পেলোড রেফারেন্স" href="/developer/api-reference/messaging-api-v2/payload-reference/" />
  <LinkCard title="ইমেল পেলোড রেফারেন্স" href="/developer/api-reference/messaging-api-v2/email-payload-reference/" />
  <LinkCard title="v1 থেকে মাইগ্রেশন" href="/developer/api-reference/messaging-api-v2/migration-from-v1/" />
</CardGrid>