前言
最近在优化持续集成,之前使用 Python 写过钉钉机器人,不过随着项目往 golang 发展,于是想去掉 Python 的依赖。另外,想着如果后台服务有些重要的事项,可以通知到钉钉,也想着做个 go module 供项目使用。本来想直接 github 上找一个,结果搜索了老半天没看到一个符合的,于是,手撸了一个。
DingTalk
https://github.com/CatchZeng/dingtalk
Docker命令行module加签链式语法文本、链接、Markdown、ActionCard、FeedCard
特性
-
支持Docker
-
支持module
-
支持命令行模式
-
支持加签
sign -
Text 消息
text -
Link 消息
link -
Markdown 消息
markdown -
ActionCard 消息
ActionCard1ActionCard2 -
FeedCard 消息
ActionCard1
安装
Docker 安装
docker pull catchzeng/dingtalk
二进制安装
到 releases 下载相应平台的二进制可执行文件,然后加入到 PATH 环境变量即可。
go get 安装
go get github.com/CatchZeng/dingtalk
使用方法
Docker
docker run catchzeng/dingtalk dingtalk text -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68 -c "docker test"
作为 module
package main
import (
"log"
"github.com/CatchZeng/dingtalk/client"
"github.com/CatchZeng/dingtalk/message"
)
func main() {
dingTalk := client.DingTalk{
AccessToken: "1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f",
Secret: "SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68",
}
msg := message.NewTextMessage().SetContent("测试文本&at 某个人").SetAt([]string{"177010xxx60"}, false)
dingTalk.Send(msg)
}
命令行工具
Demo
dingtalk text -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68 -c "测试命令行 & at 某个人" -m "177010xxx60","177010xxx61"
Help
$ dingtalk -h
dingtalk is a command line tool for DingTalk
Usage:
dingtalk [command]
Available Commands:
actionCard send actionCard message with DingTalk robot
feedCard send feedCard message with DingTalk robot
help Help about any command
link send link message with DingTalk robot
markdown send markdown message with DingTalk robot
text send text message with DingTalk robot
version dingtalk version
Flags:
-m, --atMobiles strings atMobiles
-h, --help help for dingtalk
-a, --isAtAll isAtAll
-s, --secret string secret
-t, --token string access_token
Use "dingtalk [command] --help" for more information about a command.
$ dingtalk text -h
send text message with DingTalk robot
Usage:
dingtalk text [flags]
Flags:
-c, --content string content
-h, --help help for text
Global Flags:
-m, --atMobiles strings atMobiles
-a, --isAtAll isAtAll
-s, --secret string secret
-t, --token string access_token
$ dingtalk link -h
send link message with DingTalk robot
Usage:
dingtalk link [flags]
Flags:
-h, --help help for link
-u, --messageURL string messageURL
-p, --picURL string picURL
-e, --text string text
-i, --title string title
Global Flags:
-m, --atMobiles strings atMobiles
-a, --isAtAll isAtAll
-s, --secret string secret
-t, --token string access_token
$ dingtalk markdown -h
send markdown message with DingTalk robot
Usage:
dingtalk markdown [flags]
Flags:
-h, --help help for markdown
-e, --text string text
-i, --title string title
Global Flags:
-m, --atMobiles strings atMobiles
-a, --isAtAll isAtAll
-s, --secret string secret
-t, --token string access_token
$ dingtalk actionCard -h
send actionCard message with DingTalk robot
Usage:
dingtalk actionCard [flags]
Flags:
-c, --btnActionURLs strings btnActionURLs
-o, --btnOrientation string btnOrientation
-b, --btnTitles strings btnTitles
-h, --help help for actionCard
-d, --hideAvatar string hideAvatar
-n, --singleTitle string singleTitle
-u, --singleURL string singleURL
-e, --text string text
-i, --title string title
Global Flags:
-m, --atMobiles strings atMobiles
-a, --isAtAll isAtAll
-s, --secret string secret
-t, --token string access_token
dingtalk feedCard -h
send feedCard message with DingTalk robot
Usage:
dingtalk feedCard [flags]
Flags:
-h, --help help for feedCard
-u, --messageURLs strings messageURLs
-p, --picURLs strings picURLs
-i, --titles strings titles
Global Flags:
-m, --atMobiles strings atMobiles
-a, --isAtAll isAtAll
-s, --secret string secret
-t, --token string access_token