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


  1. Pilih DocType untuk mana Webhook perlu dipicu (misalnya Quotation).

  2. Pilih Peristiwa Dokumen yang akan memicu Webhook (misalnya on_update).

  3. Opsional, Anda dapat menetapkan Kondisi dokumen tambahan untuk memicu Webhook dalam skenario tertentu.

  4. Masukkan URL permintaan yang valid yang akan menerima data Webhook.

  5. Pilih Metode Permintaan. POST adalah metode default.

  6. 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: Quotation

  • Doc Event: on_update

  • Request URL: https://httpbin.org/post

  • Struktur Permintaan: Form URL-Encoded

  • Header Webhook:

    1. Key: Content-Type:, Value: application/x-www-form-urlencoded

  • Data Webhook:

    1. Fieldname: name, Key: id

    2. Fieldname: 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



Discard
Save

On this page

Review Changes ← Back to Content
Message Status Space Raised By Last update on