# การผสานรวมการสตรีม Event

<Aside type="caution" icon="setting" title="ต้องการความช่วยเหลือจากนักพัฒนา">
 คุณจะต้องได้รับความช่วยเหลือจากทีมนักพัฒนาของคุณเพื่อตั้งค่าการผสานรวม โปรดแชร์คู่มือนี้กับพวกเขา
</Aside>

## ภาพรวมการผสานรวม

### ประเภทการผสานรวม

**แหล่งที่มา:** ข้อมูลจะถูกส่งจาก Pushwoosh ไปยังระบบของคุณผ่าน HTTP หรือ gRPC โดยอิงตามทริกเกอร์ Event ที่กำหนดค่าไว้

### การผสานรวมทำงานอย่างไร

Pushwoosh จะส่งข้อมูล Event การสื่อสาร (เช่น กิจกรรมพุช/อีเมล) ไปยัง Endpoint ที่ลูกค้ากำหนด ข้อมูลจะถูกส่งเป็นชุดสตรีมตามช่วงเวลาที่กำหนดหรือเมื่อถึงขนาดชุดข้อมูลขั้นต่ำ

ข้อมูลจะถูกส่งก็ต่อเมื่อตรงกับ Events, แพลตฟอร์ม และตัวกรองเสริมที่เลือกไว้ (รหัสแคมเปญ/ข้อความ, กิจกรรมสด) Endpoint ของลูกค้าต้องพร้อมที่จะรับและอาจตอบกลับด้วยสถานะ

### อภิธานศัพท์

**Endpoint URL**: Endpoint ฝั่งเซิร์ฟเวอร์ที่อนุญาตให้รับคำขอได้ ลูกค้าอาจระบุพอร์ตหากจำเป็น

ตัวอย่าง:

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

### รายการเอนทิตีที่ซิงโครไนซ์

* Events สถิติการสื่อสาร (เช่น Push Sent, Email Delivered)

### กรณีการใช้งาน

* **การติดตามการมีส่วนร่วมแบบเรียลไทม์**

ตรวจสอบการโต้ตอบของผู้ใช้ เช่น การส่งพุช, การเปิดอีเมล หรือการส่งข้อความในขณะที่เกิดขึ้น ทำให้สามารถมองเห็นประสิทธิภาพของแคมเปญได้ทันที

* **การผสานรวมการวิเคราะห์ภายนอก**

สตรีม Events ไปยังแพลตฟอร์มการวิเคราะห์ของบุคคลที่สามเพื่อการรายงานและการวิเคราะห์แบบรวมศูนย์

* **เวิร์กโฟลว์ผู้ใช้อัตโนมัติ**

ทริกเกอร์การดำเนินการในระบบภายนอก (เช่น CRM หรือเครื่องมือการตลาดอัตโนมัติ) ตามพฤติกรรมของผู้ใช้ เช่น ส่งข้อความติดตามผลเมื่อผู้ใช้เปิดอีเมล

## การตั้งค่าการผสานรวม

ในการตั้งค่าการผสานรวม:

1. ในบัญชี Pushwoosh ของคุณ ไปที่ **Settings > 3rd party Integrations** ค้นหา **Event streaming integration** และคลิก **Configure**

![กำหนดค่าการผสานรวมการสตรีม Event](/integrations-event-streaming-integration-1.webp)

2. ในหน้าต่างที่เปิดขึ้นมา กรอกข้อมูลในฟิลด์ที่จำเป็น

![กรอกข้อมูลในฟิลด์ที่จำเป็น](/integrations-event-streaming-integration-2.webp)

#### ป้อน URL ของ Endpoint

 ในฟิลด์ **Endpoint URL** ให้ป้อน URL แบบเต็มที่จะใช้ส่ง Events รวมถึงโปรโตคอลและพอร์ต (ถ้ามี)
 
 **ตัวอย่าง**

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


#### เลือก Events

   
จากดรอปดาวน์ **Events** ให้เลือกอย่างน้อยหนึ่ง Event หากไม่ได้เลือกไว้ การตรวจสอบความถูกต้องจะล้มเหลว รายการ Events จะถูกจัดการโดยแบ็กเอนด์และอาจเปลี่ยนแปลงได้ตลอดเวลา

#### ระบุข้อมูลประจำตัวสำหรับการให้สิทธิ์

หากเซิร์ฟเวอร์ของคุณต้องการ ให้ป้อนค่าทั้งหมดสำหรับเฮดเดอร์ `Authorization` ในฟิลด์ **Authorization**

ตัวอย่าง:

* `Bearer your_token_here`  
    
* `Basic base64encoded_credentials`

<Aside>ค่าจะถูกแทรก **ตามที่เป็น** ลงในเฮดเดอร์ `Authorization` (HTTP) หรือเมตาดาตาของ gRPC ตรวจสอบให้แน่ใจว่ามีช่องว่างระหว่างรูปแบบการยืนยันตัวตนและโทเค็น</Aside>

#### เลือกประเภทการส่งข้อมูล

จากดรอปดาวน์ **Transport type** ให้เลือกโปรโตคอลการจัดส่งสำหรับการส่ง Event: **HTTP** หรือ **gRPC** แต่ละประเภทมีพฤติกรรมและการกำหนดค่าที่เฉพาะเจาะจง

##### HTTP

ด้วยประเภทการส่ง **HTTP** Pushwoosh จะส่งข้อมูลเป็นชุดตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:

* มี Events อย่างน้อย 100 รายการพร้อมที่จะส่ง หรือ

* ผ่านไปหนึ่งชั่วโมงนับจากการส่งครั้งล่าสุด

หลังจากส่งข้อมูลแล้ว การเชื่อมต่อจะถูกปิดเมื่อได้รับการตอบกลับที่สำเร็จ

หากเซิร์ฟเวอร์ตอบกลับด้วย **5xx error** Pushwoosh จะลองส่งคำขออีกครั้งตามนโยบายการลองใหม่ที่กำหนดไว้

**กลไกการลองใหม่**

| ครั้งที่ | การหน่วงเวลา |
| :---- | :---- |
| 1 | 1 วินาที |
| 2 | 3 วินาทีหลังจากการลองครั้งที่ 1 |
| 3 | 8 วินาทีหลังจากการลองครั้งที่ 2 |

หากการลองใหม่ทั้งหมดล้มเหลว คำขอจะถูกยกเลิก

**การหมดเวลา**

การหมดเวลาเริ่มต้นสำหรับคำขอคือ **30 วินาที** สามารถปรับแต่งได้ตามคำขอผ่านฝ่ายสนับสนุน

<LinkCard  
  title="ดูตัวอย่าง" 
  href="/webhook_request_batch.json" 
  target="_blank"
  rel="noopener noreferrer"
/>

##### gRPC

ประเภทการส่ง gRPC ใช้ **bidirectional streaming** สำหรับการส่งข้อมูล เรียนรู้เพิ่มเติมใน [เอกสาร gRPC](https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc)

สตรีมจะเปิดขึ้นเมื่อตรงตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้:
* มี Events อย่างน้อย 1,000 รายการพร้อมสำหรับการจัดส่ง
* ผ่านไปหนึ่งชั่วโมงนับจากสตรีมล่าสุดที่เปิด

สตรีมจะถูกปิดหลังจากส่ง Events แล้ว สิ่งนี้ทำให้แน่ใจได้ว่าจะไม่มีการเปิดสตรีมใหม่สำหรับแต่ละ Event ในช่วงเวลาสั้นๆ

<LinkCard  
  title="ดูข้อกำหนด protobuf" 
  href="/webhook.proto" 
/>

**กลไกการลองใหม่**  
แต่ละ Event จะมี `uuid` ที่ไม่ซ้ำกัน หาก Event ล้มเหลว:

1. การตอบกลับต้องมี `status` **ไม่เท่ากับ** `"Success"`  
2. ต้องมี `uuid` เดิมจากคำขอรวมอยู่ด้วย

Pushwoosh จะลองจัดส่งอีกครั้งตามการตอบกลับนี้

**การตั้งค่าการเชื่อมต่อ** 

ตัวเลือกขั้นสูง เช่น **TLS**, **keep-alive** หรือ **retry policies** จะถูกกำหนดค่าด้วยตนเองผ่านฝ่ายสนับสนุนและอาจต้องอาศัยความช่วยเหลือจากฝ่ายพัฒนา

### เลือกแพลตฟอร์ม

ในส่วน **Platforms** ให้เลือกอย่างน้อยหนึ่งแพลตฟอร์มเพื่อเปิดใช้งานการสตรีม Event

![เลือกอย่างน้อยหนึ่งแพลตฟอร์ม](/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** ให้ปรับเกณฑ์การจัดส่ง Event โดยใช้ตัวกรอง:

* **Live activity events:** เปิดใช้งานเพื่อรับ Events กิจกรรมสด Events เหล่านี้มีเพียงเมตาดาตาซึ่งรวมถึง `live_activity_id`  
    
* **Campaign filters:** กรองตามรหัสแคมเปญ เฉพาะ Events ที่ผูกกับแคมเปญเหล่านี้เท่านั้นที่จะถูกจัดส่ง  
    
* **Message filters:** กรองตามรหัสข้อความ เฉพาะ Events ที่ผูกกับข้อความเหล่านี้เท่านั้นที่จะถูกจัดส่ง

![ตั้งค่าตัวกรองขั้นสูง](/integrations-event-streaming-integration-4.webp)

หลังจากกรอกข้อมูลในฟิลด์ที่จำเป็นทั้งหมดแล้ว คลิกปุ่ม **Apply** เพื่อบันทึกและเปิดใช้งานการผสานรวมของคุณ
<Aside>การเปลี่ยนแปลงการกำหนดค่าจะมีผล **ภายใน 15 นาที** หลังจากส่ง</Aside>


<Aside type="tip">
สำหรับการตั้งค่าขั้นสูง เช่น การหมดเวลาที่กำหนดเอง หรือการกำหนดค่า gRPC โปรด [ติดต่อฝ่ายสนับสนุน](https://help.pushwoosh.com/hc/en-us/requests/new)
</Aside>


## รายละเอียดคำขอและตัวอย่าง

|            |                                                   |
|-----------------------|----------------------------------------------------------|
| **Endpoint**          | `https://exampleclientendpoint.com/webhook_endpoint`     |
| **HTTP Request**      | `POST`                                                   |
| **Authentication**    | ไม่มี                                                       |
| **Request type**      | แหล่งที่มา                                                   |
| **Request meaning**   | ส่งคำขอไปยัง Endpoint ของ webhook                    |
| **Headers**           | `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 ที่ Endpoint ที่คุณกำหนดค่าไว้