# সেগমেন্টেশন ল্যাঙ্গুয়েজ

Pushwoosh ট্যাগ ভ্যালুর উপর ভিত্তি করে গ্র্যানুলার সেগমেন্ট তৈরির জন্য একটি শক্তিশালী সেগমেন্টেশন ইঞ্জিন অফার করে। **সেগমেন্টেশন ল্যাঙ্গুয়েজ** হলো সেগমেন্টেশন ক্রাইটেরিয়া লেখা এবং একত্রিত করার একটি নির্দিষ্ট উপায়, যা সেই ক্রাইটেরিয়াগুলোর সাথে মিলে যাওয়া ব্যবহারকারীদের একটি নির্দিষ্ট গ্রুপকে বর্ণনা করে এবং তাদের একটি একক অডিয়েন্স সেগমেন্ট হিসেবে বিবেচনা করে।

এই নিবন্ধটি সেগমেন্টেশন ল্যাঙ্গুয়েজের প্রাথমিক ধারণা এবং সিনট্যাক্স বর্ণনা করে এবং বিভিন্ন ক্ষেত্রে সেগমেন্টেশন ক্রাইটেরিয়া তৈরির জন্য বিস্তারিত উদাহরণ প্রদান করে।

## মূল বিষয়সমূহ

আপনার ব্যবহারকারী বেসের প্রতিটি ডিভাইসের সাথে নির্দিষ্ট অ্যাট্রিবিউট যুক্ত থাকে **ট্যাগ ভ্যালুর** মাধ্যমে।

উদাহরণস্বরূপ, ধরা যাক জেন নামের একজন ব্যবহারকারী টোকিওতে থাকেন এবং তার বয়স ২৮। সেই ব্যবহারকারীর ডিভাইসের জন্য নিম্নলিখিত ট্যাগগুলো সেট করা থাকবে:

*   Name: Jane
*   City: Tokyo
*   Age: 28

জেনকে টার্গেট করার জন্য, আপনাকে একটি সেগমেন্টকে নিম্নরূপ বর্ণনা করতে হবে:

`T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")`

এই শর্তগুলোর সংমিশ্রণটি একটি **ফিল্টার এক্সপ্রেশন** যা সেগমেন্টেশন ল্যাঙ্গুয়েজে ব্যবহারকারীদের গ্রুপ অর্থাৎ অডিয়েন্স সেগমেন্ট বর্ণনা করার জন্য ব্যবহৃত হয়।

## ফিল্টার এক্সপ্রেশন

ফিল্টার এক্সপ্রেশন হলো একটি স্ট্রিং যা আপনার প্রয়োজনীয় সেগমেন্ট বর্ণনা করার জন্য একটি শর্ত বা শর্তের সংমিশ্রণ ধারণ করে।

### শর্তাবলী

প্রতিটি শর্ত ডিভাইসের একটি সেগমেন্ট বর্ণনা করে যা সেই শর্তে নির্দিষ্ট করা ক্রাইটেরিয়ার সাথে মেলে।

উদাহরণস্বরূপ, নিম্নলিখিত শর্তটি টোকিওতে বসবাসকারী ব্যবহারকারীদের একটি সেগমেন্ট তৈরি করে:

`T("City", e, "Tokyo")`

যেখানে

*   T একটি ট্যাগ (শর্তের প্রকার);
*   eq প্রয়োগ করার জন্য একটি অপারেটর;
*   "Tokyo" একটি ট্যাগ ভ্যালু যা ব্যবহারকারীদের ডিভাইসের সাথে যুক্ত আছে।

#### শর্তের প্রকার

সেগমেন্টেশনের জন্য নিম্নলিখিত শর্তের প্রকারগুলো উপলব্ধ:

*   **A** (Application) – একটি নির্দিষ্ট অ্যাপ ইনস্টল করা ডিভাইসের একটি সেগমেন্ট বর্ণনা করে। উপনাম: **App**, **Application**;
*   **T** (Tag) – নির্দিষ্ট ট্যাগ ভ্যালু সহ ডিভাইসের একটি সেগমেন্ট বর্ণনা করে;
*   **AT** (App-scoped tag) – একটি নির্দিষ্ট অ্যাপ্লিকেশনের মধ্যে একটি ট্যাগ ভ্যালু খোঁজে; প্রথম আর্গুমেন্ট হিসেবে অ্যাপ কোড প্রয়োজন। উপনাম: **Tag**;
*   **Event** – একটি নির্দিষ্ট Pushwoosh ইভেন্ট ট্রিগার করা ডিভাইসের একটি সেগমেন্ট বর্ণনা করে;
*   **Geo** – একটি নির্দিষ্ট ভৌগোলিক ব্যাসার্ধের মধ্যে থাকা ডিভাইসের একটি সেগমেন্ট বর্ণনা করে;
*   **BTTS** – তাদের পাঠানোর সেরা সময়ের উপর ভিত্তি করে ডিভাইসের একটি সেগমেন্ট বর্ণনা করে;
*   **Updated** – তাদের শেষ আপডেটের টাইমস্ট্যাম্পের উপর ভিত্তি করে ডিভাইসের একটি সেগমেন্ট বর্ণনা করে;
*   **Segment** – তার কোড দ্বারা অন্য একটি ফিল্টার/সেগমেন্টকে রেফারেন্স করে;

### শর্তাবলী সহ অপারেশন

জটিল সেগমেন্ট তৈরির জন্য, ফিল্টার এক্সপ্রেশনের মধ্যে শর্তাবলীতে নিম্নলিখিত অপারেশনগুলো প্রয়োগ করা যেতে পারে:

#### ইউনিয়ন (+)

সেগমেন্টগুলোকে যুক্ত করে, অর্থাৎ, এমন ব্যবহারকারীদের একটি নতুন সেগমেন্ট তৈরি করে যারা নির্দিষ্ট শর্তগুলোর মধ্যে অন্তত একটির সাথে মেলে।

<img src="/filters-segmentation-language-1.webp" alt=""/>

উদাহরণস্বরূপ, টোকিও বা ওসাকায় বসবাসকারী ব্যবহারকারীদের টার্গেট করার জন্য, আপনাকে নিম্নলিখিত শর্তাবলী দিয়ে সেগমেন্টটি বর্ণনা করতে হবে:

`T("City", eq, "Tokyo") + T("City", eq, "Osaka")`

<Aside type="note">
লজিক্যাল **ডিসজাংশন** (**OR**) এর সমতুল্য। **or** অপারেটর হিসেবেও লেখা যেতে পারে।
</Aside>

#### ইন্টারসেকশন (*)

শর্তাবলী দ্বারা বর্ণিত উভয় সেগমেন্টের অন্তর্গত ব্যবহারকারীদের একটি সেগমেন্ট তৈরি করে। সুতরাং, শুধুমাত্র সেই ব্যবহারকারীরা অন্তর্ভুক্ত হবেন যারা আপনার নির্দিষ্ট করা প্রতিটি শর্ত মেনে চলেন।

<img src="/filters-segmentation-language-2.webp" alt=""/>

নিম্নলিখিত এক্সপ্রেশনটি এমন ব্যবহারকারীদের একটি সেগমেন্ট বর্ণনা করে যারা টোকিওতে থাকেন এবং তাদের নাম উল্লেখ করেছেন:

`T("City", eq, "Tokyo") * T("Name", any)`

<Aside type="note">
লজিক্যাল **কনজাংশন** (**AND**) এর অনুরূপ। **and** অপারেটর হিসেবেও লেখা যেতে পারে।
</Aside>

#### পার্থক্য (\)

এমন ব্যবহারকারীদের একটি সেগমেন্ট তৈরি করে যারা বর্ণিত সেগমেন্টগুলোর একটির অন্তর্গত এবং অন্যটির অন্তর্গত নয়।

<img src="/filters-segmentation-language-3.webp" alt=""/>

যে ব্যবহারকারীরা টোকিওতে থাকেন কিন্তু তাদের নাম দেননি, তাদের নিম্নরূপ বর্ণনা করা হবে:

`T("City", eq, "Tokyo") \ T("Name", any)`

<Aside type="note">
লজিক্যাল **নেগেশন** (**NOT**) এর সমতুল্য। **not** অপারেটর হিসেবেও লেখা যেতে পারে।
</Aside>

#### প্যারেন্থেসিস

আপনার ফিল্টার এক্সপ্রেশনে শর্তাবলী দিয়ে অপারেশন সম্পাদনের ক্রম নির্ধারণ করে।

উদাহরণস্বরূপ, নিম্নলিখিত ফিল্টার এক্সপ্রেশনটি প্রথমে 12345-67890 সাবস্ক্রাইবারদের একটি সেগমেন্ট পাবে যাদের বয়স 18 এবং তারপর সেই সেগমেন্টের সমস্ত পুরুষদের বাদ দেবে:

`( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")`

## ট্যাগ শর্তাবলী অপারেটর

প্রতিটি ট্যাগ প্রকারের জন্য, তাদের নিজস্ব অপারেটর প্রয়োগ করা হয়।

### ইন্টিজার ট্যাগ অপারেটর

*   **eq** - একটি নির্দিষ্ট মানের সমান
*   **noteq** - একটি নির্দিষ্ট মানের সমান নয়
*   **lte** - একটি নির্দিষ্ট মানের চেয়ে কম বা সমান
*   **gte** - একটি নির্দিষ্ট মানের চেয়ে বেশি বা সমান
*   **in** - নির্দিষ্ট মানগুলোর যেকোনো একটি
*   **notin** - নির্দিষ্ট মানগুলোর কোনোটির সমান নয়
*   **between** - একটি নির্দিষ্ট পরিসরের মধ্যে
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস

<Aside type="note" title="ইন্টিজার ট্যাগ সিনট্যাক্স উদাহরণ">
`T("int", eq, 42)`
</Aside>

### স্ট্রিং ট্যাগ অপারেটর

*   **eq** - একটি নির্দিষ্ট মানের সমান
*   **noteq** - একটি নির্দিষ্ট মানের সমান নয়
*   **startswith** - একটি নির্দিষ্ট উপসর্গ দিয়ে শুরু হয়
*   **endswith** - একটি নির্দিষ্ট প্রত্যয় দিয়ে শেষ হয়
*   **contains** - একটি নির্দিষ্ট সাবস্ট্রিং ধারণ করে
*   **in** - নির্দিষ্ট মানগুলোর যেকোনো একটির সমান
*   **notin** - নির্দিষ্ট মানগুলোর কোনোটির সমান নয়
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস

<Aside type="note" title="স্ট্রিং ট্যাগ সিনট্যাক্স উদাহরণ">
* `T("str", eq, "kangaroo")` - সঠিক মিল
* `T("str", startswith, "kang")` - "kang" দিয়ে শুরু
* `T("str", endswith, "roo")` - "roo" দিয়ে শেষ
* `T("str", contains, "nga")` - স্ট্রিংয়ের যেকোনো জায়গায় "nga" ধারণ করে
</Aside>

### লিস্ট ট্যাগ অপারেটর

*   **in** - নির্দিষ্ট ট্যাগ মানগুলোর যেকোনো একটি সহ ডিভাইস
*   **notin** - ডিভাইসের সাথে যুক্ত নির্দিষ্ট ট্যাগ মানগুলোর কোনোটিই নয়
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস

<Aside type="note" title="লিস্ট ট্যাগ সিনট্যাক্স উদাহরণ">
`T("list", notin, ["kangaroo", "raccoon"])`
</Aside>

### ডেট ট্যাগ অপারেটর

*   **eq** - নির্দিষ্ট তারিখের সমান
*   **noteq** - নির্দিষ্ট তারিখের সমান নয়
*   **lte** - নির্দিষ্ট তারিখের আগে বা সেই তারিখে
*   **gte** - নির্দিষ্ট তারিখের পরে বা সেই তারিখে
*   **in** - নির্দিষ্ট তারিখগুলোর যেকোনো একটির সমান
*   **notin** - নির্দিষ্ট তারিখগুলোর কোনোটির সমান নয়
*   **between** - একটি নির্দিষ্ট পরিসরের মধ্যে
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস
*   **match** - বছরের একটি নির্দিষ্ট মাস এবং মাসের একটি দিনের সাথে মেলে।

<Aside type="note" title="match অপারেটরের উদাহরণ">


* `AT("XXXXX-XXXXX", "Date tag", match month 4 day 1)` - যে ডিভাইসগুলোতে "Date tag" যেকোনো বছরের ১লা এপ্রিলে সেট করা আছে।
* `AT("XXXXX-XXXXX", "Date tag", match month "now" day 13)` - যে ডিভাইসগুলোতে "Date tag" বর্তমান মাসের ১৩ তারিখে সেট করা আছে।
* `AT("XXXXX-XXXXX", "Date tag", match month "now" day "now+2")` - যে ডিভাইসগুলোতে "Date tag" আগামী পরশু দিনে সেট করা আছে। সাধারণ ব্যবহার: জন্মদিনের শুভেচ্ছা।
</Aside>

<Aside type="note" title="বার্ষিকী এবং জন্মদিনের সেগমেন্টের জন্য ম্যাচ অপারেটরের উদাহরণ">
আপনি [পুনরাবৃত্ত ক্যালেন্ডার তারিখের উপর ভিত্তি করে ব্যবহারকারীদের সেগমেন্ট করতে পারেন](/bn/product/audience-data-and-segmentation/segmentation/create-segments/anniversary-segments), যেমন জন্মদিন বা বার্ষিকী। এই ক্ষেত্রে, শুধুমাত্র মাস এবং দিন বিবেচনা করা হয়, বছর উপেক্ষা করা হয়।

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now")`
   **আজ যাদের জন্মদিন তাদের টার্গেট করে** (আজকের মতো একই দিন এবং মাস)।
   *ব্যবহারকারীর আসল জন্মদিনে জন্মদিনের শুভেচ্ছা বা বিশেষ অফার পাঠাতে এটি ব্যবহার করুন।*

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now+N")`
   **যাদের জন্মদিন N দিন পরে তাদের টার্গেট করে** (একই মাস এবং দিন, আজ থেকে N দিন পর)।
   *ব্যবহারকারীদের আগে থেকে প্রস্তুত করতে এটি ব্যবহার করুন, উদাহরণস্বরূপ, কাউন্টডাউন বার্তা বা আসন্ন ইভেন্টের অনুস্মারক পাঠান।*

* `AT("XXXXX-XXXXX", "birthday", match month "now" day "now-N")`
   **যাদের জন্মদিন N দিন আগে ছিল তাদের টার্গেট করে**।
   *বিলম্বিত জন্মদিনের বার্তা বা ফিডব্যাক অনুরোধের মতো ফলো-আপের জন্য এটি ব্যবহার করুন।*
* `AT("XXXXX-XXXXX", "birthday", match month "now" day N)`
   **যাদের জন্মদিন বর্তমান মাসের N-তম দিনে তাদের টার্গেট করে**, বছর নির্বিশেষে।
   *নির্দিষ্ট তারিখের সাথে যুক্ত নির্দিষ্ট মাসিক প্রচারাভিযানের পরিকল্পনা করার সময় এটি ব্যবহার করুন (যেমন, প্রতি মাসের ১০ তারিখে মাসিক আনুগত্য পুরস্কার)।*
</Aside>

*   **daysago eq** - বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের সমান
*   **daysago noteq** - বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের সমান নয়
*   **daysago lte** - বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের চেয়ে কম বা সমান
*   **daysago gte** - বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের চেয়ে বেশি বা সমান
*   **daysago between** - নির্দিষ্ট সংখ্যক দিনের মধ্যে

<Aside type="note" title="daysago অপারেটরের উদাহরণ">

* `T("Date tag", daysago, eq, 0)` - বর্তমান দিন ০০:০০ থেকে বর্তমান মুহূর্ত পর্যন্ত
* `T("Date tag", daysago, eq, 1)` - আগের দিনের ০০:০০ থেকে বর্তমান দিনের ০০:০০ পর্যন্ত
* `T("Date tag", daysago, gte, 1)` - বর্তমান দিনের ০০:০০ পর্যন্ত সমস্ত সময়
* `T("Date tag", daysago, lte, 7)` - ৬ দিন আগের ০০:০০ থেকে বর্তমান মুহূর্ত পর্যন্ত
* `T("Date tag", daysago, between, [2,7])` - ৭ থেকে ২ দিন আগে পর্যন্ত।
</Aside>

*   **minutesago lte** - বর্তমান মুহূর্তের আগে নির্দিষ্ট সংখ্যক মিনিটের চেয়ে কম বা সমান
*   **minutesago gte** - বর্তমান মুহূর্তের আগে নির্দিষ্ট সংখ্যক মিনিটের চেয়ে বেশি বা সমান

<Aside type="note" title="minutesago অপারেটরের উদাহরণ">

* `T("Date tag", minutesago, lte, 30)` - শেষ ৩০ মিনিট;
* `T("Date tag", minutesago, gte, 60)` - ৬০ বা তার বেশি মিনিট আগে;
* `T("Date tag", minutesago, lte, 1)` - শেষ মিনিটের মধ্যে।
</Aside>

*   **daysahead** - বর্তমান দিন (UTC) থেকে N থেকে M দিনের মধ্যে, উভয় প্রান্ত অন্তর্ভুক্ত

<Aside type="note" title="daysahead অপারেটরের উদাহরণ">

`daysahead` একটি `[from, to]` ব্যবধান নেয় (আজকের UTC মধ্যরাত থেকে দিন, উভয় প্রান্ত অন্তর্ভুক্ত)। `daysago` এর মতো, এর কোনো সাব-অপারেটর নেই — শুধুমাত্র ব্যবধান ফর্ম।

* `T("Date tag", daysahead, [0, 0])` - বর্তমান দিন ০০:০০ থেকে ২৩:৫৯:৫৯ পর্যন্ত
* `T("Date tag", daysahead, [1, 1])` - পরের দিন ০০:০০ থেকে ২৩:৫৯:৫৯ পর্যন্ত
* `T("Date tag", daysahead, [2, 5])` - এখন থেকে ২ দিন পর শুরু থেকে এখন থেকে ৫ দিন পর শেষ পর্যন্ত যেকোনো মুহূর্ত
</Aside>

<Aside type="note" title="ডেট অপারেটরের উদাহরণ">
* `T("Date tag", eq "2022-12-05 00:00:00")`
</Aside>

### বুলিয়ান ট্যাগ অপারেটর

*   **eq** - একটি নির্দিষ্ট মানের সমান
*   **noteq** - একটি নির্দিষ্ট মানের সমান নয়
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস

<Aside type="note" title="বুলিয়ান ট্যাগ সিনট্যাক্স উদাহরণ">
 `T("bool", eq, true)`
</Aside>

### প্রাইস ট্যাগ অপারেটর

*   **eq** - একটি নির্দিষ্ট মানের সমান
*   **noteq** - একটি নির্দিষ্ট মানের সমান নয়
*   **lte** - একটি নির্দিষ্ট মানের চেয়ে কম বা সমান
*   **gte** - একটি নির্দিষ্ট মানের চেয়ে বেশি বা সমান
*   **in** - নির্দিষ্ট মানগুলোর যেকোনো একটির সমান
*   **notin** - নির্দিষ্ট মানগুলোর কোনোটির সমান নয়
*   **between** - একটি নির্দিষ্ট পরিসরের মধ্যে
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস

<Aside type="note" title="প্রাইস ট্যাগ সিনট্যাক্স উদাহরণ">
`T("price", between, ["4.2", "6.9"])`
</Aside>

### ভার্সন ট্যাগ অপারেটর

*   **eq** - একটি নির্দিষ্ট মানের সমান
*   **noteq** - একটি নির্দিষ্ট মানের সমান নয়
*   **lte** - একটি নির্দিষ্ট মানের চেয়ে কম বা সমান
*   **gte** - একটি নির্দিষ্ট মানের চেয়ে বেশি বা সমান
*   **in** - নির্দিষ্ট মানগুলোর যেকোনো একটির সমান
*   **notin** - নির্দিষ্ট মানগুলোর কোনোটির সমান নয়
*   **between** - একটি নির্দিষ্ট পরিসরের মধ্যে
*   **any** - ট্যাগের জন্য যেকোনো মান সেট করা ডিভাইস
*   **notset** - ট্যাগের জন্য কোনো মান সেট না করা ডিভাইস

<Aside type="note" title="ভার্সন ট্যাগ সিনট্যাক্স উদাহরণ">
`T("version", lte, "4.2")`
</Aside>

## ইভেন্ট শর্তাবলী অপারেটর

<Aside type="note">
অনুগ্রহ করে মনে রাখবেন ইভেন্ট শর্তাবলী অ্যাপ-নির্দিষ্ট তাই আপনার ফিল্টার এক্সপ্রেশনে অ্যাপ কোডটি ইভেন্টের নামের সাথে উল্লেখ করা উচিত।
</Aside>

### ইভেন্ট গণনা

*   **count gte** - ইভেন্টটি n বারের বেশি বা ঠিক ততবার ট্রিগার করা ডিভাইস
*   **count lte** - ইভেন্টটি n বারের কম বা ঠিক ততবার ট্রিগার করা ডিভাইস
*   **count eq** - ইভেন্টটি ঠিক n বার ট্রিগার করা ডিভাইস
*   **count noteq** - ইভেন্টটি যেকোনো বার ট্রিগার করা ডিভাইস কিন্তু n এর সমান নয়

<Aside type="note" title="ইভেন্ট গণনা সিনট্যাক্স উদাহরণ">
 `Event("11111-11111", "Level reached", count gte 10) // 11111-11111 একটি অ্যাপ কোড`
</Aside>

### ইভেন্ট তারিখ

*   **date gte** - নির্দিষ্ট তারিখের পরে বা ঠিক সেই তারিখে ইভেন্ট ট্রিগার করা ডিভাইস
*   **date lte** - নির্দিষ্ট তারিখের আগে বা ঠিক সেই তারিখে ইভেন্ট ট্রিগার করা ডিভাইস
*   **date eq** - ঠিক নির্দিষ্ট তারিখে ইভেন্ট ট্রিগার করা ডিভাইস
*   **date noteq** - যেকোনো সময় ইভেন্ট ট্রিগার করা ডিভাইস কিন্তু নির্দিষ্ট তারিখে নয়
*   **date in** - নির্দিষ্ট তারিখগুলোর যেকোনো একটিতে ইভেন্ট ট্রিগার করা ডিভাইস
*   **date notin** - যেকোনো সময় ইভেন্ট ট্রিগার করা ডিভাইস কিন্তু নির্দিষ্ট তারিখগুলোর কোনোটিতে নয়
*   **date between** - একটি নির্দিষ্ট সময়ের মধ্যে ইভেন্ট ট্রিগার করা ডিভাইস
*   **date daysago eq** - ইভেন্ট ট্রিগারের তারিখ বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের সমান
*   **date daysago noteq** - ইভেন্ট ট্রিগারের তারিখ বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের সমান নয়
*   **date daysago lte** - ইভেন্ট ট্রিগারের তারিখ বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের চেয়ে কম বা সমান
*   **date daysago gte** - ইভেন্ট ট্রিগারের তারিখ বর্তমান দিনের আগে নির্দিষ্ট সংখ্যক দিনের চেয়ে বেশি বা সমান
*   **date daysago between** - ইভেন্ট ট্রিগারের তারিখ নির্দিষ্ট সংখ্যক দিনের মধ্যে
*   **date daysahead** - ইভেন্ট ট্রিগারের তারিখ বর্তমান দিন থেকে নির্দিষ্ট সংখ্যক দিনের মধ্যে (ব্যবধান উভয় প্রান্তে অন্তর্ভুক্ত, সম্পূর্ণ সেমান্টিক্সের জন্য উপরের ডেট ট্যাগ অপারেটর দেখুন)
*   **date minutesago lte** - ইভেন্ট ট্রিগারের তারিখ বর্তমান মুহূর্তের আগে নির্দিষ্ট সংখ্যক মিনিটের চেয়ে কম বা সমান
*   **date minutesago gte** - ইভেন্ট ট্রিগারের তারিখ বর্তমান মুহূর্তের আগে নির্দিষ্ট সংখ্যক মিনিটের চেয়ে বেশি বা সমান

<Aside type="note" title="ইভেন্ট তারিখ সিনট্যাক্স উদাহরণ">

- `Event("11111-11111", "Level reached", date gte "2022-01-01 01:02:03")`
- `Event("11111-11111", "Level reached", date in ["2022-01-01 01:02:03", "2022-01-01 02:03:04"])`
- `Event("11111-11111", "Level reached", date between "2022-01-01 01:02:03" "2022-01-01 02:03:04")`
- `Event("11111-11111", "Level reached", date daysahead 0 7)` - আগামী ৭ দিনের মধ্যে ট্রিগার তারিখ সহ ইভেন্ট
- `Event("11111-11111", "Level reached", date minutesago lte 30)` - শেষ ৩০ মিনিটের মধ্যে ইভেন্ট
- `Event("11111-11111", "Level reached", date minutesago gte 60)` - ৬০+ মিনিট আগে ইভেন্ট

</Aside>

### ইভেন্ট প্ল্যাটফর্ম

যে প্ল্যাটফর্মে ইভেন্টগুলো ট্রিগার হয়েছিল সেই প্ল্যাটফর্ম দ্বারা ইভেন্ট ফিল্টার করুন।

*   **platforms** - প্ল্যাটফর্মের তালিকা (যেমন, ["ios", "android"])

<Aside type="note" title="ইভেন্ট প্ল্যাটফর্ম সিনট্যাক্স উদাহরণ">
`Event("11111-11111", "Level reached", platforms ["android", "ios"], count gte 5)`
</Aside>

### ইভেন্ট অ্যাট্রিবিউট

ইভেন্ট শর্তাবলী ইভেন্ট অ্যাট্রিবিউট মানের উপর ভিত্তি করে ফিল্টার করতে পারে। অ্যাট্রিবিউটগুলো তাদের সংশ্লিষ্ট অপারেটর সহ বিভিন্ন ডেটা টাইপ সমর্থন করে।

#### ইন্টিজার ইভেন্ট অ্যাট্রিবিউট

*   **attribute "name" eq** - অ্যাট্রিবিউট একটি নির্দিষ্ট মানের সমান
*   **attribute "name" noteq** - অ্যাট্রিবিউট একটি নির্দিষ্ট মানের সমান নয়
*   **attribute "name" gte** - অ্যাট্রিবিউট একটি নির্দিষ্ট মানের চেয়ে বেশি বা সমান
*   **attribute "name" lte** - অ্যাট্রিবিউট একটি নির্দিষ্ট মানের চেয়ে কম বা সমান
*   **attribute "name" between** - অ্যাট্রিবিউট একটি নির্দিষ্ট পরিসরের মধ্যে
*   **attribute "name" in** - অ্যাট্রিবিউট নির্দিষ্ট মানগুলোর যেকোনো একটির সমান
*   **attribute "name" notin** - অ্যাট্রিবিউট নির্দিষ্ট মানগুলোর কোনোটির সমান নয়
*   **attribute "name" any** - অ্যাট্রিবিউটের জন্য যেকোনো মান সেট করা
*   **attribute "name" notset** - অ্যাট্রিবিউটের জন্য কোনো মান সেট করা নেই

<Aside type="note" title="ইন্টিজার অ্যাট্রিবিউট সিনট্যাক্স উদাহরণ">

* `Event("11111-11111", "Purchase", attribute "amount" eq 42)`
* `Event("11111-11111", "Purchase", attribute "amount" between 10 100)`
* `Event("11111-11111", "Purchase", attribute "amount" in [10, 20, 30])`

</Aside>

#### স্ট্রিং ইভেন্ট অ্যাট্রিবিউট

*   **attribute "name" eq** - অ্যাট্রিবিউট একটি নির্দিষ্ট মানের সমান
*   **attribute "name" noteq** - অ্যাট্রিবিউট একটি নির্দিষ্ট মানের সমান নয়
*   **attribute "name" startswith** - অ্যাট্রিবিউট একটি নির্দিষ্ট উপসর্গ দিয়ে শুরু হয়
*   **attribute "name" endswith** - অ্যাট্রিবিউট একটি নির্দিষ্ট প্রত্যয় দিয়ে শেষ হয়
*   **attribute "name" contains** - অ্যাট্রিবিউট একটি নির্দিষ্ট সাবস্ট্রিং ধারণ করে
*   **attribute "name" in** - অ্যাট্রিবিউট নির্দিষ্ট মানগুলোর যেকোনো একটির সমান
*   **attribute "name" notin** - অ্যাট্রিবিউট নির্দিষ্ট মানগুলোর কোনোটির সমান নয়
*   **attribute "name" any** - অ্যাট্রিবিউটের জন্য যেকোনো মান সেট করা
*   **attribute "name" notset** - অ্যাট্রিবিউটের জন্য কোনো মান সেট করা নেই

<Aside type="note" title="স্ট্রিং অ্যাট্রিবিউট সিনট্যাক্স উদাহরণ">

* `Event("11111-11111", "Page View", attribute "url" startswith "https://example.com")`
* `Event("11111-11111", "Page View", attribute "url" endswith ".html")`
* `Event("11111-11111", "Page View", attribute "url" contains "/products/")`
* `Event("11111-11111", "Button Click", attribute "button_name" in ["submit", "cancel"])`

</Aside>

#### বুলিয়ান ইভেন্ট অ্যাট্রিবিউট

*   **attribute "name" eq** - অ্যাট্রিবিউট true বা false এর সমান
*   **attribute "name" noteq** - অ্যাট্রিবিউট true বা false এর সমান নয়

<Aside type="note" title="বুলিয়ান অ্যাট্রিবিউট সিনট্যাক্স উদাহরণ">
`Event("11111-11111", "Feature Toggle", attribute "enabled" eq true)`
</Aside>

#### ডেট ইভেন্ট অ্যাট্রিবিউট

*   **attribute "name" eq** - অ্যাট্রিবিউট একটি নির্দিষ্ট তারিখের সমান
*   **attribute "name" noteq** - অ্যাট্রিবিউট একটি নির্দিষ্ট তারিখের সমান নয়
*   **attribute "name" gte** - অ্যাট্রিবিউট একটি নির্দিষ্ট তারিখের পরে বা সেই তারিখে
*   **attribute "name" lte** - অ্যাট্রিবিউট একটি নির্দিষ্ট তারিখের আগে বা সেই তারিখে
*   **attribute "name" between** - অ্যাট্রিবিউট একটি নির্দিষ্ট তারিখের পরিসরের মধ্যে
*   **attribute "name" in** - অ্যাট্রিবিউট নির্দিষ্ট তারিখগুলোর যেকোনো একটির সমান
*   **attribute "name" notin** - অ্যাট্রিবিউট নির্দিষ্ট তারিখগুলোর কোনোটির সমান নয়
*   **attribute "name" daysago eq/noteq/gte/lte/between** - অ্যাট্রিবিউট দিন আগের সাথে সম্পর্কিত
*   **attribute "name" daysahead from to** - অ্যাট্রিবিউট বর্তমান দিন থেকে নির্দিষ্ট দিনের ব্যবধানে (ব্যবধান উভয় প্রান্তে অন্তর্ভুক্ত, সম্পূর্ণ সেমান্টিক্সের জন্য উপরের ডেট ট্যাগ অপারেটর দেখুন)
*   **attribute "name" minutesago gte/lte** - অ্যাট্রিবিউট মিনিট আগের সাথে সম্পর্কিত
*   **attribute "name" any** - অ্যাট্রিবিউটের জন্য যেকোনো মান সেট করা
*   **attribute "name" notset** - অ্যাট্রিবিউটের জন্য কোনো মান সেট করা নেই

<Aside type="note" title="ডেট অ্যাট্রিবিউট সিনট্যাক্স উদাহরণ">

* `Event("11111-11111", "Subscription", attribute "start_date" eq "2022-01-01 01:02:03")`
* `Event("11111-11111", "Subscription", attribute "start_date" between "2022-01-01 00:00:00" "2022-12-31 23:59:59")`
* `Event("11111-11111", "Subscription", attribute "start_date" daysago lte 30)` - শেষ ৩০ দিনের মধ্যে
* `Event("11111-11111", "Subscription", attribute "renewal_at" daysahead 0 30)` - আগামী ৩০ দিনের মধ্যে নবায়ন
* `Event("11111-11111", "Subscription", attribute "start_date" minutesago gte 60)` - ৬০+ মিনিট আগে

</Aside>

#### প্রাইস ইভেন্ট অ্যাট্রিবিউট

*   **attribute "name" eq** - অ্যাট্রিবিউট একটি নির্দিষ্ট মূল্যের সমান
*   **attribute "name" noteq** - অ্যাট্রিবিউট একটি নির্দিষ্ট মূল্যের সমান নয়
*   **attribute "name" gte** - অ্যাট্রিবিউট একটি নির্দিষ্ট মূল্যের চেয়ে বেশি বা সমান
*   **attribute "name" lte** - অ্যাট্রিবিউট একটি নির্দিষ্ট মূল্যের চেয়ে কম বা সমান
*   **attribute "name" between** - অ্যাট্রিবিউট একটি নির্দিষ্ট মূল্যের পরিসরের মধ্যে
*   **attribute "name" in** - অ্যাট্রিবিউট নির্দিষ্ট মূল্যগুলোর যেকোনো একটির সমান
*   **attribute "name" notin** - অ্যাট্রিবিউট নির্দিষ্ট মূল্যগুলোর কোনোটির সমান নয়
*   **attribute "name" any** - অ্যাট্রিবিউটের জন্য যেকোনো মান সেট করা
*   **attribute "name" notset** - অ্যাট্রিবিউটের জন্য কোনো মান সেট করা নেই

<Aside type="note" title="প্রাইস অ্যাট্রিবিউট সিনট্যাক্স উদাহরণ">
`Event("11111-11111", "Purchase", attribute "total_price" between 10.00 50.00)`
</Aside>

#### লিস্ট ইভেন্ট অ্যাট্রিবিউট

*   **attribute "name" in** - অ্যাট্রিবিউট নির্দিষ্ট মানগুলোর যেকোনো একটি ধারণ করে
*   **attribute "name" notin** - অ্যাট্রিবিউট নির্দিষ্ট মানগুলোর কোনোটি ধারণ করে না
*   **attribute "name" any** - অ্যাট্রিবিউটের জন্য যেকোনো মান সেট করা
*   **attribute "name" notset** - অ্যাট্রিবিউটের জন্য কোনো মান সেট করা নেই

<Aside type="note" title="লিস্ট অ্যাট্রিবিউট সিনট্যাক্স উদাহরণ">
`Event("11111-11111", "Cart Update", attribute "product_ids" in ["prod-123", "prod-456"])`
</Aside>

## অতিরিক্ত শর্তের প্রকার

### জিও শর্ত

নির্দিষ্ট ব্যাসার্ধের মধ্যে ভৌগোলিক অবস্থানের উপর ভিত্তি করে ডিভাইস টার্গেট করুন।

**সিনট্যাক্স:** `Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)`

<Aside type="note" title="জিও সিনট্যাক্স উদাহরণ">
`Geo("11111-11111", 53.2734, -7.77832031, 100.05)` - স্থানাঙ্ক থেকে ১০০.০৫ কিমি এর মধ্যে ডিভাইস
</Aside>

### BTTS শর্ত

বিজ্ঞপ্তি পাঠানোর সেরা সময় (দিনের ঘণ্টা, ০-২৩) দ্বারা ডিভাইস টার্গেট করুন।

**অপারেটর:**
*   **any** - যেকোনো সেরা পাঠানোর সময় মান সেট করা
*   **eq** - সঠিক ঘণ্টার মিল
*   **noteq** - ঘণ্টার সমান নয়
*   **gte** - ঘণ্টা এর চেয়ে বেশি বা সমান
*   **lte** - ঘণ্টা এর চেয়ে কম বা সমান

<Aside type="note" title="BTTS সিনট্যাক্স উদাহরণ">

* `BTTS("11111-11111", eq 10)` - ১০:০০ এ সেরা সময় সহ ডিভাইস
* `BTTS("11111-11111", gte 18)` - ১৮:০০ থেকে পরবর্তী সেরা সময় সহ ডিভাইস
* `BTTS("11111-11111", any)` - যেকোনো সেরা সময় মান সহ ডিভাইস

</Aside>

### আপডেটেড শর্ত

তাদের শেষ আপডেটের টাইমস্ট্যাম্প দ্বারা ডিভাইস ফিল্টার করুন।

**অপারেটর:**
*   **gte** - নির্দিষ্ট তারিখের পরে বা সেই তারিখে আপডেট করা হয়েছে
*   **lte** - নির্দিষ্ট তারিখের আগে বা সেই তারিখে আপডেট করা হয়েছে
*   **between** - তারিখের পরিসরের মধ্যে আপডেট করা হয়েছে

<Aside type="note" title="আপডেটেড সিনট্যাক্স উদাহরণ">

* `Updated("11111-11111", gte "2022-01-01 00:00:00")` - ১ জানুয়ারী, ২০২২ এর পরে আপডেট করা ডিভাইস
* `Updated("11111-11111", lte "2022-12-31 23:59:59")` - ৩১ ডিসেম্বর, ২০২২ এর আগে আপডেট করা ডিভাইস
* `Updated("11111-11111", between "2022-01-01 00:00:00" "2022-12-31 23:59:59")` - ২০২২ সালে আপডেট করা ডিভাইস

</Aside>

### সেগমেন্ট শর্ত

তার কোড দ্বারা অন্য একটি ফিল্টার/সেগমেন্টকে রেফারেন্স করুন।

<Aside type="note" title="সেগমেন্ট সিনট্যাক্স উদাহরণ">
`Segment("11111-11111", "22222-22222")` - "22222-22222" কোড সহ ফিল্টার রেফারেন্স করুন
</Aside>

## অ্যাপ্লিকেশন শর্ত ডিভাইস উপস্থিতি ফ্ল্যাগ

অ্যাপ্লিকেশন শর্তাবলী ডিভাইস এবং টোকেন ফিল্টারিং নিয়ন্ত্রণ করতে অতিরিক্ত ফ্ল্যাগ সমর্থন করে:

*   **with_tokens** - পুশ নোটিফিকেশন টোকেন সহ ডিভাইস
*   **without_tokens** - পুশ নোটিফিকেশন টোকেন ছাড়া ডিভাইস
*   **with_devices** - নিবন্ধিত ডিভাইস সহ ব্যবহারকারী
*   **without_devices** - নিবন্ধিত ডিভাইস ছাড়া ব্যবহারকারী/প্রোফাইল

<Aside type="note" title="অ্যাপ্লিকেশন ফ্ল্যাগ সিনট্যাক্স উদাহরণ">

* `A("11111-11111", ["ios", "android"], [with_tokens])` - পুশ টোকেন সহ ডিভাইস
* `A("11111-11111", ["ios", "android"], [without_tokens])` - পুশ টোকেন ছাড়া ডিভাইস
* `A("11111-11111", [], [with_devices])` - ডিভাইস রেকর্ড সহ সমস্ত ডিভাইস
* `A("11111-11111", ["ios", "android"], [without_tokens, with_devices])` - টোকেন ছাড়া কিন্তু ডিভাইস রেকর্ড সহ ডিভাইস

</Aside>

## ফিল্টার এক্সপ্রেশন উদাহরণ

<Aside type="note">
JSON কোয়েরি লেখার সময়, কোট (`"`) এবং ব্যাকস্ল্যাশ (`\`) একটি ব্যাকস্ল্যাশ (`\`) দিয়ে এস্কেপ করতে ভুলবেন না।
একটি উদাহরণ অনুরোধের জন্য, দেখুন [/exportSegment](/bn/developer/api-reference/segmentation-filters-api/#exportsegment)।
</Aside>

### প্রাথমিক উদাহরণ

১. অ্যাপ ইনস্টল করা এবং পুশ টোকেন সহ iOS এবং Android ডিভাইস:

```json
A("11111-11111", ["ios","android"], [with_tokens])
```

২. অ্যাপ ইনস্টল করা কিন্তু পুশ টোকেন ছাড়া iOS এবং Android ডিভাইস:

```json
A("11111-11111", ["ios","android"], [without_tokens])
```

৩. অ্যাপ ইনস্টল করা iOS এবং Android ডিভাইস, তাদের পুশ টোকেন থাকুক বা না থাকুক:

```json
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])
```

৪. সমস্ত অ্যাপ সাবস্ক্রাইবার যারা অ্যাপে কিছু কিনেছেন:

```json
AT("11111-11111", "In-App Purchase", gte, 1)
```

### উন্নত উদাহরণ

৫. টোকিওতে থাকা ব্যবহারকারীরা যারা গত ৭ দিনে অ্যাপ খুলেছেন:

```json
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)
```

৬. ব্যবহারকারীরা যারা গত ৩০ দিনে $৫০ এর বেশি মূল্যের কেনাকাটা করেছেন:

```json
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)
```

৭. ব্যবহারকারীরা যাদের নাম "J" দিয়ে শুরু হয় বা "e" দিয়ে শেষ হয়:

```json
T("Name", startswith, "J") + T("Name", endswith, "e")
```

৮. নিউ ইয়র্কের ১০০ কিলোমিটারের মধ্যে সক্রিয় iOS ব্যবহারকারীরা যারা সম্প্রতি কেনাকাটা করেননি:

```json
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)
```

৯. সকাল ৯টা থেকে বিকাল ৫টার মধ্যে পাঠানোর সেরা সময় সহ ব্যবহারকারীরা:

```json
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)
```

১০. ব্যবহারকারীরা যারা গত এক ঘণ্টায় Android বা iOS-এ একটি নির্দিষ্ট ইভেন্ট ট্রিগার করেছেন:

```json
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)
```

১১. গত ৩ মাসে আপডেট করা ডিভাইস যাদের অ্যাপ ভার্সন ৪.২ বা তার বেশি:

```json
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")
```