Skip to content

Commit 850ac54

Browse files
Merge branch 'dev'
增加发送钉钉消息的功能
2 parents 1468341 + ea71cfb commit 850ac54

File tree

7 files changed

+89
-12
lines changed

7 files changed

+89
-12
lines changed

README.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Golang + Beego编写, 提供一些开发/运维常见操作的HTTP API接口,
55
# 主要功能
66

77
- 微信报警
8+
- 发送钉钉报警
89
- 2步验证(Google Authenticator验证)
910
- 密码存储
1011
- 发送邮件
@@ -19,7 +20,9 @@ Golang + Beego编写, 提供一些开发/运维常见操作的HTTP API接口,
1920
- [依赖](#依赖)
2021
- [功能列表](#功能列表)
2122
- [微信报警](#微信报警)
22-
- [发送消息](#发送消息)
23+
- [发送微信消息](#发送微信消息)
24+
- [钉钉报警](#钉钉报警)
25+
- [发送钉钉消息](#发送钉钉消息)
2326
- [2步验证](#2步验证)
2427
- [启用2步验证](#启用2步验证)
2528
- [验证6位数字](#验证google-authenticator或是其他的类似的app生成的6位数字)
@@ -73,6 +76,7 @@ Golang + Beego编写, 提供一些开发/运维常见操作的HTTP API接口,
7376
- 配置是否启用token验证
7477
- 配置jwt token签名字符串,请自行生成修改
7578
- 配置微信报警的配置, corpID、warningAppAgentID、warningAppSecret,可参考文档[设置微信报警流程](/doc/weixin.md)
79+
- 配置钉钉机器人的URL(**可选**)
7680

7781
2. 首先初始化, 会生成root token,该root token 管理其他的token(**该步骤可选**)
7882

@@ -152,7 +156,7 @@ go get github.com/chanyipiaomiao/weixin-kit
152156
这3个参数可以在企业微信后台管理页面可以看到,详情可以查看上面的文档。
153157

154158

155-
#### 发送消息
159+
#### 发送微信消息
156160

157161
```sh
158162
POST /api/v1/sendmsg/weixin
@@ -166,6 +170,25 @@ text: 要发送的文本消息
166170

167171
[返回到目录](#目录)
168172

173+
## 钉钉报警
174+
175+
需要在conf/app.conf 配置钉钉机器人的URL,或者是在POST中传递url参数指定钉钉机器人地址
176+
177+
#### 发送钉钉消息
178+
179+
```sh
180+
POST /api/v1/sendmsg/dingding
181+
182+
msgType: text|markdown
183+
msg: 要发送的消息
184+
title: 发送markdown消息时需要指定此参数,指定标题
185+
url: 可以指定钉钉机器人的URL,这样就不用在conf/app.conf 配置钉钉机器人的URL
186+
```
187+
188+
注意: 在发送markdown消息时,markdown的语法可以查看[官方文档](https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.xuaZtG&treeId=257&articleId=105735&docType=1#s2)
189+
190+
[返回到目录](#目录)
191+
169192
## 2步验证
170193

171194
2步验证,可以方便的集成到系统中,只需要调用3个API即可.

common/notice.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,20 @@ import (
88
)
99

1010
// SendByDingTalkRobot 通过钉钉发送消息通知
11-
func SendByDingTalkRobot(messageType string, message string) (bool, error) {
12-
url := beego.AppConfig.String("dingTalkRobot")
13-
dingtalk := hltool.NewDingTalkClient(url, message, "text")
11+
func SendByDingTalkRobot(messageType, message, title, robotURL string) (bool, error) {
12+
var url string
13+
if robotURL == "" {
14+
url = beego.AppConfig.String("dingTalkRobot")
15+
}
16+
url = robotURL
17+
dingtalk := &hltool.DingTalkClient{
18+
RobotURL: url,
19+
Message: &hltool.DingTalkMessage{
20+
Type: messageType,
21+
Message: message,
22+
Title: title,
23+
},
24+
}
1425
ok, err := hltool.SendMessage(dingtalk)
1526
if err != nil {
1627
dingFields := map[string]interface{}{

common/password.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func GenPassword() map[string]bool {
2626
sendResult := make(chan bool)
2727
if ok, _ := beego.AppConfig.Bool("authpassword::enableDingtalkReciveGenPassword"); ok {
2828
go func(ch chan bool, messageType, message string) {
29-
ok, _ := SendByDingTalkRobot(messageType, message)
29+
ok, _ := SendByDingTalkRobot(messageType, message, "", "")
3030
ch <- ok
3131
}(sendResult, "text", info)
3232
}

controllers/common.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ type EmailController struct {
105105
BaseController
106106
}
107107

108-
// VersionController 密码管理控制器
108+
// VersionController 程序自身版本管理控制器
109109
type VersionController struct {
110110
BaseController
111111
}
@@ -115,12 +115,17 @@ type TwoStepAuthController struct {
115115
BaseController
116116
}
117117

118-
// StorePasswordController 密码管理
118+
// StorePasswordController 密码管理控制器
119119
type StorePasswordController struct {
120120
BaseController
121121
}
122122

123-
// WeixinController 发送微信消息管理
123+
// WeixinController 发送微信消息控制器
124124
type WeixinController struct {
125125
BaseController
126126
}
127+
128+
// DingdingController 发送钉钉消息控制器
129+
type DingdingController struct {
130+
BaseController
131+
}

controllers/dingding.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package controllers
2+
3+
import (
4+
"devops-api/common"
5+
"fmt"
6+
)
7+
8+
// SendMessage 发送钉钉消息
9+
func (d *DingdingController) SendMessage() {
10+
msgType := d.GetString("msgType")
11+
msg := d.GetString("msg")
12+
title := d.GetString("title")
13+
robotURL := d.GetString("url")
14+
15+
requestID := d.Data["RequestID"].(string)
16+
sendDingdingMessageLog := map[string]interface{}{
17+
"entryType": "SendDingdingMessage",
18+
"requestId": requestID,
19+
}
20+
_, err := common.SendByDingTalkRobot(msgType, msg, title, robotURL)
21+
if err != nil {
22+
sendDingdingMessageLog["statuscode"] = 1
23+
sendDingdingMessageLog["errmsg"] = fmt.Sprintf("%s", err)
24+
common.GetLogger().Error(sendDingdingMessageLog, "发送钉钉消息")
25+
d.Data["json"] = sendDingdingMessageLog
26+
d.ServeJSON()
27+
return
28+
}
29+
sendDingdingMessageLog["statuscode"] = 0
30+
sendDingdingMessageLog["errmsg"] = ""
31+
sendDingdingMessageLog["result"] = "发送成功"
32+
common.GetLogger().Info(sendDingdingMessageLog, msg)
33+
d.Data["json"] = sendDingdingMessageLog
34+
d.ServeJSON()
35+
}

controllers/weixin.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ func (w *WeixinController) SendMessage() {
1111
toTag := w.GetString("toTag")
1212
toUser := w.GetString("toUser")
1313
toParty := w.GetString("toParty")
14-
text := w.GetString("text")
14+
msg := w.GetString("msg")
1515

1616
requestID := w.Data["RequestID"].(string)
1717
sendWeixinMessageLog := map[string]interface{}{
1818
"entryType": "SendWeixinMessage",
1919
"requestId": requestID,
2020
}
21-
_, err := common.SendWeixinMessage(msgType, text, toTag, toUser, toParty)
21+
_, err := common.SendWeixinMessage(msgType, msg, toTag, toUser, toParty)
2222
if err != nil {
2323
sendWeixinMessageLog["statuscode"] = 1
2424
sendWeixinMessageLog["errmsg"] = fmt.Sprintf("%s", err)
@@ -30,7 +30,7 @@ func (w *WeixinController) SendMessage() {
3030
sendWeixinMessageLog["statuscode"] = 0
3131
sendWeixinMessageLog["errmsg"] = ""
3232
sendWeixinMessageLog["result"] = "发送成功"
33-
common.GetLogger().Info(sendWeixinMessageLog, text)
33+
common.GetLogger().Info(sendWeixinMessageLog, msg)
3434
w.Data["json"] = sendWeixinMessageLog
3535
w.ServeJSON()
3636
return

routers/router.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ func init() {
2121
beego.NSNamespace("/weixin",
2222
beego.NSRouter("", &controllers.WeixinController{}, "post:SendMessage"),
2323
),
24+
beego.NSNamespace("/dingding",
25+
beego.NSRouter("", &controllers.DingdingController{}, "post:SendMessage"),
26+
),
2427
),
2528
beego.NSNamespace("/md5",
2629
beego.NSRouter("", &controllers.MD5Controller{}),

0 commit comments

Comments
 (0)