第一步我用的是这个包github.com/blinkbean/dingtalk    可以通过下面这一步下载。

go get github.com/blinkbean/dingtalk

第一步,我们需要去创建一个钉钉机器人跟着下面的步骤就可以去一个钉钉群里创建一个机器人了。

差不多就是这六步了,就可以实现创建一个钉钉机器人,然后需要注意的就是第五步中的

自定义关键词 ==>keyWord  、 加密 ==> secret 

然后就是之后的Webhook把它也保存起来,其中的后半段是robotToken.比如https://oapi.dingtalk.com/robot/send?access_token=06828dd7e5e13756b76552b62ac49844ee841fceb508701d26f081d569261767

后半段中的06828dd7e5e13756b76552b62ac49844ee841fceb508701d26f081d569261767就是等会要用的token值。    这个只是我创建机器人时候出现的值,等到你去创建机器人的时候要用你的变量值将这替代了,不要直接用我的机器人的token值。不然没有效果的。

之后就可以来看代码了,然后可以根据上面创建的三个字段,输入到程序中,程序运行的时候就会连接钉钉官方然后给钉钉机器人发布操作命令,也就是实现了自定义机器人发送内容

1. 首先在那个包中有两个初始化的方式,如果在第五步中没有选择加密,那么就是直接用InitDingTalk方法就能初始化对象,

var dingToken = []string{"7aea2bffe6b9a2ce535482940d15ae55355829fd01dfa5c259ee192fce320f45"}

var dingTalkCli = dingtalk.InitDingTalk(dingToken, "")                

2. 然后如果在第五步选择了加密,那么在初始化对象的时候就要用到这个secret字段用InitDingTalkWithSecret方法来初始化对象。

var dingTalkCliWithSecret = dingtalk.InitDingTalkWithSecret("7aea2bffe6b9a2ce535482940d15ae55355829fd01dfa5c259ee192fce320f45", "SEC1ee02f56b4e6e03bbc29495d36f8e4a5d927d965f93857b243b2bd981bd605ab") // 加签

在之后就可以通过通过dingTalkCliWithSecret来调用SendTextMessageSendMarkDownMessageBySliceSendDTMDMessageSendActionCardMessage等方法来让钉钉机器人在钉钉群中发送字段、markdown格式、链接等等方式的内容了,后面会贴上代码。

package main

import (
	"fmt"
	"github.com/blinkbean/dingtalk"
)

var dingToken = []string{"7aea2bffe6b9a2ce535482940d15ae55355829fd01dfa5c259ee192fce320f45"}

var dingTalkCli = dingtalk.InitDingTalk(dingToken, "")                                                                                                                                                 //未加签的时候用dingTalkCli 加签了用下面那个。
var dingTalkCliWithSecret = dingtalk.InitDingTalkWithSecret("7aea2bffe6b9a2ce535482940d15ae55355829fd01dfa5c259ee192fce320f45", "SEC1ee02f56b4e6e03bbc29495d36f8e4a5d927d965f93857b243b2bd981bd605ab") // 加签

var testImg = "https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/0834868071/p768479.png"
var testUrl = "https://golang.google.cn/"
var testPhone = "15837361234"

func main() {
	err := dingTalkCliWithSecret.SendTextMessage("加签测试无关键字", dingtalk.WithAtMobiles([]string{testPhone}))//根据手机号@某个人
	err = dingTalkCliWithSecret.SendTextMessage("所有人测试", dingtalk.WithAtAll())//@所有人
	if err != nil {
		fmt.Println(err)
	}

	//dingTalkCliWithSecret.SendLinkMessage(title, text, picUrl, msgUrl)
	// 按行写入数组,增强markdown的可读性
	msg := []string{
		"### Link test",
		"---",
		"- <font color=#00ff00 size=6>红色文字</font>",
		"- content2",
	}
	dingTalkCliWithSecret.SendMarkDownMessageBySlice("Markdown title", msg, dingtalk.WithAtAll())

	// 字体及颜色
	dm := dingtalk.DingMap()
	dm.Set("颜色测试", dingtalk.H2)
	dm.Set("失败:$$ 同行不同色 $$", dingtalk.RED) // 双$分隔
	dm.Set("---", dingtalk.N)
	dm.Set("金色", dingtalk.GOLD)
	dm.Set("成功", dingtalk.GREEN)
	dm.Set("警告", dingtalk.BLUE)
	dm.Set("普通文字", dingtalk.N)
	dingTalkCliWithSecret.SendMarkDownMessageBySlice("color test", dm.Slice())

	// 创建有序map
	dtmdOrderMap := dingtalk.DingMap().
		Set("dtmdOrderMap1", "dtmdValue1").
		Set("dtmdOrderMap2", "dtmdValue2").
		Set("dtmdOrderMap3", "dtmdValue3")
	err = dingTalkCliWithSecret.SendDTMDMessage("DTMD title", dtmdOrderMap)
	if err != nil {
		fmt.Println(err)
	}
	btns := []dingtalk.ActionCardMultiBtnModel{{
		Title:     "测试1",
		ActionURL: testUrl,
	}, {
		Title:     "测试2",
		ActionURL: testUrl,
	},
	}
	dingTalkCliWithSecret.SendActionCardMessage("title", "跳转页面", dingtalk.WithCardBtns(btns))

	links := []dingtalk.FeedCardLinkModel{
		{
			Title:      "FeedCard1.",
			MessageURL: testUrl,
			PicURL:     testImg,
		},
		{
			Title:      "FeedCard2",
			MessageURL: testUrl,
			PicURL:     testImg,
		},
		{
			Title:      "FeedCard3",
			MessageURL: testUrl,
			PicURL:     testImg,
		},
	}
	dingTalkCliWithSecret.SendFeedCardMessage(links)
}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐