เอกสารนี้จะอธิบายวิธีตั้งค่า Webhook ซึ่งจะแจ้งให้คุณทราบทุกครั้งที่ผู้ใช้แอพของคุณเผยแพร่การเปลี่ยนแปลงกับรูปภาพของผู้ใช้ เมื่อคุณเข้าใจวิธีตั้งค่า Webhook นี้แล้ว คุณจะทราบวิธีตั้งค่า Webhooks ทั้งหมด
ในการตั้งค่า Webhook ใดๆ ก็ตาม คุณจะต้องทำสิ่งต่อไปนี้
ซึ่งคุณสามารถดูคำอธิบายโดยละเอียดของขั้นตอนเหล่านี้ได้ด้านล่าง
ตำแหน่งข้อมูลของคุณต้องสามารถประมวลคำขอ HTTPS ได้ 2 ประเภท ได้แก่คำขอให้ตรวจสอบยืนยัน และการแจ้งเตือนเหตุการณ์ เนื่องจากคำขอทั้ง 2 ประเภทนี้ใช้ HTTP เซิร์ฟเวอร์ของคุณจึงต้องมีการกำหนดค่าและติดตั้งใบรับรอง TLS หรือ SSL ที่ใช้งานได้ไว้อย่างถูกต้อง โดยระบบจะไม่รองรับใบรับรองที่ลงนามเอง
ส่วนด้านล่างนี้จะอธิบายสิ่งที่จะอยู่ในคำขอแต่ละประเภทและวิธีตอบกลับคำขอเหล่านั้น หรือคุณสามารถใช้แอพตัวอย่างของเรา ซึ่งได้รับการกำหนดค่าเพื่อประมวลผลคำขอเหล่านี้ไว้แล้ว
ทุกครั้งที่คุณกำหนดค่าผลิตภัณฑ์ Webhooks ในแดชบอร์ดของแอพ เราจะส่งคำขอ GET
ไปที่ URL ตำแหน่งข้อมูลของคุณ คำขอให้ตรวจสอบยืนยันจะมีพารามิเตอร์สตริงสืบค้นต่อไปนี้ ซึ่งอยู่ต่อท้าย URL ตำแหน่งข้อมูลของคุณ โดยจะมีลักษณะดังนี้
GET https://www.your-clever-domain-name.com/webhooks? hub.mode=subscribe& hub.challenge=1158201444& hub.verify_token=meatyhamhock
พารามิเตอร์ | ค่าตัวอย่าง | คำอธิบาย |
---|---|---|
|
| ระบบจะตั้งค่านี้เป็น |
|
|
|
|
| สตริงที่เราดึงมาจากช่อง "โทเค็นการตรวจสอบยืนยัน" ในแดชบอร์ดของแอพในแอพของคุณ เราจะตั้งค่าสตริงนี้เมื่อคุณดำเนินขั้นตอนการตั้งค่าการกำหนดค่า Webhooks เสร็จสมบูรณ์แล้ว |
หมายเหตุ:PHP จะแปลงจุด (.) เป็นขีดล่าง (_) ในชื่อพารามิเตอร์
ตำแหน่งข้อมูลของคุณต้องดำเนินการต่อไปนี้ เมื่อใดก็ตามที่ได้รับคำขอให้ตรวจสอบยืนยัน
hub.verify_token
ตรงกับสตริงที่คุณตั้งค่าไว้ในช่อง "โทเค็นการตรวจสอบยืนยัน" เมื่อคุณกำหนดค่าผลิตภัณฑ์ Webhooks ในแดชบอร์ดของแอพ (คุณยังไม่ได้ตั้งค่าสตริงโทเค็นนี้)hub.challenge
หากคุณอยู่ในแดชบอร์ดของแอพและกำลังกำหนดค่าผลิตภัณฑ์ Webhooks ของคุณ (และทริกเกอร์คำขอให้ตรวจสอบยืนยัน) แดชบอร์ดจะระบุว่าตำแหน่งข้อมูลของคุณตรวจสอบคำขออย่างถูกต้องหรือไม่ API จะตอบกลับเพื่อระบุว่าสำเร็จหรือล้มเหลว หากคุณใช้ตำแหน่งข้อมูล /app/subscriptions ของ API กราฟ เพื่อกำหนดค่าผลิตภัณฑ์ Webhooks
เมื่อคุณกำหนดค่าผลิตภัณฑ์ Webhooks คุณจะสมัครรับข้อมูลจาก fields
ที่เฉพาะเจาะจงในประเภท object
(เช่น ช่อง photos
บนอ็อบเจ็กต์ user
) เมื่อใดก็ตามที่มีการเปลี่ยนแปลงในช่องใดช่องหนึ่ง เราจะส่งคำขอ POST
ไปที่ตำแหน่งข้อมูลของคุณโดยมีเพย์โหลด JSON ที่อธิบายการเปลี่ยนแปลงดังกล่าว
ตัวอย่างเช่น หากคุณสมัครรับข้อมูลจากช่อง photos
ของอ็อบเจ็กต์ user
และหนึ่งในผู้ใช้แอพของคุณได้โพสต์รูปภาพ เราจะส่งคำขอ POST
ให้คุณซึ่งจะมีลักษณะดังนี้
POST / HTTPS/1.1 Host: your-clever-domain-name.com/webhooks Content-Type: application/json X-Hub-Signature-256: sha256={super-long-SHA256-signature} Content-Length: 311 { "entry": [ { "time": 1520383571, "changes": [ { "field": "photos", "value": { "verb": "update", "object_id": "10211885744794461" } } ], "id": "10210299214172187", "uid": "10210299214172187" } ], "object": "user" }
เพย์โหลดจะมีอ็อบเจ็กต์ที่อธิบายการเปลี่ยนแปลง เมื่อคุณกำหนดค่าผลิตภัณฑ์ Webhooks คุณจะสามารถระบุได้ว่าเพย์โหลดควรมีเฉพาะชื่อของช่องที่เปลี่ยนแปลงหรือไม่ หรือเพย์โหลดควรรวมค่าใหม่ไว้ด้วยหรือไม่
เราจัดรูปแบบเพย์โหลดทั้งหมดด้วย JSON ดังนั้น คุณจึงสามารถแยกวิเคราะห์เพย์โหลดโดยใช้วิธีการหรือแพ็คเกจการแยกวิเคราะห์ JSON ทั่วไปได้
เราจะไม่จัดเก็บข้อมูลการแจ้งเตือนเหตุการณ์ของ Webhook ที่เราส่งให้คุณ ดังนั้นอย่าลืมบันทึกและจัดเก็บเนื้อหาเพย์โหลดที่คุณต้องการเก็บไว้
เพย์โหลดส่วนใหญ่จะมีคุณสมบัติทั่วไปดังต่อไปนี้ แต่เนื้อหาและโครงสร้างของเพย์โหลดแต่ละรายการจะแตกต่างกันไปตามช่องอ็อบเจ็กต์ที่คุณสมัครรับข้อมูล โปรดดูเอกสารอ้างอิงของอ็อบเจ็กต์แต่ละรายการเพื่อดูว่าจะมีช่องใดรวมอยู่บ้าง
คุณสมบัติ | คำอธิบาย | ประเภท |
---|---|---|
| ประเภทของอ็อบเจ็กต์ (เช่น |
|
| อาร์เรย์ที่มีอ็อบเจ็กต์ที่อธิบายการเปลี่ยนแปลง การเปลี่ยนแปลงหลายรายการจากอ็อบเจ็กต์ต่างๆ ที่เป็นประเภทเดียวกันอาจถูกรวมเข้าด้วยกันเป็นแบตช์ |
|
| ID ของอ็อบเจ็กต์ |
|
| อาร์เรย์ของสตริงที่ระบุชื่อของช่องที่มีการเปลี่ยนแปลง จะรวมไว้ก็ต่อเมื่อคุณปิดใช้งานการตั้งค่า "รวมค่า" เมื่อกำหนดค่าผลิตภัณฑ์ Webhooks ในแดชบอร์ดของแอพในแอพของคุณ |
|
| อาร์เรย์ที่มีอ็อบเจ็กต์ที่อธิบายช่องที่มีการเปลี่ยนแปลงและค่าใหม่ของช่องดังกล่าว จะรวมไว้ก็ต่อเมื่อคุณเปิดใช้งานการตั้งค่า "รวมค่า" เมื่อกำหนดค่าผลิตภัณฑ์ Webhooks ในแดชบอร์ดของแอพในแอพของคุณ |
|
| การประทับเวลา UNIX ที่ระบุเวลาที่ส่งการแจ้งเตือนเหตุการณ์ (ไม่ใช่เวลาที่เกิดการเปลี่ยนแปลงที่ทริกเกอร์การแจ้งเตือน) |
|
เราลงนามเพย์โหลด "การแจ้งเตือนเหตุการณ์" ทั้งหมดด้วยลายเซ็น SHA256 และรวมลายเซ็นไว้ในส่วนหัว X-Hub-Signature-256
ของคำขอ ซึ่งนำหน้าด้วย sha256=
คุณไม่จำเป็นต้องตรวจสอบความถูกต้องของเพย์โหลด แต่ก็เป็นสิ่งที่ควรทำ
วิธีตรวจสอบความถูกต้องของเพย์โหลดมีดังนี้
X-Hub-Signature-256
(ทุกอย่างที่อยู่หลัง sha256=
) หากลายเซ็นตรงกัน แสดงว่าเพย์โหลดเป็นของแท้ตำแหน่งข้อมูลของคุณควรตอบกลับการแจ้งเตือนเหตุการณ์ทั้งหมดด้วย 200 OK HTTPS
การแจ้งเตือนเหตุการณ์จะถูกรวบรวมและส่งเป็นแบตช์ โดยมีการอัพเดตสูงสุด 1,000 รายการ อย่างไรก็ตาม เราไม่สามารถรับประกันการรวมเป็นแบตช์ได้ ดังนั้นอย่าลืมปรับเซิร์ฟเวอร์ของคุณเพื่อจัดการกับ Webhook แต่ละรายการ
หากการอัพเดตที่ส่งไปยังเซิร์ฟเวอร์ของคุณล้มเหลว เราจะลองส่งอีกครั้งทันที จากนั้นจะลองอีก 2-3 ครั้ง โดยลดความถี่ลงในช่วง 36 ชั่วโมงข้างหน้า เซิร์ฟเวอร์ของคุณควรจัดการเรื่องการลบข้อมูลซ้ำซ้อนในกรณีเหล่านี้ การตอบกลับที่ไม่ได้รับการตอบรับจะหายไปหลังจากผ่านไป 36 ชั่วโมง
หมายเหตุ: ความถี่ในการส่งการแจ้งเตือนเหตุการณ์ของ Messenger จะแตกต่างกัน โปรดดูข้อมูลเพิ่มเติมที่เอกสารประกอบเกี่ยวกับ Webhooks ของแพลตฟอร์ม Messenger
เมื่อตำแหน่งข้อมูลหรือแอพตัวอย่างของคุณพร้อมแล้ว ให้ใช้แดชบอร์ดของแอพของแอพคุณเพื่อเพิ่มและกำหนดค่าผลิตภัณฑ์ Webhooks นอกจากนี้คุณยังสามารถดำเนินการดังกล่าวได้โดยใช้โปรแกรม โดยใช้ตำแหน่งข้อมูล /{app-id}/subscriptions
สำหรับ Webhooks ทั้งหมดยกเว้น Instagram
ในตัวอย่างนี้ เราจะใช้แดชบอร์ดเพื่อกำหนดค่า Webhook ที่สมัครรับข้อมูลการเปลี่ยนแปลงในรูปภาพของผู้ใช้แอพของคุณ
ป้อน URL ของตำแหน่งข้อมูลของคุณลงในช่อง URL การเรียกกลับ และป้อนสตริงลงในช่อง "โทเค็นการตรวจสอบยืนยัน" เราจะรวมสตริงนี้ไว้ในคำขอให้ตรวจสอบยืนยันทั้งหมด หากคุณกำลังใช้หนึ่งในแอพตัวอย่างของเรา สตริงนี้ควรเป็นสตริงเดียวกับที่คุณใช้สำหรับตัวแปรการกำหนดค่า TOKEN
ของแอพคุณ
เมื่อคุณคลิก "ตรวจสอบยืนยันและบันทึก" เราจะส่งคำขอให้ตรวจสอบยืนยันไปที่ตำแหน่งข้อมูลของคุณซึ่งคุณจะต้องตรวจสอบ หากตำแหน่งข้อมูลของคุณตรวจสอบคำขอสำเร็จ คุณควรเห็นดังต่อไปนี้
ขั้นตอนสุดท้ายคือการสมัครรับข้อมูลแต่ละช่อง สมัครรับข้อมูลจากช่อง photos
และส่ง "การแจ้งเตือนเหตุการณ์" ขั้นทดสอบ
หากตำแหน่งข้อมูลของคุณได้รับการตั้งค่าอย่างถูกต้อง ตำแหน่งข้อมูลของคุณควรตรวจสอบความถูกต้องของเพย์โหลดและใช้โค้ดใดก็ตามที่คุณตั้งไว้เมื่อตรวจสอบเสร็จเรียบร้อย หากคุณกำลังใช้แอพตัวอย่างของเรา ให้โหลด URL ของแอพในเว็บเบราว์เซอร์ของคุณ โดยระบบควรแสดงเนื้อหาของเพย์โหลดดังต่อไปนี้
เมื่อคุณรู้วิธีตั้งค่า Webhooks แล้ว คุณอาจต้องการอ้างอิงจากเอกสารเพิ่มเติมของเราที่อธิบายขั้นตอนเพิ่มเติมที่เกี่ยวข้องเมื่อทำการตั้งค่า Webhooks สำหรับผลิตภัณฑ์ที่เฉพาะเจาะจง