Giter VIP home page Giter VIP logo

catchzeng / dingtalk Goto Github PK

View Code? Open in Web Editor NEW
214.0 3.0 35.0 101 KB

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.

License: MIT License

Makefile 4.38% Go 93.33% Dockerfile 0.47% Shell 1.81%
dingtalk dingding dingtalk-robot dingding-bot dingtalk-sdk dingding-alert dingding-golang jenkins

dingtalk's Introduction

dingtalk

Go codecov Go Report Card Release GoDoc

English

DingTalk(dingding) 是钉钉机器人的 go 实现。支持 Docker、Jenkinsfile、命令行模式,module 模式;支持加签安全设置,支持链式语法创建消息;支持文本、链接、Markdown、ActionCard、FeedCard 消息类型。

注:使用飞书的小伙伴,可以使用飞书(feishu)版

文档

钉钉文档

特性

  • Text 消息

  • Link 消息

  • Markdown 消息

  • ActionCard 消息

  • FeedCard 消息

安装

Docker 安装

docker pull catchzeng/dingtalk

二进制安装

releases 下载相应平台的二进制可执行文件,然后加入到 PATH 环境变量即可。

go install 安装

# Go 1.16+
go install github.com/CatchZeng/[email protected]

# Go version < 1.16
go get -u github.com/CatchZeng/[email protected]

使用方法

配置文件

可以在 $/HOME/.dingtalk 下创建 config.yaml 填入 access_tokensecret 默认值。

access_token: "1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f"
secret: "SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68"

环境变量

$ export ACCESS_TOKEN="1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f"
$ export SECRET="SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68"
$ dingtalk link -i "标题" -e "信息" -u "https://makeoptim.com/" -p "https://makeoptim.com/assets/img/logo.png" -a

你也可以为环境变量设置一个前缀

$ export DINGTALK_ENV_PREFIX="DINGTALK_"
$ export DINGTALK_ACCESS_TOKEN="1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f"
$ export DINGTALK_SECRET="SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68"
$ dingtalk link -i "标题" -e "信息" -u "https://makeoptim.com/" -p "https://makeoptim.com/assets/img/logo.png" -a

Docker

docker run catchzeng/dingtalk dingtalk text -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68 -c "docker test"

Jenkinsfile

pipeline {
    agent {
        docker {
            image 'catchzeng/dingtalk:latest'
        }
    }
    environment {
        DING_TOKEN = '1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f'
        DING_SECRET = 'SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68'
    }
    stages {
        stage('notify') {
            steps {
                sh 'dingtalk link -t ${DING_TOKEN} -s ${DING_SECRET} -i "标题" -e "信息" -u "https://makeoptim.com/" -p "https://makeoptim.com/assets/img/logo.png" -a'
            }
        }
    }
}

作为 module

go get github.com/CatchZeng/dingtalk
package main

import (
    "log"

    "github.com/CatchZeng/dingtalk/pkg/dingtalk"
)

func main() {
	accessToken := "1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f"
    secret := "SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68"
    client := dingtalk.NewClient(accessToken, secret)

    msg := dingtalk.NewTextMessage().SetContent("测试文本&at 某个人").SetAt([]string{"177010xxx60"}, false)
    client.Send(msg)
}

命令行工具

Demo

$ dingtalk text -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68 -c "测试命令行 & at 某个人" -m "177010xxx60","177010xxx61"
$ dingtalk markdown -D -i "杭州天气" -e '## 杭州天气 @150XXXXXXXX
 > 9度,西北风1级,空气良89,相对温度73%
 > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)
 > ###### 10点20分发布 [天气](https://www.dingtalk.com)' -t 1c53e149ba5de6597cxxxxxx0e901fdxxxxxx80b8ac141e4a75afdc44c85ca4f -s SECb90923e19e58b466481e9e7b7a5bxxxxxx4531axxxxxxad3967fb29f0eae5c68

{"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}}

-D 参数:打印发送的消息内容

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:
  -t, --access_token string   access_token
  -m, --atMobiles strings     atMobiles
  -D, --debug                 debug
  -h, --help                  help for dingtalk
  -a, --isAtAll               isAtAll
  -s, --secret string         secret

Use "dingtalk [command] --help" for more information about a command.

Stargazers

Stargazers over time

dingtalk's People

Contributors

catchzeng avatar lindenwang01 avatar mingcheng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dingtalk's Issues

文档需要更新

readme里面,作为module形式的使用方式跟实际用法对不上

求助:window 命令行 at 多人如何调用

dingtalk text -c test -t xxx -m "1xxxx","1xxx"

dingtalk text -c test -t xxx -m "1xxxx" "1xxx"

dingtalk text -c test -t xxx -m ["1xxxx","1xxx"]

dingtalk text -c test -t xxx -m [1xxxx,1xxx]

dingtalk text -c test -t xxx -m "[1xxxx,1xxx]"

以上命令均试过,无法 at 多人,还请说下正确的格式

docker 运行跑错


failed to read config file: Config File "config" Not Found in "[/root/.dingtalk]"
content can not be empty

go get有问题

go get得到的内容与github仓库实际内容不一样
image

markdown 如何换行呢,换不了行诶

我在命令行里这样写:

dingtalk actionCard -t ${ACCESS_TOKEN} -s ${SECRET} -i xxxxx已部署测试 -b 下载
 -c http://172.16.58.16:8001/development/latest.tar.gz -e "# xxxxx已部署 \n\n http:
//baidu.com"

在钉钉里收到的是这样的,并没有换行:

image

测试发现MarkDown类型不能@人

`package main

import (
"fmt"

"github.com/CatchZeng/dingtalk/pkg/dingtalk"

)

func main() {
accessToken := "xxxxxxxxxxx"
secret := "xxxxxxxxxxxxxxxxxxxxx0279c94f59fdbc3650"
client := dingtalk.NewClient(accessToken, secret)

msg := dingtalk.NewMarkdownMessage().SetMarkdown("这是TITLE","测试文本").SetAt([]string{"158XXXXX46"}, false)
_, _, _ = client.Send(msg)

}`

取不到命令执行的返回值,不能知道成功还是失败

我已经事先发送多条推送,已经无法推送了,我想获取返回内容,这样我可以重新加入队列中重新执行。

send message to dingtalk error = send too fast, exceed 20 times per minute

在linux上,我试着获取命令的打印结果,但是获取不到。

result=`dingtalk text -t "1a8d1b0e794546aba9ba38566ca8436bd1eecf79757e72552bde0XXXXX" -c "【通知】test"`

这样也不行

dingtalk text -t "1a8d1b0e794546aba9ba38566ca8436bd1eecf79757e72552bde0XXXXX" -c "【通知】test"
if [ $? -eq 0 ]; then
    echo "successfully"
else
    echo "failed"
fi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.