功能介绍

Service Hook 能够对服务、事件、过滤条件、发送行为等要素进行管理,具备多服务、多事件、条件过滤、发送配置等能力。它支持将您在 CODING 中操作所产生的事件,以标准 HTTP 协议发送给第三方平台,平台在接收到 HTTP 请求后进行响应以实现自定义功能需求。

服务类型

服务是指第三方应用服务,比如 HTTP Server、企业微信、钉钉、飞书、Jenkins 等。CODING 目前主要支持的服务类型有:Web Hook、企业微信、钉钉、飞书、Jenkins。点击阅读服务类型介绍了解更多详情。

事件

事件是指用户在某一个功能产生的操作,事件将包括基本的事件数据。目前 CODING 支持事件的功能模块有:

  • 迭代
  • 事项
  • 代码推送
  • 合并请求
  • 制品
  • 制品仓库
  • 持续集成
  • 文件网盘
  • Wiki
  • 项目成员

点击阅读事件介绍了解更多详情。

过滤条件

过滤条件是指操作触发时产生的事件,是否在指定条件满足的情况下再发送。点击阅读过滤器了解更多详情。

发送行为

发送行为是指第三方应用服务支持的发送方式,比如企业微信支持发送到群聊机器人。Service Hook 支持分页列表、筛选、新建、编辑、测试、事件开关、发送记录、复制等操作。

快速开始

查看列表

Service Hook 列表支持分页查看,支持搜索过滤,可通过如下条件过滤列表:

  • 服务
  • 事件
  • 状态
  • 事件开关

Service Hook 列表

Service Hook 列表过滤

批量操作

Service Hook 列表支持删除、启用 / 禁用等分页批量操作。



可退出批量操作

新建

点击新建 Service Hook按钮,将会弹窗新建弹窗,按照提示进行操作。

选择服务
选择事件
填写发送方式配置

编辑

选择需要编辑的 Service Hook 记录,点击右侧详情按钮,将会弹窗 Service Hook 编辑侧滑框。

Service Hook 详情侧滑框

支持自定义备注名,可以通过自定备注名展示每条 Service Hook 的用途等信息。

自定义备注名
修改自定义备注名
展示自定义备注名

测试

在新增和编辑 Service Hook 的时候,填写好必要信息之后,点击测试按钮,可以发送一条测试消息到第三方平台。

Service Hook 测试

事件开关

如某些场景下,暂时不需要开启 Service Hook,可以选择将某条 Service Hook 记录禁用,如下图操作即可。

事件开关

发送记录

在事件被触发时,发送的消息记录将会被系统记录下来,可以通过查看发送记录了解发送的详情信息。选中某条记录,可以展开查看发送记录的详细信息。

Service Hook 发送记录按钮
Service Hook 发送记录详情

复制

支持通过复制一条 Service Hook 记录创建新的 Service Hook,只需要选中需要复制的记录,点击复制按钮,新建弹窗将自动填充被复制的记录内容,按需修改内容即可保存为新的记录。

Service Hook 复制按钮
Service Hook 复制弹窗

模板

Service Hook 支持使用模板自定义发送内容,主要支持文本、Markdown、自定义等三种方式,支持通过 JsonPath 的方式读取事件消息填充模板。

Markdown 模板

如下图,当用户选择文本或者 Markdown 时,输入自定义模板后,发送内容将以文本或者 Markdown 的格式发送,内容为填充模板后的内容。

以下为代码推送默认模板示例:

#### CODING  Service Hook 事件消息
**项目标识**:[${project.name}](${project.url})
**项目名**:[${project.display_name}](${project.url})
**触发成员**:${sender.name}
**事件**:${eventName}
**事件内容**:
> 仓库:[${repository.name}](${repository.html_url})
推送者:${pusher.name}
分支:${ref}
Commit:${head_commit.id}
提交记录:${head_commit.message}
提交时间:${head_commit.timestamp}

代码推送默认模板示例配置:

Markdown 模板

代码推送默认模板示例发送消息结果:

发送消息结果

模板函数

除支持模板外,还提供了一些简单的模板函数以方便处理数据输出。目前支持的模板函数如下:

  1. 日期格式化
// 示例:使用 org.apache.commons.lang3.time.FastDateFormat 支持的日期格式进行格式化日期输出
提交时间:${head_commit.timestamp|date:yyyy-MM-dd HH:mm:ss}
  1. 提取纯文本
// 示例:使用 jsoup 提供 HTML 中的纯文本
提交记录:${head_commit.message|text} \n\

自定义模板

除 Markdown 和文本类型外,任何符合第三方平台标准的消息 Json 格式的模板,都可以通过填充 Json 格式内容实现模板内容的自定义。下文将展示添加项目成员时的自定义图文消息示例。

通过 JsonPath 填充内容的 Json 格式模板:

{
    "msgtype": "news",
    "news": {
        "articles": [
            {
                "title": "欢迎使用 CODING",
                "description": "欢迎项目成员 ${member.name} 加入 CODING",
                "url": "www.qq.com",
                "picurl": "https://help-assets.codehub.cn/enterprise/20210416165040.png"
            }
        ]
    }
}

配置自定义模板内容:

自定义模板消息发送结果:

其他信息

  • 自定义 Json 模板将无法支持 @ 某人、自定义签名等功能,如有需求,请在 Json 模板中补充相关字段。
  • 因企业微信官方对 Markdown 模板支持问题,暂时不支持 userid 和手机号的方式 @某人。
  • 如成员 CODING 手机号与企业微信、钉钉、飞书等平台手机号相同,事项评论等 @ 操作将会自动支持 @某人。
上一篇绑定钉钉机器人
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?