SMS, e-posta, DingTalk, DingTalk sohbet robotu ve Lark üzerinden yapılan bildirimlere ek olarak, Data Management DMS özel webhook'ları da destekler.
Yapılandırma
Webhook'unuzu yapılandırmak için kişisel ayarlarınızdaki Webhook bölümüne gidin, uç nokta URL'nizi girin ve Webhook bildirim kanalını seçin.
Ayrıca bir imzalama yöntemi ve bir imzalama anahtarı yapılandırmanız gerekir. Webhook URL bağlantınızı doğrulamak için Test düğmesine tıklayın. Bildirim ayarları panelinde; DingTalk (exclusive), DingTalk, DingTalk chatbot, Email, Lark ve SMS gibi diğer kanalları da seçebilirsiniz.
Daha fazla bilgi için bkz. Kişisel bilgilerinizi ve bildirim yöntemlerinizi yapılandırma.
Olaylar
DMS'de bir bildirim tetiklendiğinde sistem, yapılandırdığınız webhook URL'sine bir HTTP POST isteği gönderir. İstek bir başlık ve gövdeden oluşur.
İstek başlığı
DMS-Event: Message Hook
İstek gövdesi
|
Parametre |
Tür |
Açıklama |
|
submitterUid |
String |
İsteği gönderen kullanıcının UID değeri. |
|
submitterName |
String |
İsteği gönderen kullanıcının adı. |
|
category |
String |
Özellik modülü. Örnekler: bilet, görev orkestrasyonu veya veri ambarı geliştirme. |
|
module |
String |
İş türü. Örnekler: izin başvurusu, veri değişikliği, şema tasarımı veya veri dışa aktarma. |
|
event |
String |
Belirli olay. Örnekler: Onay Bekliyor, Başarılı ve Başarısız. |
|
taskId |
String |
Biletin veya görev akışının ID değeri. |
|
taskName |
String |
Görevin adı. |
|
eventTime |
String |
Olayın gerçekleştiği zaman. |
|
message |
String |
Sistemin yerleşik mesaj metni. |
|
targetUsers |
Array of objects |
Hedeflenen alıcılar. Birden fazla alıcı desteklenir. |
|
receivers |
Array of objects |
Gerçek alıcıları temsil eden nesne dizisi. Yapılandırılmış bir bildirim yöntemi olmayan kullanıcılar bildirim almaz. |
|
uid |
String |
Alıcının UID değeri. |
|
name |
String |
Alıcının adı. |
|
signatureMethod |
String |
İmzalama yöntemi. Aşağıdaki imzalama yöntemleri desteklenir:
|
|
signatureText |
String |
Webhook URL'si, imzalama anahtarı ve mesaj olayından hesaplanan bir HmacSha1 değeri olan dijital imza. Örnek: |
İstek gövdesi örneği
{
"messageEvent":{
"submitterName":"xxx",
"submitterUid":"167382665015xxxx",
"category":"ticket",
"event":"Succeeded",
"eventTime":1625630049930,
"message":"[Data Management DMS] Webhook test, code: 144619 ",
"module":"data change",
"receivers":[{"name":"xxx1","uid":"167382665015xxxx"},{"name":"xxx2","uid":"167382665016xxxx"}],
"targetUsers":[{"name":"xxx1","uid":"167382665015xxxx"},{"name":"xxx2","uid":"167382665016xxxx"}],
"taskName":"Webhook test"
},
"signatureMethod":"HMAC_SHA1",
"signatureText":"4mOdwflN1Cg5NdM2XPuipuCYYWk="
}
Yanıt örneği
{"root":"","success":true} //Success
{"root":"error message","success":false} //Failure
İmza doğrulama
Bir imzalama anahtarı yapılandırdıysanız imzayı doğrulamak için aşağıdaki kodu kullanın.
// Verifies the signature of the incoming message
public void callback(String message) {
JSONObject jsonObject = JSONObject.parseObject(message, Feature.OrderedField);
String webhookUrl = "Your configured webhook URL";
String signatureKey = "Your configured signature key";
String origin = webhookUrl + signatureKey + JSON.toJSONString(jsonObject.getJSONObject("messageEvent"));
// The signature from the DMS message
String signatureText = jsonObject.getString("signatureText");
// The signature calculated on your end
String expectedSignatureText = signatureByHmacSha1(origin, signatureKey);
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;
}
Webhook alıcı örneği
Webhook uç noktanızı test etmek ve olay yükünü görüntülemek için basit bir echo betiği oluşturabilirsiniz.
-
Aşağıdaki betiği print_http_body.rb olarak kaydedin.
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 Kullanılmayan bir bağlantı noktası seçin (örneğin 8000) ve betiği çalıştırın:
ruby print_http_body.rb 8000.-
DMS konsolunda webhook URL'sini yapılandırın (örneğin,
http://my.host:8000/). Daha fazla bilgi için bkz. Kişisel bilgilerinizi ve bildirim yöntemlerinizi yapılandırma.Sunucunuz HTTP Temel Kimlik Doğrulaması gerektiriyorsa kullanıcı adını ve parolayı URL'ye ekleyebilirsiniz. Örnek:
http://userName:password@my.host:8080/project/test-job -
Modify notification method iletişim kutusunda webhook URL'nizin yanındaki Test seçeneğine tıklayın. Sunucunuz DMS'den bir test bildirimi alır.
Sunucu aşağıdaki örneğe benzer bir bildirim alır:
{ "messageEvent":{ "submitterName":"xxx", "submitterUid":"167382665015xxxx", "category":"ticket", "event":"Succeeded", "eventTime":1625630049930, "message":"[Data Management DMS] Webhook test, code: 144619 ", "module":"data change", "receivers":[{"name":"xxx1","uid":"167382665015xxxx"}], "targetUsers":[{"name":"xxx1","uid":"167382665015xxxx"}], "taskName":"Webhook test" }, "signatureMethod":"HMAC_SHA1", "signatureText":"4mOdwflN1Cg5NdM2XPuipuCYYWk=" } 127.0.0.1 - - [20/Apr/2021:20:07:47 CST] "POST / HTTP/1.1" 200 0