如何实现钉钉群自定义机器人消息发送(curl篇)

简介

我们在使用钉钉的时候,有时候会需要向员工发送很多日常打卡消息或者业务预警,这个时候,我们就可以利用钉钉的群机器人功能,可以大幅提高效率。

先注册一个机器人到群里

1.打开钉钉电脑版

2.选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手

群设置界面

3.在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像。

添加机器人

4.完成必要的安全设置(点击查看更多安全设置),至少一项,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成

这里的自定义关键词指每条您要发送的消息里必须包含的词语,加签指只有含有通过密钥获得的签名的消息才会被发送,IP地址(段)指只有指定的IP才可以发送消息,如果三个安全选项全都打开那就是层层防护

5.完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:

https://oapi.dingtalk.com/robot/send?access_token=XXXXXX


注意

请保管好此Webhook 地址,不要公布在外部网站上,泄露后有安全风险。

请保管好此Webhook 地址,不要公布在外部网站上,泄露后有安全风险。

请保管好此Webhook 地址,不要公布在外部网站上,泄露后有安全风险。



实现方法: 使用curl命令

1.发送简单文字消息 text类型

在任意Linux或macOS或支持curl的设备上运行这个命令

curl '这里替换成你刚刚得到的Webhook地址' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text","text": {"content":"这里替换成你要发送的消息"}}'

发送完成后,正常情况下会返回200代码和ok字样

更多text类型消息的参数请参见这种图片

更多参数

2.发送一个链接 link类型

还是一样在支持curl的设备上运行这个命令

curl '这里替换成你刚刚得到的Webhook地址' \ -H 'Content-Type: application/json' \ -d {     "msgtype": "link",     "link": {         "text": "这里可以写一段对于链接的简介", "title": "链接标题,可自定义",         "picUrl": "如果有链接截图或图标请在这里填写图片地址",         "messageUrl": "链接地址写在这里"     } }

参数要求请参见下图

参数要求

3.发送一条图文消息 markdown类型

示例命令如下:

curl '这里替换成你刚刚得到的Webhook地址' \ -H 'Content-Type: application/json' \ -d {     "msgtype": "markdown",     "markdown": {         "title":"杭州天气",         "text": "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n"     },       "at": {           "atMobiles": [               "150XXXXXXXX"           ],           "atUserIds": [               "user123"           ],           "isAtAll": false       } }

效果就是这样的

效果图

目前只支持markdown语法的子集,具体支持的元素如下:

标题

# 一级标题

## 二级标题

### 三级标题

#### 四级标题

##### 五级标题

###### 六级标题

引用

> A man who stands for nothing will fall for anything.

文字加粗、斜体

**bold**

*italic*

链接    [this is a link](http://name.com)

图片    ![](http://name.com/pic.jpg)

无序列表

- item1

- item2

有序列表

1. item1

2. item2

还有参数要求在这儿

参数要求

4.卡片 整体跳转ActionCard类型

示例命令如下:

curl '这里替换成你刚刚得到的Webhook地址' \ -H 'Content-Type: application/json' \ -d {     "actionCard": {         "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身",         "text": "![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png) ### 乔布斯 20 年前想打造的苹果咖啡厅 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划",         "btnOrientation": "0",         "singleTitle" : "阅读全文",         "singleURL" : "https://www.dingtalk.com/"     },     "msgtype": "actionCard" }

效果如下:

效果图

参数要求请参见下图:

参数要求

5.卡片 独立跳转ActionCard类型

示例代码如下:

curl '这里替换成你刚刚得到的Webhook地址' \ -H 'Content-Type: application/json' \ -d {     "msgtype": "actionCard",     "actionCard": {         "title": "我 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身",         "text": "![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png) \n\n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划",         "btnOrientation": "0",         "btns": [             {                 "title": "内容不错",                 "actionURL": "https://www.dingtalk.com/"             },             {                 "title": "不感兴趣",                 "actionURL": "https://www.dingtalk.com/"             }         ]     } }

使用这种类型可以做到以下效果,效果图:

几张效果图

参数要求如下:

参数要求

6.类似文章推送 FeedCard类型

示例代码如下:

curl '这里替换成你刚刚得到的Webhook地址' \ -H 'Content-Type: application/json' \ -d {     "msgtype":"feedCard",     "feedCard": {         "links": [             {                 "title": "时代的火车向前开1",                 "messageURL": "https://www.dingtalk.com/",                 "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"             },             {                 "title": "时代的火车向前开2",                 "messageURL": "https://www.dingtalk.com/",                 "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"             }         ]     } }

使用这种类型可以做到以下效果,见下图:

效果图

参数要求:

参数要求



就这么几种类型了,大家可以自行挖掘,最后附上常见错误代码:

// 消息内容中不包含任何关键词 {   "errcode":310000,   "errmsg":"keywords not in content" }

// timestamp 无效 {   "errcode":310000,   "errmsg":"invalid timestamp" }

// 签名不匹配 {   "errcode":310000,   "errmsg":"sign not match" }

// IP地址不在白名单 {   "errcode":310000,   "errmsg":"ip X.X.X.X not in whitelist" }



参考资料:

1.钉钉自定义机器人开放文档:

https://open.dingtalk.com/document/group/custom-robot-access

2.钉钉机器人安全设置开放文档:

https://open.dingtalk.com/document/robots/customize-robot-security-settings

3.钉钉机器人消息链接说明:

https://open.dingtalk.com/document/orgapp-server/message-link-description

你可能感兴趣的:(如何实现钉钉群自定义机器人消息发送(curl篇))