package dingding import ( "encoding/json" "fmt" "net/http" "strings" ) // DingClient var ( //DingClient *DingConfig ) type DingConfig struct { AccessToken string Url string } type DingMsg struct { project string AppMode string Url string Info string Err error } type DingText struct { Content string `json:"content"` } type DingMsgInfo struct { Msgtype string `json:"msgtype"` Text DingText `json:"text"` } var dingClient *DingConfig func LoadAccessToken(accessToken string) { dingClient = &DingConfig{ AccessToken: accessToken, Url: "https://oapi.dingtalk.com/robot/send", } } func (d *DingConfig) SendMsg(text string) { url := d.Url + "?access_token=" + d.AccessToken dingMsgInfo := DingMsgInfo{ Msgtype: "text", Text: DingText{ Content: text, }, } dingMsgInfoByte, _ := json.Marshal(dingMsgInfo) res, err := http.Post( url, "application/json", strings.NewReader(string(dingMsgInfoByte))) if err != nil { fmt.Println("发送错误:", url, err, string(dingMsgInfoByte)) } defer res.Body.Close() return } func Send(info string) { msg := DingMsg{ Info: info, } SendInfo(msg) } func SendInfo(msg DingMsg) { text := "通知:\n" + msg.Info if msg.Err != nil { text = text + "错误:" + msg.Err.Error() + "/n" } dingClient.SendMsg(text) return }