• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go发送钉钉消息

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

好久都没有写博客了,因为最近研究的东西都比较琐碎,自己笔记记录了不少,但是写成文章也总感觉不够。正好上周五发现钉钉机器人的的接口稍作了一个改变,本着没事找事的态度,看了一下,主要就是增加了一个安全验证的机制

  1. 关键字类型,只要消息中包含关键字就可以。
  2. 加签
  3. 指定IP或者IP段
    综合三种方式来看,加签的方式稍微难度高一点,所以就折腾一下加签的方式。
    首先分享一下我写的脚本

该脚本主要是用作Zabbix报警使用,脚本也比较简单,不喜勿喷,本人的只是一个爱折腾的运维小菜鸟

package main

import (
	"bytes"
	"crypto/hmac"
	"crypto/sha256"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
	"time"
)

func hmacSha256(stringToSign string, secret string) string {
	h := hmac.New(sha256.New, []byte(secret))
	h.Write([]byte(stringToSign))
	return base64.StdEncoding.EncodeToString(h.Sum(nil))
}

// Sign 发送钉钉消息
func Sign() string {
	secret := "YOUR SECRET"
	webhook := "YOUR WEBHOOK"
	timestamp := time.Now().UnixNano() / 1e6
	stringToSign := fmt.Sprintf("%d\n%s", timestamp, secret)
	sign := hmacSha256(stringToSign, secret)
	url := fmt.Sprintf("%s&timestamp=%d&sign=%s", webhook, timestamp, sign)
	return url
}

func dingToInfo(s, url string) bool {
	content, data := make(map[string]string), make(map[string]interface{})
	content["content"] = s
	data["msgtype"] = "text"
	data["text"] = content
	b, _ := json.Marshal(data)

	resp, err := http.Post(url,
		"application/json",
		bytes.NewBuffer(b))
	if err != nil {
		fmt.Println(err)
	}
	defer resp.Body.Close()
	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
	return true
}

func main() {
	url := Sign()
	text := os.Args[1]
	dingToInfo(text, url)
}

该脚本替换
secret := "YOUR SECRET" webhook := "YOUR WEBHOOK"
这两处为你SECRET和WEBHOOK即可。

补充说明:
对于第一次使用钉钉机器人的小伙伴可能不知道这两个东西如何获取。

  • 创建一个三个人的钉钉群(创建完成之后就可以把另外两个人踢出,避免你测试的时候的消息打扰别人)
    创建完成钉钉群之后,创建机器人


这里我们选择加签的方式,之后就会生成一个密钥以及Webhook地址。

参考文章:
钉钉官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
SDK: https://github.com/JetBlink/dingtalk-notify-go-sdk
如果觉得麻烦的话,其实直接接SDK更简单以及方便。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
21. Go 协程发布时间:2022-07-10
下一篇:
go 学习 (三):函数 & 指针 & 结构体发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap