jenkinsci / dingtalk-plugin

Dingtalk for jenkins
https://jenkinsci.github.io/dingtalk-plugin/
MIT License
355 stars 174 forks source link

这个插件发起的通知里面可以把 @被通知人 插入消息中间,而不是结尾吗? #305

Open huxiang opened 2 weeks ago

huxiang commented 2 weeks ago

使用 Python 计算签名,再用 http post 的方法发送通知:

DingTalk.send_message({
    "msgtype": "markdown",
    "markdown": {
        "title": "测试标题",
        "text": "测试消息开始 @139xxxxxxxx 测试消息结束",
    },
    "at": {
        "atMobiles": ['139xxxxxxxx']
    }
})

这样得到的消息大概是这样 (抱歉,不方便截图)

测试消息开始 @被通知人 测试消息结束

但是使用 Jenkins 钉钉插件,得到的的消息是这样的

测试消息开始 @被通知人 测试消息结束
@被通知人

官方文档也有样例: https://jenkinsci.github.io/dingtalk-plugin/guide/freestyle.html

Image

liuweiGL commented 1 week ago

执行人是插件内置的字段,下面那一行是额外配置的 @ 信息

huxiang commented 1 week ago

执行人是插件内置的字段,下面那一行是额外配置的 @ 信息

恩,如果是用 Pipeline script 呢?比如:

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                dingtalk(
                    robot: 'robot-01',
                    type: 'MARKDOWN',
                    title: '测试标题',
                    text: ['测试消息开始 @139xxxxxxxx 测试消息结束'],
                    at: ['139xxxxxxxx']
                    )
            }
        }
    }
}

这种期望得到的通知消息是:

测试消息开始 @被通知人 测试消息结束

而实际是:

测试消息开始 @被通知人 测试消息结束
@被通知人

如上所述,使用钉钉开发文档的 Python 示例去调用发消息的接口,可以得到期望的通知消息。