钉钉开发文档:https://developers.dingtalk.com/document/app/custom-robot-access
微信机器人:https://work.weixin.qq.com/api/doc/90000/90136/91770
1. 钉钉通知
1.1 创建群机器人
- 自定义关键词:最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。例如添加了一个自定义关键词:监控报警,则这个机器人所发送的消息,必须包含监控报警这个词,才能发送成功。
- IP地址(段):设定后,只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式:IP地址和IP地址段,暂不支持IPv6地址白名单,格式如下。 | 格式 | 说明 | | —- | —- | | 1.1.1.1 | 开发者的出口公网IP地址(非局域网地址) | | 1.1.1.0/24 | 用CIDR表示的一个网段 |

测试:
curl 'https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc6729c49d8cbb80a1' -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content":"构建通知我就是我, 是不一样的烟火"}}'
1.2 消息通知
其他演示使用postman测试……
文本消息通知
{"at": {"atMobiles": ["15011495602"],"atUserIds": [""],"isAtAll": false},"text": {"content": "DEVOPS我就是我, @kkobe 是不一样的烟火"},"msgtype": "text"}
超链接消息
{"msgtype": "link","link": {"text": "DEVOPS 这是我们训练营的课程链接","title": "第一期JenkinsCI/CD实践训练营","picUrl": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png","messageUrl": "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25"}}
MarkDown格式消息
{"msgtype": "markdown","markdown": {"title": "明天的DEVOPS课程安排","text": "## 《Jenkins实践扩展》 \n ### 1.内容1 \n ### 2.内容1 \n ### 3.内容1 \n ### 4.内容1 \n> \n> ###### 更多详细信息点击 [课程链接](https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25) \n"},"at": {"atMobiles": ["158115965723"],"atUserIds": ["user123"],"isAtAll": true}}
actionCard
{"actionCard": {"title": "DEVOPS第一期JenkinsCI/CD实践训练营","text": " ### 第一期JenkinsCI/CD实践训练营","btnOrientation": "0","singleTitle" : "阅读全文","singleURL" : "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25/"},"msgtype": "actionCard"}
feedCard
{"msgtype":"feedCard","feedCard": {"links": [{"title": "第一期实践训练营","messageURL": "https://www.dingtalk.com/","picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"},{"title": "DEVOPS第二期实践训练营","messageURL": "https://www.dingtalk.com/","picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"},{"title": "DEVOPS第三期实践训练营","messageURL": "https://www.dingtalk.com/","picURL": "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"}]}}
actionCard
{"msgtype": "actionCard","actionCard": {"title": "第一期DevOpsCI/CD实践培训课程","text": "DEVOPS \n\n #### 第一期DevOpsCI/CD实践培训课程 \n\n ","hideAvatar": "0","btnOrientation": "0","btns": [{"title": "内容不错","actionURL": "https://www.dingtalk.com/"},{"title": "不感兴趣","actionURL": "https://www.dingtalk.com/"}]}}
2. 企业微信通知
2.1 添加群机器人
https://work.weixin.qq.com/wework_admin/frame#apps



2.2 消息通知
文本消息
{"text": {"content": "DEVOPS我就是我, @kkobe 是不一样的烟火","mentioned_list":["wangqing","@all"],"mentioned_mobile_list":["13800001111","@all"]},"msgtype": "text"}
图文消息
{"msgtype": "news","news": {"articles" : [{"title" : "第一期CICD实践","description" : "第一期CICD实践-jenkins","url" : "https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25","picurl" : "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"}]}}
markdown格式消息
{"msgtype": "markdown","markdown": {"content": "## 《Jenkins实践扩展》 \n ### 1.内容1 \n ### 2.内容1 \n ### 3.内容1 \n ### 4.内容1 \n> \n> ###### 更多详细信息点击 [课程链接](https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25) \n"}}
3. Jenkins 集成实践消息通知
pipeline {agent {node {label "master"}}stages{stage("Dingding"){steps{script{mdText = "## DEVOPS《Jenkins实践扩展》 \n ### 1.内容1 \n ### 2.内容1 \n ### 3.内容1 \n ### 4.内容1 \n> \n> ###### 更多详细信息点击 [课程链接](https://www.idevops.site/detail/term_6054ad6b126c2_MTE8oq/25) \n"DingTalk("DEVOPS第一期Jenkins训练营", mdText, true)picurl = "http://wechatapppro-1252524126.file.myqcloud.com/app7x5jejrv6551/image/compress/640480598kmgc1v610gr1.png"WeiXin("DEVOPS第一期Jenkins训练营", "DEVOPS第一期Jenkins训练营", "${JOB_URL}", picurl)}}}}}/*def DingTalk(mdTitle, mdText, atAll, atUser = '' ){//webhook = "https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc67297f956f43f9c2966b30d3b500eb1c49d8cbb80a1"sh """curl --location --request POST ${webhook} \--header 'Content-Type: application/json' \--data '{"msgtype": "markdown","markdown": {"title": "${mdTitle}","text": "${mdText}"},"at": {"atMobiles": ["${atUser}"],"isAtAll": "${atAll}"}}'"""}*/def DingTalk(title, text, atAll, atUser = '' ){//webhook = "https://oapi.dingtalk.com/robot/send?access_token=e7c8e633c9d305b4a6bdc67297f956f43f9c2966b30d3b500eb1c49d8cbb80a1"sh """curl --location --request POST ${webhook} \--header 'Content-Type: application/json' \--data '{"msgtype": "text","text": {"content": "${text}"},"at": {"atMobiles": ["${atUser}"],"isAtAll": "${atAll}"}}'"""}def WeiXin(title, desc, url, picurl){webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=64aa7589-290a-45ef-8d8a-bcb9650cba9c"sh """curl --location --request POST ${webhook} \--header 'Content-Type: application/json' \--data '{"msgtype": "news","news": {"articles" : [{"title" : "${title}","description" : "${desc}","url" : "${url}","picurl" : "${picurl}"}]}}'"""}

