[golang]推送钉钉机器人消息

简介: [golang]推送钉钉机器人消息

前言

通过钉钉群机器人的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)
}

参考

相关文章
|
1月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
87 4
Golang语言之管道channel快速入门篇
|
1月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
56 4
Golang语言文件操作快速入门篇
|
1月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
76 3
Golang语言之gRPC程序设计示例
|
1月前
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
69 4
|
1月前
|
Go
Golang语言错误处理机制
这篇文章是关于Golang语言错误处理机制的教程,介绍了使用defer结合recover捕获错误、基于errors.New自定义错误以及使用panic抛出自定义错误的方法。
43 3
|
7天前
|
前端开发 中间件 Go
实践Golang语言N层应用架构
【10月更文挑战第2天】本文介绍了如何在Go语言中使用Gin框架实现N层体系结构,借鉴了J2EE平台的多层分布式应用程序模型。文章首先概述了N层体系结构的基本概念,接着详细列出了Go语言中对应的构件名称,包括前端框架(如Vue.js、React)、Gin的处理函数和中间件、依赖注入和配置管理、会话管理和ORM库(如gorm或ent)。最后,提供了具体的代码示例,展示了如何实现HTTP请求处理、会话管理和数据库操作。
21 0
|
1月前
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
41 4
Golang语言goroutine协程篇
|
1月前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
35 3
Golang语言之Prometheus的日志模块使用案例
|
1月前
|
Go
Golang语言之函数(func)进阶篇
这篇文章是关于Golang语言中函数高级用法的教程,涵盖了初始化函数、匿名函数、闭包函数、高阶函数、defer关键字以及系统函数的使用和案例。
33 3
Golang语言之函数(func)进阶篇