前言
通过钉钉群机器人的webhook,实现消息推送。
本文代码仅示例markdown格式的消息。
示例代码
注意修改钉钉机器人的webhook
package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "net/http" "strings" ) type Md struct { Title string `json:"title"` Text string `json:"text"` } type Ding struct { Msgtype string `json:"msgtype"` Markdown Md `json:"markdown"` } func DingMarshal(title, text string) string { // struct序列化为json var myjson Ding = Ding{ Msgtype: "markdown", Markdown: Md{ Title: title, Text: text, }, } va, err := json.Marshal(myjson) if err != nil { panic(err) } return string(va) } func PostUrl(jsondata string) { // 发起post请求 // 钉钉群机器人的webhook url := "dingding webhook" var jsonstr = []byte(jsondata) req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonstr)) if err != nil { log.Fatal(err) } req.Header.Set("Content-Type", "application/json;charset=utf-8") client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() // 响应的数据也可以不要 body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Printf("响应体: %v\n", string(body)) } func SpliceString() string { // 字符串拼接 var rst strings.Builder rst.WriteString("# 标题1 \n\n") rst.WriteString("- Golang \n\n") rst.WriteString("--- \n\n") rst.WriteString("## 标题2 \n\n") rst.WriteString("- 无序列表1 \n\n") rst.WriteString("- 无序列表2 \n\n") rst.WriteString("--- \n\n") rst.WriteString("### 标题3 \n\n") rst.WriteString("1. 有序列表1 \n\n") rst.WriteString("2. 有序列表2 \n\n") var msg string = "hello world" rst.WriteString("3. " + msg + " \n\n") return rst.String() } func main() { var title string = "测试标题" var text string = SpliceString() var va string = DingMarshal(title, text) PostUrl(va) }