{"id":13427733,"url":"https://github.com/CatchZeng/dingtalk","last_synced_at":"2025-03-16T00:32:05.789Z","repository":{"id":44847626,"uuid":"242135850","full_name":"CatchZeng/dingtalk","owner":"CatchZeng","description":"DingTalk(dingding) 是钉钉机器人的 go 实现。支持 Docker、Jenkinsfile、命令行模式，module 模式，加签安全设置，支持链式语法创建消息，支持文本、链接、Markdown、ActionCard、FeedCard消息类型; DingTalk (dingding) is the go implementation of the DingTalk robot. Support Docker, Jenkinsfile, command line mode, module mode, signature security settings, chain syntax to create messages, support text, link, markdown,ActionCard,FeedCard message types.","archived":false,"fork":false,"pushed_at":"2023-05-10T09:29:10.000Z","size":101,"stargazers_count":222,"open_issues_count":6,"forks_count":36,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-21T18:07:30.767Z","etag":null,"topics":["dingding","dingding-alert","dingding-bot","dingding-golang","dingtalk","dingtalk-robot","dingtalk-sdk","jenkins"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CatchZeng.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-21T12:37:12.000Z","updated_at":"2024-11-13T14:42:47.000Z","dependencies_parsed_at":"2024-06-18T15:25:36.281Z","dependency_job_id":null,"html_url":"https://github.com/CatchZeng/dingtalk","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CatchZeng%2Fdingtalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CatchZeng%2Fdingtalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CatchZeng%2Fdingtalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CatchZeng%2Fdingtalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CatchZeng","download_url":"https://codeload.github.com/CatchZeng/dingtalk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243809865,"owners_count":20351403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dingding","dingding-alert","dingding-bot","dingding-golang","dingtalk","dingtalk-robot","dingtalk-sdk","jenkins"],"created_at":"2024-07-31T01:00:39.496Z","updated_at":"2025-03-16T00:32:05.439Z","avatar_url":"https://github.com/CatchZeng.png","language":"Go","funding_links":[],"categories":["Go","开发库和SDK"],"sub_categories":["Golang"],"readme":"# dingtalk\n\n![Go](https://github.com/CatchZeng/dingtalk/workflows/Go/badge.svg)\n[![codecov](https://codecov.io/gh/CatchZeng/dingtalk/branch/master/graph/badge.svg)](https://codecov.io/gh/CatchZeng/dingtalk)\n[![Go Report Card](https://goreportcard.com/badge/github.com/CatchZeng/dingtalk)](https://goreportcard.com/report/github.com/CatchZeng/dingtalk)\n[![Release](https://img.shields.io/github/release/CatchZeng/dingtalk.svg)](https://github.com/CatchZeng/dingtalk/releases)\n[![GoDoc](https://godoc.org/github.com/CatchZeng/dingtalk?status.svg)](https://pkg.go.dev/github.com/CatchZeng/dingtalk?tab=doc)\n\n[English](https://github.com/CatchZeng/dingtalk/blob/master/READMEEN.md)\n\n\u003e DingTalk(dingding) 是钉钉机器人的 go 实现。支持 **Docker、Jenkinsfile、命令行模式，module 模式**；支持**加签**安全设置，支持**链式语法**创建消息；支持**文本、链接、Markdown、ActionCard、FeedCard** 消息类型。\n\n\u003e 注：使用飞书的小伙伴，可以使用[飞书（feishu）版](https://github.com/CatchZeng/feishu)。\n\n## 文档\n\n[钉钉文档](https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq)\n\n## 特性\n\n- [x] 支持[Docker](https://github.com/CatchZeng/dingtalk#Docker)\n\n- [x] 支持[Jenkinsfile](https://github.com/CatchZeng/dingtalk#Jenkinsfile)\n\n- [x] 支持[module](https://github.com/CatchZeng/dingtalk#%E4%BD%9C%E4%B8%BA-module)\n\n- [x] 支持[命令行模式](https://github.com/CatchZeng/dingtalk#%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7)\n\n- [x] 支持[配置文件](https://github.com/CatchZeng/dingtalk#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)\n\n- [x] 支持[环境变量](https://github.com/CatchZeng/dingtalk#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F)\n\n- [x] 支持加签\n\n\u003cimg src=\"https://dingtalkdoc.oss-cn-beijing.aliyuncs.com/images/0.0.210/1572261283991-f8e35f4d-6997-4a02-9704-843ee8f97464.png\" width = 50% /\u003e\n\n- [x] Text 消息\n\n\u003cimg src=\"https://img.alicdn.com/tfs/TB1jFpqaRxRMKJjy0FdXXaifFXa-497-133.png\" width = 50% /\u003e\n\n- [x] Link 消息\n\n\u003cimg src=\"https://dingtalkdoc.oss-cn-beijing.aliyuncs.com/images/0.0.210/1570679827267-6243216b-d1c3-48b7-9b1e-0f0b4211b50b.png\" width = 50% /\u003e\n\n- [x] Markdown 消息\n\n\u003cimg src=\"https://img.alicdn.com/tfs/TB1yL3taUgQMeJjy0FeXXXOEVXa-492-380.png\" width = 50% /\u003e\n\n- [x] ActionCard 消息\n\n    \u003cimg src=\"https://img.alicdn.com/tfs/TB1nhWCiBfH8KJjy1XbXXbLdXXa-547-379.png\" width = 50% /\u003e\n\n    \u003cimg src=\"https://dingtalkdoc.oss-cn-beijing.aliyuncs.com/images/0.0.210/1570679939723-c1fb7861-5bcb-4c30-9e1b-033932f6b72f.png\" width = 50% /\u003e\n\n- [x] FeedCard 消息\n\n\u003cimg src=\"http://img01.taobaocdn.com/top/i1/LB1R2evQVXXXXXDapXXXXXXXXXX\" width = 50% /\u003e\n\n## 安装\n\n## Docker 安装\n\n```shell\ndocker pull catchzeng/dingtalk\n```\n\n### 二进制安装\n\n到 [releases](https://github.com/CatchZeng/dingtalk/releases/) 下载相应平台的二进制可执行文件，然后加入到 PATH 环境变量即可。\n\n### go install 安装\n\n```sh\n# Go 1.16+\ngo install github.com/CatchZeng/dingtalk@v1.5.0\n\n# Go version \u003c 1.16\ngo get -u github.com/CatchZeng/dingtalk@v1.5.0\n```\n\n## 使用方法\n\n### 配置文件\n\n可以在 `$/HOME/.dingtalk` 下创建 `config.yaml` 填入 `access_token` 和 `secret` 默认值。\n\n```yaml\naccess_token: \"1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f\"\nsecret: \"SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68\"\n```\n\n### 环境变量\n\n```sh\n$ export ACCESS_TOKEN=\"1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f\"\n$ export SECRET=\"SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68\"\n$ dingtalk link -i \"标题\" -e \"信息\" -u \"https://makeoptim.com/\" -p \"https://makeoptim.com/assets/img/logo.png\" -a\n```\n\n你也可以为环境变量设置一个**前缀**\n\n```sh\n$ export DINGTALK_ENV_PREFIX=\"DINGTALK_\"\n$ export DINGTALK_ACCESS_TOKEN=\"1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f\"\n$ export DINGTALK_SECRET=\"SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68\"\n$ dingtalk link -i \"标题\" -e \"信息\" -u \"https://makeoptim.com/\" -p \"https://makeoptim.com/assets/img/logo.png\" -a\n```\n\n### Docker\n\n```shell\ndocker run catchzeng/dingtalk dingtalk text -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68 -c \"docker test\"\n```\n\n### Jenkinsfile\n\n```shell\npipeline {\n    agent {\n        docker {\n            image 'catchzeng/dingtalk:latest'\n        }\n    }\n    environment {\n        DING_TOKEN = '1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f'\n        DING_SECRET = 'SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68'\n    }\n    stages {\n        stage('notify') {\n            steps {\n                sh 'dingtalk link -t ${DING_TOKEN} -s ${DING_SECRET} -i \"标题\" -e \"信息\" -u \"https://makeoptim.com/\" -p \"https://makeoptim.com/assets/img/logo.png\" -a'\n            }\n        }\n    }\n}\n```\n\n### 作为 module\n\n```sh\ngo get github.com/CatchZeng/dingtalk\n```\n\n```go\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com/CatchZeng/dingtalk/pkg/dingtalk\"\n)\n\nfunc main() {\n\taccessToken := \"1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f\"\n    secret := \"SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68\"\n    client := dingtalk.NewClient(accessToken, secret)\n\n    msg := dingtalk.NewTextMessage().SetContent(\"测试文本\u0026at 某个人\").SetAt([]string{\"177010xxx60\"}, false)\n    client.Send(msg)\n}\n```\n\n### 命令行工具\n\n#### Demo\n\n```shell\n$ dingtalk text -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68 -c \"测试命令行 \u0026 at 某个人\" -m \"177010xxx60\",\"177010xxx61\"\n```\n\n```shell\n$ dingtalk markdown -D -i \"杭州天气\" -e '## 杭州天气 @150XXXXXXXX\n \u003e 9度，西北风1级，空气良89，相对温度73%\n \u003e ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n \u003e ###### 10点20分发布 [天气](https://www.dingtalk.com)' -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68\n\n{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"杭州天气\",\"text\":\"## 杭州天气 @150XXXXXXXX\\n \\u003e 9度，西北风1级，空气良89，相对温度73%\\n \\u003e ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\\n \\u003e ###### 10点20分发布 [天气](https://www.dingtalk.com)\"},\"at\":{\"atMobiles\":[],\"isAtAll\":false}}\n```\n\n\u003e -D 参数：打印发送的消息内容\n\n#### Help\n\n```shell\n$ dingtalk -h\ndingtalk is a command line tool for DingTalk\n\nUsage:\n  dingtalk [command]\n\nAvailable Commands:\n  actionCard  send actionCard message with DingTalk robot\n  feedCard    send feedCard message with DingTalk robot\n  help        Help about any command\n  link        send link message with DingTalk robot\n  markdown    send markdown message with DingTalk robot\n  text        send text message with DingTalk robot\n  version     dingtalk version\n\nFlags:\n  -t, --access_token string   access_token\n  -m, --atMobiles strings     atMobiles\n  -D, --debug                 debug\n  -h, --help                  help for dingtalk\n  -a, --isAtAll               isAtAll\n  -s, --secret string         secret\n\nUse \"dingtalk [command] --help\" for more information about a command.\n```\n\n## Stargazers\n\n[![Stargazers over time](https://starchart.cc/CatchZeng/dingtalk.svg)](https://starchart.cc/CatchZeng/dingtalk)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCatchZeng%2Fdingtalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCatchZeng%2Fdingtalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCatchZeng%2Fdingtalk/lists"}