เว็บฮุคคือการเรียกกลับ HTTPS ที่พาร์ทเนอร์สร้างขึ้นซึ่งระบุวิธีที่ตัวแทนควรตอบสนองต่อข้อความและเหตุการณ์ เมื่อกำหนดค่าเว็บฮุคเรียบร้อยแล้ว คุณจะเริ่มรับข้อความและเหตุการณ์ได้
เว็บฮุคของพาร์ทเนอร์และเว็บฮุคของตัวแทน
คุณกำหนดค่าเว็บฮุคได้ที่ระดับพาร์ทเนอร์หรือที่ระดับตัวแทน
- เว็บฮุคของพาร์ทเนอร์จะมีผลกับ Agent ทั้งหมดที่คุณมี หากตัวแทนมีลักษณะคล้ายกันหรือหากคุณมีตัวแทนเพียงรายเดียว ให้ใช้เว็บฮุคของพาร์ทเนอร์
- เว็บฮุคของตัวแทนจะมีผลกับ Agent บุคคลธรรมดา หากใช้งาน Agent หลายตัวที่มีลักษณะการทำงานแตกต่างกัน คุณจะตั้งค่าเว็บฮุคที่ต่างกันสำหรับ Agent แต่ละรายการได้
หากคุณกำหนดค่าทั้งเว็บฮุคของพาร์ทเนอร์และเว็บฮุคของตัวแทน เว็บฮุคของตัวแทนจะมีความสำคัญเหนือกว่าสำหรับ Agent ที่เฉพาะเจาะจง ขณะที่เว็บฮุคของพาร์ทเนอร์จะใช้กับ Agent ที่ไม่มีเว็บฮุคของตนเอง
กำหนดค่าเว็บฮุคของ Agent
คุณได้รับข้อความที่ส่งไปยังตัวแทนของคุณที่เว็บฮุคของพาร์ทเนอร์ หากต้องการให้ข้อความสำหรับตัวแทนที่เจาะจงส่งตรงไปยังเว็บฮุคอื่นแทน ให้ตั้งค่าเว็บฮุคของตัวแทน
- เปิดคอนโซลของนักพัฒนาซอฟต์แวร์ Business Communications แล้วลงชื่อเข้าใช้ด้วยบัญชี Google ของพาร์ทเนอร์ RBM
- คลิกตัวแทน
- คลิก Integrations
- สำหรับเว็บฮุค ให้คลิกกำหนดค่า
- สำหรับ URL ปลายทางของเว็บฮุค ให้ป้อน URL ของเว็บฮุคที่ขึ้นต้นด้วย "https://"
- จดบันทึกค่า
clientToken
คุณต้องใช้คีย์นี้ในการยืนยันว่าข้อความที่ได้รับมาจาก Google กำหนดค่าเว็บฮุคให้ยอมรับคำขอ
POST
ที่มีพารามิเตอร์clientToken
ที่ระบุ และส่งการตอบกลับ200 OK
ที่มีค่าข้อความธรรมดาของพารามิเตอร์secret
เป็นข้อความตอบกลับตัวอย่างเช่น หากเว็บฮุคได้รับคำขอ
POST
ที่มีเนื้อหาส่วนเนื้อหาต่อไปนี้{ "clientToken":"SJENCPGJESMGUFPY", "secret":"1234567890" }
เว็บฮุคของคุณควรยืนยันค่า
clientToken
หากclientToken
ถูกต้อง ให้แสดงผลเป็น200 OK
โดยใช้1234567890
เป็นข้อความคำตอบ// clientToken from Configure const myClientToken = "SJENCPGJESMGUFPY"; // Example endpoint app.post("/rbm-webhook", (req, res) => { const msg = req.body; if (msg.clientToken === myClientToken) { res.status(200).send(msg.secret); return; } res.send(400); });
ใน Developer Console ให้คลิกยืนยัน เมื่อ RBM ยืนยันเว็บฮุคเรียบร้อยแล้ว กล่องโต้ตอบจะปิดลง
ยืนยันข้อความขาเข้า
เนื่องจากเว็บฮุคสามารถรับข้อความจากผู้ส่งทุกคน คุณควรตรวจสอบว่า Google ได้ส่งข้อความขาเข้าก่อนประมวลผลเนื้อหาข้อความ
หากต้องการยืนยันว่า Google ได้ส่งข้อความที่คุณได้รับแล้ว ให้ทำตามขั้นตอนต่อไปนี้
- ดึงข้อมูลส่วนหัว
X-Goog-Signature
ของข้อความ นี่คือสำเนาเพย์โหลดเนื้อหาข้อความที่เข้ารหัสฐาน 64 - Base-64-ถอดรหัสของเพย์โหลด RBM ในองค์ประกอบ
message.body
ของคำขอ - ใช้โทเค็นไคลเอ็นต์ของเว็บฮุค (ซึ่งคุณระบุเมื่อตั้งค่าเว็บฮุค) เป็นคีย์ แล้วสร้าง SHA512 HMAC จำนวนไบต์ของเพย์โหลดข้อความที่ถอดรหัส base64 และเข้ารหัสผลลัพธ์ base64
- เปรียบเทียบแฮช
X-Goog-Signature
กับแฮชที่คุณสร้าง- หากแฮชตรงกัน แสดงว่าคุณยืนยันว่า Google ส่งข้อความแล้ว
หากแฮชไม่ตรงกัน ให้ตรวจสอบกระบวนการแฮชกับข้อความที่ทราบว่าเหมาะสม
หากกระบวนการแฮชทำงานได้อย่างถูกต้องและคุณได้รับข้อความที่เชื่อว่าส่งมาถึงคุณโดยทุจริต โปรดติดต่อเรา
Node.js
if ((requestBody.hasOwnProperty('message')) && (requestBody.message.hasOwnProperty('data'))) { // Validate the received hash to ensure the message came from Google RBM let userEventString = Buffer.from(requestBody.message.data, 'base64'); let hmac = crypto.createHmac('sha512', CLIENT_TOKEN); let data = hmac.update(userEventString); let genHash = data.digest('base64'); let headerHash = req.header('X-Goog-Signature'); if (headerHash === genHash) { let userEvent = JSON.parse(userEventString); console.log('userEventString: ' + userEventString); handleMessage(userEvent); } else { console.log('hash mismatch - ignoring message'); } } res.sendStatus(200);
ขั้นตอนถัดไป
เมื่อคุณกำหนดค่าเว็บฮุคแล้ว ตัวแทนจะรับข้อความจากอุปกรณ์ทดสอบได้ ส่งข้อความ เพื่อตรวจสอบการตั้งค่า