全部产品
Search
文档中心

Data Management:Kirim notifikasi menggunakan URL webhook kustom

更新时间:Jul 02, 2025

Data Management (DMS) memungkinkan Anda menggunakan URL webhook kustom sebagai metode notifikasi selain pesan teks, email, notifikasi DingTalk, dan pesan chatbot DingTalk.

Konfigurasikan URL webhook sebagai metode notifikasi

Konfigurasikan metode notifikasi di konsol DMS. Di bagian Webhook, masukkan URL webhook di bidang Webhook URL dan pilih Webhook.

Modify notification method dialog box

Untuk informasi lebih lanjut, lihat Konfigurasikan informasi pribadi dan metode notifikasi.

Permintaan untuk notifikasi peristiwa

Saat notifikasi dibuat di DMS, DMS mengirimkan notifikasi ke URL webhook yang Anda tentukan. Bagian ini menjelaskan isi dari permintaan POST.

Header permintaan:

DMS-Event: Message Hook

Parameter permintaan:

Parameter

Tipe

Deskripsi

submitterUid

String

ID akun yang mengirimkan tugas.

submitterName

String

Nama akun yang mengirimkan tugas.

category

String

Modul tempat tugas tersebut berada, seperti Tiket, Orkestrasi Tugas, atau Pengembangan Gudang Data.

module

String

Jenis bisnis, seperti aplikasi izin, perubahan data, desain skema, atau ekspor data.

event

String

Peristiwa yang dipicu oleh status tugas, seperti menunggu persetujuan, berhasil, atau gagal.

taskId

String

ID tiket atau alur tugas.

taskName

String

Nama tugas.

eventTime

String

Waktu terjadinya peristiwa.

message

String

Pesan yang telah ditentukan sebelumnya di DMS.

targetUsers

Array

Penerima yang akan menerima notifikasi. Anda dapat menentukan satu atau lebih penerima.

receivers

Array

Penerima yang benar-benar menerima notifikasi. Anda dapat menentukan satu atau lebih penerima. Jika Anda tidak mengatur parameter Metode Notifikasi, penerima tidak dapat menerima notifikasi.

uid

String

ID penerima. Saat Anda menentukan penerima, Anda harus memberikan ID penerima.

name

String

Nama penerima. Saat Anda menentukan penerima, Anda harus memberikan nama penerima.

signatureMethod

String

Metode tanda tangan yang diperlukan saat URL webhook kustom digunakan sebagai metode notifikasi. Nilai valid:

  • None: Tidak ada tanda tangan yang digunakan. Ini adalah nilai default.

  • HMAC_SHA1: Hashed Message Authentication Code Secure Hash Algorithm 1 (HMAC_SHA1) digunakan.

signatureText

String

Tanda tangan digital yang dihitung dengan menggunakan algoritma HMAC_SHA1 berdasarkan URL Webhook, kata sandi, dan peristiwa pesan. Contoh: 4mOdwflN1CgxxxxxxxuipuCYYWk=.

Contoh permintaan:

{
"messageEvent":{
    "submitterName":"xxx",
    "submitterUid":"167382665015xxxx",
    "category":"Tickets",
    "event":"Success",
    "eventTime":1625630049930,
    "message":"[DMS] Uji coba Webhook, kode: 144619 ",
    "Module":"Perubahan data"
    "receivers":[{"name":"xxx1","uid":"167382665015xxxx"},{"name":"xxx2","uid":"167382665016xxxx"}],
    "targetUsers":[{"name":"xxx1","uid":"167382665015xxxx"},{"name":"xxx2","uid":"167382665016xxxx"}],
    "taskName":"Uji coba Webhook"
    },
"signatureMethod":"HMAC_SHA1",
"signatureText":"4mOdwflN1Cg5NdM2XPuipuCYYWk="
 }

Contoh respons:

{"root":"","success":true}                   // Notifikasi berhasil dikirim.
{"root":"pesan kesalahan","success":false}     // Notifikasi gagal dikirim.

Verifikasi tanda tangan dan kunci tanda tangan

Jika Anda menentukan tanda tangan dan kunci tanda tangan saat mengonfigurasi Webhook, Anda dapat menjalankan kode berikut untuk memverifikasi kebenaran tanda tangan dan kunci rahasia:

// Metode panggilan balik yang digunakan untuk memverifikasi tanda tangan.
public void callback(String message) {
    JSONObject jsonObject = JSONObject.parseObject(str, Feature.OrderedField);
    String webhookUrl = "URL Webhook";
    String password = "Kunci tanda tangan";
    String origin = webhookUrl + password + JSON.toJSONString(jsonObject.getJSONObject("messageEvent"));
    // Tanda tangan yang dibawa oleh pesan DMS.
    String signatureText = jsonObject.getString("signatureText");
    // Tanda tangan yang dihitung di sisi klien.
    String expectedSignatureText = signatureByHmacSha1(origin, password);
    assert Objects.equals(signatureText, expectedSignatureText);
}


public String signatureByHmacSha1(String origin, String key) {
    final String charset = "UTF-8";
    String result = "N/A";
    try {
        SecretKey secretKey = new SecretKeySpec(key.getBytes(charset), "HmacSHA1");
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(secretKey);
        result = Base64.getEncoder().encodeToString(mac.doFinal(origin.getBytes(charset)));
    } catch (Exception ex){
    }
    return result;
}

Contoh

Anda dapat membuat skrip echo untuk menguji URL webhook dan melihat notifikasi yang dikirim menggunakan URL webhook.

  1. Simpan kode contoh berikut sebagai skrip bernama print_http_body.rb:

    require 'webrick'
    server = WEBrick::HTTPServer.new(:Port => ARGV.first)
    server.mount_proc '/' do |req, res|
      puts req.body
    end
    trap 'INT' do
      server.shutdown
    end
    server.start
  2. Pilih port yang tidak digunakan, seperti port 8000. Jalankan skrip: ruby print_http_body.rb 8000.

  3. Di Konsol DMS, konfigurasikan URL webhook sebagai metode notifikasi, seperti http://my.host:8000/. Untuk informasi lebih lanjut, lihat Konfigurasikan informasi pribadi dan metode notifikasi.

    Jika server dikonfigurasi untuk menggunakan Otentikasi Dasar melalui protokol HTTP, Anda dapat mengakses server menggunakan URL webhook yang berisi nama pengguna dan kata sandi. Contoh URL webhook:

    http://userName:password@my.host:8080/project/test-job
  4. Di kotak dialog Modify notification method, klik Test di sebelah kanan bidang webhook. DMS mengirimkan notifikasi ke URL webhook yang Anda tentukan.

    Kode berikut memberikan contoh notifikasi yang dikirim oleh DMS:

    {
    "messageEvent":{
        "submitterName":"xxx",
        "submitterUid":"167382665015xxxx",
        "category":"Tickets",
        "event":"Success",
        "eventTime":1625630049930,
        "message":"[DMS] Uji coba Webhook, kode: 144619 ",
        "Module":"Perubahan data"
        "receivers":[{"name":"xxx1","uid":"167382665015xxxx"}],
        "targetUsers":[{"name":"xxx1","uid":"167382665015xxxx"}],
        "taskName":"Uji coba Webhook"
        },
    "signatureMethod":"HMAC_SHA1",
    "signatureText":"4mOdwflN1Cg5NdM2XPuipuCYYWk="
     }
    127.0.0.1 - - [20/Apr/2021:20:07:47 CST] "POST / HTTP/1.1" 200 0