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.
- Buka Konsol Developer Business Communications, lalu login dengan Akun Google partner RBM Anda.
- Klik agen Anda.
- Klik Integrations.
- Untuk Webhook, klik Configure.
- Untuk URL endpoint Webhook, masukkan URL webhook yang diawali dengan "https://".
- Catat nilai
clientToken
Anda. Anda memerlukannya untuk memverifikasi bahwa pesan yang Anda terima berasal dari Google. Konfigurasikan webhook Anda untuk menerima permintaan
POST
dengan parameterclientToken
yang ditentukan dan mengirim respons200 OK
dengan nilai teks biasa dari parametersecret
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, jikaclientToken
benar, menampilkan respons200 OK
dengan1234567890
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); });
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:
- Ekstrak header
X-Goog-Signature
pesan. Ini adalah salinan payload isi pesan berenkode base64. - Dekode base-64 payload RBM di elemen
message.body
permintaan. - 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.
- 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.