使用自定义Webhook通知

数据管理DMS除了手机短信、邮件、钉钉信息、钉钉机器人Webhook等消息通知方式外,支持使用自定义Webhook通知。

配置介绍

配置个人信息时,在Webhook区域,输入URL地址,并勾选Webhook通知渠道。

image

更多信息,请参见配置个人信息及通知方式

事件说明

当DMS中有消息通知时,系统会将消息通知发送到您指定的URL地址,发送的POST请求内容如下所示。

请求头

DMS-Event: Message Hook

请求体参数

参数

数据类型

描述

submitterUid

String

提交人的UID。

submitterName

String

提交人名称。

category

String

功能模块:工单、任务编排、数仓开发等。

module

String

业务类型:权限申请、数据变更、结构设计、数据导出等。

event

String

具体事件:待审批、执行成功、执行失败等。

taskId

String

工单ID或任务流ID。

taskName

String

任务名称。

eventTime

String

事件时间。

message

String

系统内置消息文本。

targetUsers

对象数组

目标接收者,支持通知多个接收人。

receivers

对象数组

实际接收人对象数组。未配置通知方式用户将无法接收通知。

uid

String

接收人的UID,该参数为接收人对象的成员。

name

String

接收人名称,该参数为接收人对象的成员。

signatureMethod

String

当您使用自定义Webhook时,需选择签名方式(必选项),当前支持两种签名方式:

  • None(默认):不使用签名。

  • HMAC_SHA1:使用HMAC_SHA1加密算法(Hashed Message Authentication Code, Secure Hash Algorithm)。

signatureText

String

数字签名,通过Webhook地址、密码、消息事件计算得出的HmacSha1值,例如4mOdwflN1CgxxxxxxxuipuCYYWk=

请求体示例

{
"messageEvent":{
    "submitterName":"xxx",
    "submitterUid":"167382665015xxxx",
    "category":"工单",
    "event":"执行成功",
    "eventTime":1625630049930,
    "message":"【DMS数据管理】Webhook test, code: 144619 ",
    "module":"数据变更",
    "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="
 }

响应体示例

{"root":"","success":true}                   //成功
{"root":"error message","success":false}     //失败

Webhook接收端例子

您可以通过如下方式,创建一个简单的Echo脚本,测试、查看Webhook的执行效果。

  1. 将如下脚本保存成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. 选择未被使用的端口(比如8000),并启动脚本:ruby print_http_body.rb 8000

  3. 新版DMS控制台上,配置Webhook的URL地址,例如http://my.host:8000/。具体操作,请参见配置个人信息及通知方式

    当触发支持HTTP Basic Authentication的服务器时, 允许在URL中添加用户名和密码进行访问,Webhook示例如下:

    http://userName:password@my.host:8080/project/test-job
  4. 修改通知方式对话框中,单击自定义Webhook地址右侧的测试,您的服务端将会收到DMS发来的消息通知。

    如下为通知示例:

    {
    "messageEvent":{
        "submitterName":"xxx",
        "submitterUid":"167382665015xxxx",
        "category":"工单",
        "event":"执行成功",
        "eventTime":1625630049930,
        "message":"【DMS数据管理】Webhook test, code: 144619 ",
        "module":"数据变更",
        "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