# การผสานรวม Inbound webhook

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

Inbound webhooks ช่วยให้บริการภายนอกสามารถส่งอีเวนต์มายัง Pushwoosh ได้โดยตรง เมื่อระบบของบุคคลที่สามเรียกใช้ webhook ทาง Pushwoosh จะตรวจสอบสิทธิ์ของคำขอ ระบุผู้สมัครรับข้อมูล และส่งอีเวนต์ที่จับคู่ไว้ จากนั้นอีเวนต์ดังกล่าวสามารถเริ่มต้นหรือดำเนิน Journey ต่อไปได้

ใช้ inbound webhooks เพื่อเชื่อมต่อเครื่องมือต่างๆ เช่น CRM, แพลตฟอร์มอีคอมเมิร์ซ หรือบริการวิเคราะห์ข้อมูล โดยไม่ต้องสร้างหรือดูแลเซิร์ฟเวอร์ของคุณเอง
inbound webhook แต่ละรายการจะเรียกใช้อีเวนต์ของ Pushwoosh หนึ่งรายการเมื่อได้รับและประมวลผลคำขอที่ตรงกันสำเร็จ

## ก่อนที่คุณจะเริ่ม

เตรียมข้อมูลต่อไปนี้ให้พร้อมก่อนที่คุณจะเปิดการตั้งค่า webhook

1. **ตัดสินใจว่า webhook ควรจะเรียกใช้อีเวนต์ใดของ Pushwoosh** เลือกอีเวนต์ที่มีอยู่แล้วจากโปรเจกต์ของคุณที่คุณต้องการให้เรียกใช้จากบริการของบุคคลที่สาม ตัวอย่างเช่น `CheckoutSuccess` หากคุณยังไม่มีอีเวนต์ที่เหมาะสม [สร้างอีเวนต์ใหม่](/th/product/audience-data-and-segmentation/events/custom-events/) พร้อมกับแอตทริบิวต์ที่คุณต้องการเติมจากข้อมูลที่เข้ามา

2. **ตรวจสอบให้แน่ใจว่าบริการของบุคคลที่สามของคุณสามารถส่ง webhooks ได้** บริการนั้นจะต้องสามารถส่งคำขอ HTTP POST ไปยัง URL ภายนอกได้เมื่อเกิดอีเวนต์ที่คุณสนใจ เช่น คำสั่งซื้อใหม่ หรือการส่งแบบฟอร์ม

3. **รับตัวอย่าง JSON payload จากบริการของบุคคลที่สามของคุณ** นี่คือตัวอย่างข้อมูลขนาดเล็กที่บริการส่งมาในแต่ละอีเวนต์ คุณจะต้องใช้มันเพื่อจับคู่ฟิลด์ของ payload กับแอตทริบิวต์ของอีเวนต์ใน Pushwoosh

## สร้าง webhook

1. ในบัญชี Pushwoosh ของคุณ ไปที่ **Settings** → **Integrations** → **Inbound webhooks** และคลิก **Settings**

<img src="/integrations-inbound-webhook-1.webp" alt="หน้า Integrations ที่มีการ์ด Inbound webhooks และปุ่ม Settings เพื่อเปิดการกำหนดค่า webhook"/>

2. คลิก **Create webhook** เพื่อเปิดขั้นตอนการตั้งค่า

<img src="/integrations-inbound-webhook-2.webp" alt="หน้าจอสร้าง webhook ที่มีชื่อ, อีเวนต์, ตัวอย่าง payload และการจับคู่ตัวระบุผู้ใช้"/>

3. ป้อนชื่อ webhook เพื่อให้คุณสามารถระบุ webhook ในรายการได้ในภายหลัง

4. เลือกอีเวนต์ของ Pushwoosh ที่ควรจะทำงานเมื่อ webhook ได้รับคำขอที่ถูกต้อง คุณสามารถเลือกจากอีเวนต์ที่มีอยู่แล้วในโปรเจกต์ของคุณ หากคุณต้องการสร้างอีเวนต์ก่อน โปรดดูที่ [Events](/th/product/audience-data-and-segmentation/events/custom-events/)

<Aside type="note">
webhook หนึ่งรายการจะเรียกใช้อีเวนต์เพียงหนึ่งรายการเท่านั้น
</Aside>

<img src="/integrations-inbound-webhook-3.webp" alt="หน้าจอตั้งค่า webhook ที่มีเมนูดรอปดาวน์ของอีเวนต์ Pushwoosh สำหรับเลือกอีเวนต์ที่จะทำงานเมื่อมีคำขอเข้ามา"/>

5. ใน **Match incoming data** ให้วางตัวอย่าง JSON payload จากบริการของบุคคลที่สามของคุณ Pushwoosh จะโหลดฟิลด์ของ payload ลงในเมนูดรอปดาวน์โดยอัตโนมัติ

<Aside type="note">
หากคุณอัปเดต payload ในภายหลัง ให้คลิก **Reload select options** เพื่อรีเฟรชเมนูดรอปดาวน์ การทำเช่นนี้จะรีเซ็ตการจับคู่ฟิลด์ปัจจุบันของคุณ คุณจะต้องทำการจับคู่แอตทริบิวต์ของคุณใหม่
</Aside>

ตัวอย่าง payload:

```json
{
  "user_id": "12345",
  "email_address": "jane@example.com",
  "mobile": "+15551234567",
  "purchase_date": "2024-03-15",
  "order_number": "ORD-001",
  "price": 99.99,
  "payment_state": "success"
}
```

6. ใน **Identify users by** ให้เลือกว่า Pushwoosh ควรจะจับคู่คำขอที่เข้ามากับผู้ใช้อย่างไร:

- **User ID:** จับคู่โดยใช้ ID ผู้ใช้ภายในของ Pushwoosh
- **Email:** จับคู่โดยใช้อีเมลแอดเดรส
- **Phone:** จับคู่โดยใช้หมายเลขโทรศัพท์
- **HWID:** จับคู่โดยใช้ตัวระบุอุปกรณ์, เบราว์เซอร์ หรืออีเมล

ใน **Payload field** ให้เลือกฟิลด์ที่มีค่าที่ตรงกัน

<img src="/integrations-inbound-webhook-5.webp" alt="เมนูดรอปดาวน์ Identify users by และ Payload field ที่มีคำแนะนำสำหรับ User ID และ HWID บนหน้าจอ Match incoming data"/>

7. จับคู่แอตทริบิวต์ของอีเวนต์แต่ละรายการกับฟิลด์ของ payload ในแต่ละแถวของการจับคู่:

- **Event attribute:** ชื่อแอตทริบิวต์ใน Pushwoosh เลือกจากแอตทริบิวต์ที่กำหนดไว้สำหรับอีเวนต์นี้
- **Payload field:** ฟิลด์จาก payload ที่เข้ามาซึ่งมีค่าอยู่

ตัวอย่างเช่น จับคู่ `email` กับ `email_address`, `total` กับ `price` และ `order_id` กับ `order_number`

<img src="/integrations-inbound-webhook-4.webp" alt="แถวการจับคู่ Event attribute และ Payload field พร้อมตัวอย่าง payload และปุ่ม Reload select options"/>

คลิก **+ Add attribute** เพื่อเพิ่มแถว คลิก **×** เพื่อลบแถว

8. เมื่อการกำหนดค่าเสร็จสมบูรณ์ ให้คลิก **Enable** หน้าต่าง **Webhook URL** จะเปิดขึ้น
<Aside type="caution" icon="setting" title="ต้องการความช่วยเหลือจากนักพัฒนา">
ขั้นตอนต่อไปนี้ต้องการการเข้าถึงการตั้งค่า webhook ของบริการบุคคลที่สามของคุณ โปรดแชร์ URL และ Secret กับทีมนักพัฒนาของคุณ
</Aside>

คัดลอกค่าต่างๆ และวางลงในการตั้งค่า webhook ของระบบภายนอกของคุณ:

- คัดลอก **URL** และตั้งค่าเป็นปลายทางของ webhook ในบริการของบุคคลที่สามของคุณ
- คัดลอก **Secret** และวางลงในบริการภายนอกของคุณเป็นค่า `Authorization` header ค่านี้รวมคำนำหน้า `Bearer` อยู่แล้ว ดังนั้นให้ใช้ตามที่เป็นอยู่ Pushwoosh จะปฏิเสธคำขอใดๆ ที่ไม่มี header นี้หรือค่าไม่ตรงกัน

<img src="/integrations-inbound-webhook-7.webp" alt="หน้าต่าง Webhook URL ที่แสดงฟิลด์ URL และ Secret พร้อมปุ่มคัดลอกสำหรับการกำหนดค่าระบบภายนอก"/>

9. หน้าต่างนี้ยังแสดง **Example request** พร้อมตัวอย่างคำขอ `POST` คลิก **Copy** ในบล็อกตัวอย่างเพื่อคัดลอกคำขอทั้งหมด ใช้เพื่อส่งคำขอทดสอบและยืนยันว่า Pushwoosh ยอมรับ webhook หรือแชร์กับทีมของคุณเพื่อใช้เป็นเทมเพลตสำหรับการผสานรวม

<img src="/integrations-inbound-webhook-6.webp" alt="หน้าต่าง Webhook URL ที่มี URL, Secret และคำสั่ง curl ของ Example request สำหรับการตั้งค่าระบบภายนอก"/>

หลังจากที่คุณเปิดใช้งาน webhook แล้ว มันจะปรากฏในรายการ Webhooks พร้อมสถานะเปิดใช้งานและเริ่มรับคำขอ

## รายการ Webhooks

รายการ inbound webhook จะแสดง webhook ทั้งหมดในโปรเจกต์ของคุณ


แต่ละแถวจะแสดง:

- **Name:** ชื่อ webhook
- **Event:** อีเวนต์ของ Pushwoosh ที่จะทำงานเมื่อ webhook ได้รับคำขอที่ถูกต้อง
- **Status:** **Enabled** หรือ **Disabled**
- **Received:** จำนวนคำขอที่ webhook ได้รับ
- **Last updated:** เวลาที่ webhook ถูกเปลี่ยนแปลงล่าสุด

<img src="/integrations-inbound-webhook-9.webp" alt="รายการ Inbound webhook ที่มีการค้นหา, ตัวกรองสถานะ, คอลัมน์ตาราง และเมนูการดำเนินการของแถวที่เปิดอยู่"/>
## จัดการ webhooks
เปิดเมนูของแถวเพื่อ:

- **Edit settings:** เปิดการกำหนดค่า webhook เพื่อให้คุณสามารถเปลี่ยนชื่อ, อีเวนต์, การจับคู่ฟิลด์ และการระบุผู้ใช้
- **Copy URL:** เปิดหน้าต่าง **Webhook URL** ที่มี **URL** และ **Secret** เพื่อให้คุณสามารถคัดลอกได้อีกครั้ง
- **Activity log:** เปิดบันทึกคำขอสำหรับ webhook นี้
- **Delete:** ลบ webhook ออกจากรายการ

สำหรับ webhook ที่เปิดใช้งานอยู่ คลิก **Disable** เพื่อปิดการใช้งานโดยไม่ลบการกำหนดค่า สำหรับ webhook ที่ปิดใช้งานอยู่ คลิก **Enable** เพื่อเริ่มรับคำขออีกครั้ง


### ดูบันทึกกิจกรรม

บันทึกกิจกรรมจะแสดงคำขอที่เข้ามาทั้งหมดสำหรับ webhook ที่เลือก

**แผงสรุป**

ที่ด้านบน ให้ตรวจสอบสรุปสำหรับ 24 ชั่วโมงที่ผ่านมา:

- **Hits:** จำนวนคำขอที่เข้ามาทั้งหมดที่ได้รับ
- **Success:** คำขอที่การตรวจสอบสิทธิ์ผ่าน, พบผู้ใช้ และอีเวนต์ทำงาน
- **Failed:** คำขอที่ไม่ได้รับการประมวลผล คำขอที่ล้มเหลวจะไม่หยุดการทำงานของ webhook Pushwoosh จะยังคงรับและประมวลผลคำขอในภายหลังต่อไป

| เหตุผลของความล้มเหลว | ความหมาย |
| :---- | :---- |
| **Auth rejected** | shared secret ไม่ตรงกับการกำหนดค่า webhook หากคำขอ 5 รายการติดต่อกันล้มเหลวด้วยข้อผิดพลาดนี้ Pushwoosh จะส่งการแจ้งเตือนถึงคุณ อัปเดต secret เพื่อดำเนินการต่อ ไม่จำเป็นต้องเปิดใช้งานใหม่ |
| **User identifier field missing** | ฟิลด์ payload ที่จับคู่ไว้สำหรับการระบุผู้ใช้ไม่มีอยู่ในคำขอ |


<img src="/integrations-inbound-webhook-10.webp" alt="บันทึกกิจกรรมที่มีสรุป Hits Success Failed และรายการคำขอที่แสดงป้ายสถานะและ JSON payload"/>

**รายการคำขอ**

แต่ละรายการจะแสดงตัวระบุผู้ใช้ (เช่น **User ID** หรือ **Email**), ป้าย **Success** หรือ **Failed**, การประทับเวลาของคำขอ และตัวอย่างของ JSON payload ที่ได้รับ คลิก **Show** เพื่อขยายรายละเอียดคำขอทั้งหมด

<img src="/integrations-inbound-webhook-11.webp" alt="รายการคำขอในบันทึกกิจกรรมที่มีตัวระบุผู้ใช้, ป้าย Success หรือ Failed, การประทับเวลา, JSON payload และปุ่ม Show"/>
## ดูอีเวนต์ที่เกิดจาก webhook ใน User Explorer

เมื่อคำขอ webhook ได้รับการประมวลผลสำเร็จ Pushwoosh จะบันทึกอีเวนต์ใน [User Explorer](/th/product/audience-data-and-segmentation/user-explorer/) ตำแหน่งที่ปรากฏขึ้นอยู่กับว่าคุณระบุผู้ใช้อย่างไร:

- **User ID, Email, หรือ Phone:** อีเวนต์จะถูกบันทึกไว้ในโปรไฟล์ผู้ใช้ เปิดผู้ใช้และไปที่ **Events history**
- **HWID:** อีเวนต์จะถูกบันทึกไว้ในอุปกรณ์ที่ตรงกัน เปิดผู้ใช้, ค้นหาอุปกรณ์ใน **Active user devices** และไปที่แท็บ **Events history** ของอุปกรณ์นั้น

ค้นหาอีเวนต์ตามชื่อและขยายเพื่อดูแอตทริบิวต์ที่จับคู่ไว้ (เช่น `price` หรือ `products`) และแอตทริบิวต์ `__webhook` พร้อมกับ ID ของ webhook

<img src="/integrations-inbound-webhook-12.webp" alt="แท็บ Events history ใน User Explorer ที่แสดงอีเวนต์จาก inbound webhook พร้อมแอตทริบิวต์ที่ขยายออกซึ่งรวมถึง __webhook ID และฟิลด์ payload ที่จับคู่ไว้"/>
## ใช้ inbound webhooks กับ journeys

หลังจากที่ webhook ถูกเปิดใช้งานและส่งอีเวนต์ได้สำเร็จแล้ว ให้ใช้อีเวนต์ที่เลือกเป็น [จุดเริ่มต้น Journey แบบอิงตามทริกเกอร์](/th/product/customer-journey/journey-elements/entry-elements/trigger-based-entry/) เมื่อ webhook ได้รับคำขอที่ถูกต้อง Pushwoosh จะส่งอีเวนต์ที่จับคู่ไว้ Journey ใดๆ ที่ใช้อีเวนต์นี้เป็นทริกเกอร์เริ่มต้นจะเริ่มทำงานโดยอัตโนมัติสำหรับผู้ใช้ที่ตรงกัน