Webhooks
Webhook adalah "user-defined HTTP callbacks". Untuk DocType tertentu, Anda dapat membuat webhook yang dipicu pada peristiwa dokumen tertentu di bawah kondisi tertentu, jika diperlukan.
Ketika doc_event terjadi, situs sumber membuat permintaan HTTP ke URI yang dikonfigurasi untuk webhook. Pengguna dapat mengkonfigurasi webhook ini untuk menggunakan peristiwa di satu situs untuk memicu perilaku di situs lain.
Konfigurasi Webhook
Untuk menambahkan Webhook, buka:
Integrations > Webhook > Webhook

Pilih DocType untuk mana Webhook perlu dipicu (misalnya
Quotation).Pilih Peristiwa Dokumen yang akan memicu Webhook (misalnya
on_update).Opsional, Anda dapat menetapkan Kondisi dokumen tambahan untuk memicu Webhook dalam skenario tertentu.
Masukkan URL permintaan yang valid yang akan menerima data Webhook.
Pilih Metode Permintaan.
POSTadalah metode default.Opsional, Anda dapat menambahkan header HTTP ke permintaan. (misalnya berguna untuk mengirimkan kunci API, jika diperlukan).
Anda juga dapat menonaktifkan webhook dengan tidak mencentang kotak Enabled. Hanya webhook yang diaktifkan yang akan dipicu.
Struktur Data
Jika struktur permintaan Anda didasarkan pada formulir, Anda dapat memilih field dari dokumen dalam tabel, yang menggunakan fieldname sebagai
key.Jika struktur permintaan Anda berbasis JSON, Anda dapat memasukkan field dari dokumen menggunakan jinja templating (pastikan untuk membungkus field Anda dengan tanda kutip ganda).
Keamanan Webhook
Untuk menambahkan keamanan ke permintaan webhook Anda dan memastikan bahwa webhook dikirim dari Frappe, Anda dapat mengatur "Webhook Secret" bersama dengan permintaan. Jangan membagikan rahasia ini secara publik.
Jika diaktifkan, header tambahan (X-Frappe-Webhook-Signature) akan ditambahkan ke permintaan sebelum dikirim, dengan nilainya yang dihasilkan dari rahasia sebagai hash HMAC-SHA256 yang dienkode dalam base64 dari payload.
Contoh Permintaan Webhook
DocType:
QuotationDoc Event:
on_updateRequest URL:
https://httpbin.org/postStruktur Permintaan:
Form URL-EncodedHeader Webhook:
Key:
Content-Type:, Value:application/x-www-form-urlencoded
Data Webhook:
Fieldname:
name, Key:idFieldname:
items, Key:lineItems
Konfigurasi di atas menghasilkan permintaan JSON berikut (dikirim oleh server Frappe pada Quotation - on_update ke https://httpbin.org/post):
{
"args": {},
"data": "{\"lineItems\": [{\"stock_qty\": 1.0, \"base_price_list_rate\": 1.0, \"image\": \"\", \"creation\": \"2017-09-14 13:41:58.373023\", \"base_amount\": 1.0, \"qty\": 1.0, \"margin_rate_or_amount\": 0.0, \"rate\": 1.0, \"owner\": \"Administrator\", \"stock_uom\": \"Unit\", \"base_net_amount\": 1.0, \"page_break\": 0, \"modified_by\": \"Administrator\", \"base_net_rate\": 1.0, \"discount_percentage\": 0.0, \"item_name\": \"I1\", \"amount\": 1.0, \"actual_qty\": 0.0, \"net_rate\": 1.0, \"conversion_factor\": 1.0, \"warehouse\": \"Finished Goods - R\", \"docstatus\": 0, \"prevdoc_docname\": null, \"uom\": \"Unit\", \"description\": \"I1\", \"parent\": \"QTN-00001\", \"brand\": null, \"gst_hsn_code\": null, \"base_rate\": 1.0, \"item_code\": \"I1\", \"projected_qty\"0.0,
"qty": 1.0,
"rate": 1.0,
"rate_with_margin": 0.0,
"stock_qty": 1.0,
"stock_uom": "Unit",
"uom": "Unit",
"warehouse": "Finished Goods - R"
}
]
},
"url": "https://httpbin.org/post"
}
Log Permintaan Webhook
Sebuah log permintaan webhook dibuat untuk setiap permintaan yang berhasil dengan semua detail terkait
