Webhook

Webhook adalah callback HTTPS yang dibuat partner yang menentukan cara agen Anda harus merespons pesan dan peristiwa. Setelah mengonfigurasi webhook, Anda dapat mulai menerima pesan dan peristiwa.

Webhook partner dan webhook agen

Anda dapat mengonfigurasi webhook di level partner atau tingkat agen.

  • Webhook partner Anda berlaku untuk setiap agen yang Anda kelola. Jika agen Anda memiliki perilaku serupa, atau jika Anda hanya memiliki satu agen, gunakan webhook partner.
  • Webhook agen berlaku untuk agen individu. Jika mengoperasikan beberapa agen dengan perilaku yang berbeda, Anda dapat menetapkan webhook yang berbeda untuk setiap agen.

Jika Anda telah mengonfigurasi webhook partner dan webhook agen, webhook agen akan diprioritaskan di agen spesifiknya, sedangkan webhook partner berlaku untuk semua agen yang tidak memiliki webhook sendiri.

Mengonfigurasi webhook agen

Anda menerima pesan yang dikirim ke agen di webhook partner Anda. Jika Anda ingin pesan agar agen tertentu masuk ke webhook yang berbeda, tetapkan webhook agen.

  1. Buka Konsol Developer Business Communications, lalu login dengan Akun Google partner RBM Anda.
  2. Klik agen Anda.
  3. Klik Integrations.
  4. Untuk Webhook, klik Configure.
  5. Untuk URL endpoint Webhook, masukkan URL webhook yang diawali dengan "https://".
  6. Catat nilai clientToken Anda. Anda memerlukannya untuk memverifikasi bahwa pesan yang Anda terima berasal dari Google.
  7. Konfigurasikan webhook Anda untuk menerima permintaan POST dengan parameter clientToken yang ditentukan dan mengirim respons 200 OK dengan nilai teks biasa dari parameter secret sebagai isi respons.

    Misalnya, jika webhook Anda menerima permintaan POST dengan konten isi berikut

    {
      "clientToken":"SJENCPGJESMGUFPY",
      "secret":"1234567890"
    }
    

    webhook Anda harus mengonfirmasi nilai clientToken dan, jika clientToken benar, menampilkan respons 200 OK dengan 1234567890 sebagai isi respons:

    // 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. Di Konsol Play, klik Verifikasi. Saat RBM memverifikasi webhook Anda, dialog akan ditutup.

Memverifikasi pesan masuk

Karena webhook dapat menerima pesan dari setiap pengirim, Anda harus memverifikasi bahwa Google telah mengirim pesan masuk sebelum memproses konten pesan.

Untuk memverifikasi bahwa Google mengirim pesan yang Anda terima, ikuti langkah-langkah berikut:

  1. Ekstrak header X-Goog-Signature pesan. Ini adalah salinan payload isi pesan berenkode base64.
  2. Dekode base-64 payload RBM di elemen message.body permintaan.
  3. Dengan menggunakan token klien webhook (yang Anda tentukan saat menyiapkan webhook) sebagai kunci, buat HMAC SHA512 dari byte pesan yang didekode base-64 dan mengenkode base64 hasilnya.
  4. Bandingkan hash X-Goog-Signature dengan hash yang Anda buat.
    • Jika hash cocok, berarti Anda telah mengonfirmasi bahwa Google yang mengirim pesan.
    • Jika hash tidak cocok, periksa proses hashing pada pesan yang diketahui bagus.

      Jika proses hashing berfungsi dengan benar dan Anda menerima pesan yang Anda yakini dikirimkan kepada Anda secara curang, hubungi kami.

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);
  

Langkah berikutnya

Setelah mengonfigurasi webhook, agen Anda dapat menerima pesan dari perangkat pengujian Anda. Kirim pesan untuk memvalidasi penyiapan Anda.