เว็บฮุค

เว็บฮุคคือการเรียกกลับ HTTPS ที่พาร์ทเนอร์สร้างขึ้นซึ่งระบุวิธีที่ตัวแทนควรตอบสนองต่อข้อความและเหตุการณ์ เมื่อกำหนดค่าเว็บฮุคเรียบร้อยแล้ว คุณจะเริ่มรับข้อความและเหตุการณ์ได้

เว็บฮุคของพาร์ทเนอร์และเว็บฮุคของตัวแทน

คุณกำหนดค่าเว็บฮุคได้ที่ระดับพาร์ทเนอร์หรือที่ระดับตัวแทน

หากคุณกำหนดค่าทั้งเว็บฮุคของพาร์ทเนอร์และเว็บฮุคของตัวแทน เว็บฮุคของตัวแทนจะมีความสำคัญเหนือกว่าสำหรับ Agent ที่เฉพาะเจาะจง ขณะที่เว็บฮุคของพาร์ทเนอร์จะใช้กับ Agent ที่ไม่มีเว็บฮุคของตนเอง

กำหนดค่าเว็บฮุคของ Agent

คุณได้รับข้อความที่ส่งไปยังตัวแทนของคุณที่เว็บฮุคของพาร์ทเนอร์ หากต้องการให้ข้อความสำหรับตัวแทนที่เจาะจงส่งตรงไปยังเว็บฮุคอื่นแทน ให้ตั้งค่าเว็บฮุคของตัวแทน

  1. เปิดคอนโซลของนักพัฒนาซอฟต์แวร์ Business Communications แล้วลงชื่อเข้าใช้ด้วยบัญชี Google ของพาร์ทเนอร์ RBM
  2. คลิกตัวแทน
  3. คลิก Integrations
  4. สำหรับเว็บฮุค ให้คลิกกำหนดค่า
  5. สำหรับ URL ปลายทางของเว็บฮุค ให้ป้อน URL ของเว็บฮุคที่ขึ้นต้นด้วย "https://"
  6. จดบันทึกค่า clientToken คุณต้องใช้คีย์นี้ในการยืนยันว่าข้อความที่ได้รับมาจาก Google
  7. กำหนดค่าเว็บฮุคให้ยอมรับคำขอ 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);
    });
    
  8. ใน Developer Console ให้คลิกยืนยัน เมื่อ RBM ยืนยันเว็บฮุคเรียบร้อยแล้ว กล่องโต้ตอบจะปิดลง

ยืนยันข้อความขาเข้า

เนื่องจากเว็บฮุคสามารถรับข้อความจากผู้ส่งทุกคน คุณควรตรวจสอบว่า Google ได้ส่งข้อความขาเข้าก่อนประมวลผลเนื้อหาข้อความ

หากต้องการยืนยันว่า Google ได้ส่งข้อความที่คุณได้รับแล้ว ให้ทำตามขั้นตอนต่อไปนี้

  1. ดึงข้อมูลส่วนหัว X-Goog-Signature ของข้อความ นี่คือสำเนาเพย์โหลดเนื้อหาข้อความที่เข้ารหัสฐาน 64
  2. Base-64-ถอดรหัสของเพย์โหลด RBM ในองค์ประกอบ message.body ของคำขอ
  3. ใช้โทเค็นไคลเอ็นต์ของเว็บฮุค (ซึ่งคุณระบุเมื่อตั้งค่าเว็บฮุค) เป็นคีย์ แล้วสร้าง SHA512 HMAC จำนวนไบต์ของเพย์โหลดข้อความที่ถอดรหัส base64 และเข้ารหัสผลลัพธ์ base64
  4. เปรียบเทียบแฮช 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);
  

ขั้นตอนถัดไป

เมื่อคุณกำหนดค่าเว็บฮุคแล้ว ตัวแทนจะรับข้อความจากอุปกรณ์ทดสอบได้ ส่งข้อความ เพื่อตรวจสอบการตั้งค่า