Skip to content

自定义消息

项目级配置里有两个都能写内容的输入框,区别是在内置消息之上追加还是把内置消息整个换掉

配置项是否勾选 禁用内置消息效果
自定义内容不勾选内置消息照发,你写的内容追加在最后
自定义消息勾选内置消息完全不发,只发你写的内容

两个框都在项目配置的 钉钉配置 里,勾选机器人后点 advanced 展开。

内置消息长什么样

不勾 禁用内置消息 时,插件发的是这样一条 ACTION_CARD

markdown
# [项目名](项目地址)
---
- 任务:[#42](本次构建地址)
- 状态:成功
- 持续时间:1 min 20 sec
- 执行人:张三

这里是你在「自定义内容」里写的东西

外加『更改记录』『控制台』两个按钮。

禁用内置消息之后

勾上 禁用内置消息,上面那些就全没了,只剩你在 自定义消息 里写的内容。想保留项目名、状态之类的信息, 自己用环境变量拼:

markdown
# ${PROJECT_NAME} ${JOB_STATUS}

- 构建:[${JOB_NAME}](${JOB_URL})
- 耗时:${JOB_DURATION}
- 触发人:${EXECUTOR_NAME}

> 分支 ${GIT_BRANCH},提交 ${GIT_COMMIT}

有几件事跟着一起变了,配之前先知道:

  • 按钮没有了。『更改记录』『控制台』两个默认按钮只属于内置消息,自定义消息发的是 MARKDOWN 类型,这个类型不支持按钮。想留住这两个入口就在正文里写成链接: [更改记录](${JOB_URL}changes)[控制台](${JOB_URL}console)
  • 消息类型固定是 MARKDOWN,目前不能选。所以 @ 在手机端不可点击,详见 @ 人
  • 标题不受这里控制。 钉钉在会话列表里透出的那行字始终是 项目名 + 状态,例如 my-job 成功 (用关键词安全策略的话后面还会自动拼上关键词),改不了。正文里的 # 一级标题 是消息内部的标题, 两回事。
  • 通知人 依然生效。 里面配的 @ 会追加到消息末尾,除非正文里已经写过同样的 @

关于换行

自定义消息自定义内容 都是多行文本框,直接按回车换行就行。

TIP

钉钉的 markdown 只支持一个子集,能用哪些语法见 Markdown 语法

只想给某几种结果换内容

自定义消息 是整个机器人配置共用的,不区分构建结果。想让成功和失败发不一样的东西,两个办法:

  • 同一个机器人在正文里用 ${JOB_STATUS} 把状态带出来,内容本身保持通用
  • 在系统设置里配两个机器人(webhook 可以填同一个群),项目里就会出现两条独立配置, 各自勾不同的 通知时机、写不同的 自定义消息

需要完全自由的控制流就别用项目级配置了,改用 pipeline 的 dingtalk 步骤