# ইভেন্ট স্ট্রিমিং ইন্টিগ্রেশন

<Aside type="caution" icon="setting" title="ডেভেলপারের সহায়তা প্রয়োজন">
 ইন্টিগ্রেশন সেট আপ করার জন্য আপনার ডেভেলপমেন্ট টিমের সাহায্যের প্রয়োজন হবে। অনুগ্রহ করে এই গাইডটি তাদের সাথে শেয়ার করুন।
</Aside>

## ইন্টিগ্রেশন ওভারভিউ

### ইন্টিগ্রেশনের প্রকার

**উৎস:** কনফিগার করা ইভেন্ট ট্রিগারের উপর ভিত্তি করে Pushwoosh থেকে আপনার সিস্টেমে HTTP বা gRPC-এর মাধ্যমে ডেটা পাঠানো হয়।

### ইন্টিগ্রেশন কীভাবে কাজ করে?

Pushwoosh একটি ক্লায়েন্ট-ডিফাইন্ড এন্ডপয়েন্টে কমিউনিকেশন ইভেন্ট ডেটা (যেমন, পুশ/ইমেল অ্যাক্টিভিটি) প্রেরণ করে। ডেটা নির্ধারিত বিরতিতে বা ন্যূনতম ব্যাচের আকারে পৌঁছানোর পরে ব্যাচ স্ট্রিমে পাঠানো হয়।

ডেটা শুধুমাত্র তখনই পাঠানো হয় যদি এটি নির্বাচিত ইভেন্ট, প্ল্যাটফর্ম এবং ঐচ্ছিক ফিল্টার (ক্যাম্পেইন/মেসেজ কোড, লাইভ অ্যাক্টিভিটি) এর সাথে মেলে। ক্লায়েন্ট এন্ডপয়েন্টকে ডেটা গ্রহণ করার জন্য প্রস্তুত থাকতে হবে এবং ঐচ্ছিকভাবে একটি স্ট্যাটাস সহ প্রতিক্রিয়া জানাতে হবে।

### পরিভাষা

**এন্ডপয়েন্ট ইউআরএল (Endpoint URL)**: সার্ভার-সাইড এন্ডপয়েন্ট যা অনুরোধ গ্রহণ করার অনুমতি দেয়। ক্লায়েন্ট প্রয়োজনে একটি পোর্ট নির্দিষ্ট করতে পারে।

উদাহরণ:

* `https://clientdomainname.com/webhook_endpoint`
* `https://clientdomainname.com:8081/webhook_endpoint`

### সিঙ্ক্রোনাইজ করা সত্তার তালিকা

* কমিউনিকেশন পরিসংখ্যান ইভেন্ট (যেমন, Push Sent, Email Delivered)

### ব্যবহারের ক্ষেত্র

* **রিয়েল-টাইম এনগেজমেন্ট ট্র্যাকিং**

ব্যবহারকারীর ইন্টারঅ্যাকশন যেমন পুশ পাঠানো, ইমেল খোলা, বা মেসেজ ডেলিভারি হওয়ার সাথে সাথে মনিটর করুন, যা ক্যাম্পেইনের পারফরম্যান্সের উপর তাৎক্ষণিক দৃশ্যমানতা সক্ষম করে।

* **এক্সটার্নাল অ্যানালিটিক্স ইন্টিগ্রেশন**

কেন্দ্রীয় রিপোর্টিং এবং বিশ্লেষণের জন্য থার্ড-পার্টি অ্যানালিটিক্স প্ল্যাটফর্মে ইভেন্ট স্ট্রিম করুন।

* **স্বয়ংক্রিয় ব্যবহারকারী ওয়ার্কফ্লো**

ব্যবহারকারীর আচরণের উপর ভিত্তি করে এক্সটার্নাল সিস্টেমে (যেমন CRM বা মার্কেটিং অটোমেশন টুল) অ্যাকশন ট্রিগার করুন, যেমন, যখন কোনো ব্যবহারকারী একটি ইমেল খোলে তখন একটি ফলো-আপ মেসেজ পাঠান।

## ইন্টিগ্রেশন সেট আপ করা

ইন্টিগ্রেশন সেট আপ করতে:

1. আপনার Pushwoosh অ্যাকাউন্টে, **Settings > 3rd party Integrations**-এ যান, **Event streaming integration** খুঁজুন এবং **Configure**-এ ক্লিক করুন।

![ইভেন্ট স্ট্রিমিং ইন্টিগ্রেশন কনফিগার করুন](/integrations-event-streaming-integration-1.webp)

2. যে উইন্ডোটি খুলবে, সেখানে প্রয়োজনীয় ফিল্ডগুলো পূরণ করুন।

![প্রয়োজনীয় ফিল্ডগুলো পূরণ করুন](/integrations-event-streaming-integration-2.webp)

#### এন্ডপয়েন্ট ইউআরএল লিখুন

 **Endpoint URL** ফিল্ডে, সম্পূর্ণ ইউআরএল লিখুন যেখানে ইভেন্ট পাঠানো হবে, প্রযোজ্য হলে প্রোটোকল এবং পোর্ট সহ।

 **উদাহরণ**

* `https://clientdomainname.com/webhook_endpoint`
* `https://clientdomainname.com:8081/webhook\_endpoint`


#### ইভেন্ট নির্বাচন করুন


**Events** ড্রপডাউন থেকে, অন্তত একটি ইভেন্ট নির্বাচন করুন। যদি কোনোটি নির্বাচন করা না হয়, তাহলে ভ্যালিডেশন ব্যর্থ হবে। ইভেন্টের তালিকা ব্যাকএন্ড দ্বারা পরিচালিত হয় এবং সময়ের সাথে সাথে পরিবর্তিত হতে পারে।

#### অথোরাইজেশন ক্রেডেনশিয়াল প্রদান করুন

যদি আপনার সার্ভারের প্রয়োজন হয়, তাহলে **Authorization** ফিল্ডে `Authorization` হেডারের জন্য সম্পূর্ণ মান লিখুন।

উদাহরণ:

* `Bearer your_token_here`

* `Basic base64encoded_credentials`

<Aside>এই মানটি **যেমন আছে** সেভাবেই `Authorization` হেডার (HTTP) বা gRPC মেটাডেটাতে ঢোকানো হয়। নিশ্চিত করুন যে অথ স্কিম এবং টোকেনের মধ্যে একটি স্পেস আছে।</Aside>

#### ট্রান্সপোর্ট টাইপ বেছে নিন

**Transport type** ড্রপডাউন থেকে, ইভেন্ট ট্রান্সমিশনের জন্য ডেলিভারি প্রোটোকল বেছে নিন: **HTTP** বা **gRPC**। প্রতিটির নির্দিষ্ট আচরণ এবং কনফিগারেশন রয়েছে।

##### HTTP

**HTTP** ট্রান্সপোর্ট টাইপের সাথে, Pushwoosh নিম্নলিখিত শর্তগুলোর মধ্যে একটির উপর ভিত্তি করে ব্যাচে ডেটা পাঠায়:

* অন্তত ১০০টি ইভেন্ট পাঠানোর জন্য প্রস্তুত, অথবা

* শেষ ট্রান্সমিশনের পর এক ঘণ্টা কেটে গেছে।

ডেটা পাঠানোর পরে, একটি সফল প্রতিক্রিয়া পাওয়ার সাথে সাথে সংযোগটি বন্ধ হয়ে যায়।

যদি সার্ভার একটি **5xx ত্রুটি** দিয়ে প্রতিক্রিয়া জানায়, Pushwoosh সংজ্ঞায়িত রিট্রাই পলিসি অনুযায়ী অনুরোধটি আবার চেষ্টা করবে।

**রিট্রাই মেকানিজম**

| চেষ্টা | বিলম্ব |
| :---- | :---- |
| প্রথম | ১ সেকেন্ড |
| দ্বিতীয় | প্রথম চেষ্টার ৩ সেকেন্ড পর |
| তৃতীয় | দ্বিতীয় চেষ্টার ৮ সেকেন্ড পর |

যদি সমস্ত রিট্রাই ব্যর্থ হয়, অনুরোধটি বাতিল করা হয়।

**টাইমআউট**

একটি অনুরোধের জন্য ডিফল্ট টাইমআউট হল **৩০ সেকেন্ড**। এটি সাপোর্টের মাধ্যমে অনুরোধে কাস্টমাইজ করা যেতে পারে।

<LinkCard
  title="উদাহরণ দেখুন"
  href="/webhook_request_batch.json"
  target="_blank"
  rel="noopener noreferrer"
/>

##### gRPC

gRPC ট্রান্সপোর্ট টাইপ ডেটা ট্রান্সমিশনের জন্য **বাইডিরেকশনাল স্ট্রিমিং** ব্যবহার করে। [gRPC ডকুমেন্টেশন](https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc)-এ আরও জানুন।

একটি স্ট্রিম খোলা হয় যখন নিম্নলিখিত শর্তগুলোর মধ্যে যেকোনো একটি পূরণ হয়:
* অন্তত ১,০০০টি ইভেন্ট ডেলিভারির জন্য প্রস্তুত
* শেষ স্ট্রিম খোলার পর এক ঘণ্টা কেটে গেছে

ইভেন্টগুলো পাঠানোর পরে স্ট্রিমটি বন্ধ হয়ে যায়। এটি নিশ্চিত করে যে অল্প সময়ের মধ্যে প্রতিটি পৃথক ইভেন্টের জন্য একটি নতুন স্ট্রিম খোলা হয় না।

<LinkCard
  title="প্রোটোবাফ স্পেসিফিকেশন দেখুন"
  href="/webhook.proto"
/>

**রিট্রাই মেকানিজম**
প্রতিটি ইভেন্টে একটি অনন্য `uuid` থাকে। যদি একটি ইভেন্ট ব্যর্থ হয়:

1. প্রতিক্রিয়াতে একটি `status` থাকতে হবে যা `"Success"`-এর **সমান নয়**
2. অনুরোধ থেকে আসল `uuid` অন্তর্ভুক্ত করতে হবে

Pushwoosh এই প্রতিক্রিয়ার উপর ভিত্তি করে ডেলিভারি আবার চেষ্টা করবে।

**সংযোগ সেটিংস**

**TLS**, **keep-alive**, বা **রিট্রাই পলিসি**-এর মতো উন্নত বিকল্পগুলো সাপোর্টের মাধ্যমে ম্যানুয়ালি কনফিগার করা হয় এবং এর জন্য ডেভেলপমেন্টের জড়িত থাকার প্রয়োজন হতে পারে।

### প্ল্যাটফর্ম নির্বাচন করুন

**Platforms** বিভাগে, ইভেন্ট স্ট্রিমিং সক্রিয় করতে অন্তত একটি প্ল্যাটফর্ম নির্বাচন করুন।

![অন্তত একটি প্ল্যাটফর্ম নির্বাচন করুন](/integrations-event-streaming-integration-3.webp)

সমর্থিত প্ল্যাটফর্মগুলোর মধ্যে রয়েছে:

* iOS, Android, macOS, Windows, Amazon, Safari
* Chrome, Firefox, Internet Explorer, Baidu, Huawei
* Email, SMS, Line, Xiaomi, WhatsApp

### উন্নত ফিল্টার কনফিগার করুন

**Advanced filters** বিভাগে, ফিল্টার ব্যবহার করে ইভেন্ট ডেলিভারির মানদণ্ড পরিমার্জন করুন:

* **লাইভ অ্যাক্টিভিটি ইভেন্ট:** লাইভ অ্যাক্টিভিটি ইভেন্ট গ্রহণ করতে এটি সক্রিয় করুন। এই ইভেন্টগুলোতে শুধুমাত্র মেটাডেটা থাকে যার মধ্যে `live_activity_id` অন্তর্ভুক্ত।

* **ক্যাম্পেইন ফিল্টার:** ক্যাম্পেইন কোড দ্বারা ফিল্টার করুন। শুধুমাত্র এই ক্যাম্পেইনগুলোর সাথে যুক্ত ইভেন্টগুলো ডেলিভার করা হবে।

* **মেসেজ ফিল্টার:** মেসেজ কোড দ্বারা ফিল্টার করুন। শুধুমাত্র এই মেসেজগুলোর সাথে যুক্ত ইভেন্টগুলো ডেলিভার করা হবে।

![উন্নত ফিল্টার সেট করুন](/integrations-event-streaming-integration-4.webp)

সমস্ত প্রয়োজনীয় ফিল্ড পূরণ করার পরে, আপনার ইন্টিগ্রেশন সংরক্ষণ এবং সক্রিয় করতে **Apply** বোতামে ক্লিক করুন।
<Aside>কনফিগারেশন পরিবর্তনগুলো জমা দেওয়ার **১৫ মিনিটের মধ্যে** কার্যকর হবে।</Aside>


<Aside type="tip">
কাস্টম টাইমআউট বা gRPC কনফিগারেশনের মতো উন্নত সেটিংসের জন্য, অনুগ্রহ করে [সাপোর্টের সাথে যোগাযোগ করুন](https://help.pushwoosh.com/hc/en-us/requests/new)।
</Aside>


## অনুরোধের বিবরণ এবং উদাহরণ

| | |
|-----------------------|----------------------------------------------------------|
| **এন্ডপয়েন্ট** | `https://exampleclientendpoint.com/webhook_endpoint` |
| **HTTP অনুরোধ** | `POST` |
| **অথেন্টিকেশন** | নেই |
| **অনুরোধের প্রকার** | উৎস |
| **অনুরোধের অর্থ** | ওয়েবহুক এন্ডপয়েন্টে অনুরোধ পাঠান |
| **হেডার** | `Content-Type: application/json` |

**অনুরোধের বডির উদাহরণ**

```
{
  "event_name": "Email Opened",
  "message_code": "E682-E6D92B9A-53E24868",
  "campaign_id": 961048,
  "platform": "Email",
  "payload": "Welcome to Headway! 👋",
  "application_code": "XXXXX-XXXXX",
  "hwid": "user@example.com",
  "user_id": "USER_ID",
  "timestamp": 1723799271,
  "journey_title": "",
  "journey_point_title": "5_Welcome_ID_new"
}
```

**প্রতিক্রিয়া**
এই মুহূর্তে, প্রতিক্রিয়া কোড এবং বডি উপেক্ষা করা হয়।

## আপনি কীভাবে জানবেন যে ইন্টিগ্রেশন কাজ করছে?

আপনি আপনার কনফিগার করা এন্ডপয়েন্টে Pushwoosh থেকে অনুরোধ পেতে শুরু করবেন।