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.

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 HookParameter 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:
|
signatureText | String | Tanda tangan digital yang dihitung dengan menggunakan algoritma HMAC_SHA1 berdasarkan URL Webhook, kata sandi, dan peristiwa pesan. Contoh: |
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.
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.startPilih port yang tidak digunakan, seperti port 8000. Jalankan skrip:
ruby print_http_body.rb 8000.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-jobDi 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