点击展开更新日志
源起
想要找一种免费的消息推送方式,最开始是打算使用 server酱 的,但是不氪金每天只有5条的限制,后来想起之前用过的 pushplus,可是不知道何时开始需要实名认证了,蒜鸟蒜鸟。
想到了短信转发器用的钉钉,而且官方也提供了比较完善的文档,所以用了下还不错,也支持 markdown 格式,个人做消息推送足够了。
钉钉群机器人
参考文档:自定义机器人发送群聊消息-钉钉开放平台
机器人配置
参考上面官方平台文档创建群聊,添加一个自定义机器人,【安全设置】选择加签,获取 webhook 地址,后续需要。
每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。
因此建议发送前进行汇总后发送。
API
参考文档:自定义机器人发送消息的类型-钉钉开放平台
自定义群机器人支持的消息类型如下:
消息类型 |
是否支持@人 |
Text文本类型 |
支持 |
Link链接消息 |
不支持 |
Markdown类型 |
支持 |
整体跳转ActionCard类 |
支持 |
独立跳转ActionCard类 |
支持 |
FeedCard类型 |
不支持 |
请求方式和路径
1
| POST https://oapi.dingtalk.com/robot/send?access_token=6b1****b2c5a2a0
|
文本类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "at": { "atMobiles":[ "180xxxxxx" ], "atUserIds":[ "user123" ], "isAtAll": false }, "text": { "content":"我就是我, @user123 是不一样的烟火" }, "msgtype":"text" }
|
参数 |
参数类型 |
是否必填 |
说明 |
msgtype |
String |
是 |
消息类型,此时固定为:text |
content |
String |
是 |
消息内容 |
atMobiles |
Array of String |
否 |
被@人的手机号:会添加到content里,只能@群内成员,非群内成员会脱敏 |
atUserIds |
Array of String |
否 |
被@人的用户userId:会添加到content里 |
isAtAll |
Boolean |
否 |
是否@所有人 |
链接类型
1 2 3 4 5 6 7 8 9
| { "msgtype": "link", "link": { "text": "这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林", "title": "时代的火车向前开", "picUrl": "", "messageUrl": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI" } }
|
参数 |
参数类型 |
是否必填 |
说明 |
msgtype |
String |
是 |
消息类型,此时固定为:link |
title |
String |
是 |
消息标题 |
text |
String |
是 |
消息内容。如果太长只会部分展示。 |
messageUrl |
String |
是 |
点击消息跳转的URL,打开方式如下: - 移动端:钉钉客户端内打开 - PC端:默认侧边栏打开,如果希望浏览器打开,在url添加参数 pc_slide=false |
picUrl |
String |
否 |
图片URL |
Markdown类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { "msgtype": "markdown", "markdown": { "title":"杭州天气", "text": "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > \n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n" }, "at": { "atMobiles": [ "150XXXXXXXX" ], "atUserIds": [ "user123" ], "isAtAll": false } }
|
参数 |
类型 |
是否必填 |
说明 |
msgtype |
String |
是 |
消息类型,此时固定为:markdown |
title |
String |
是 |
首屏会话透出的展示内容 |
text |
String |
是 |
markdown格式的消息。 |
atMobiles |
Array |
否 |
被@人的手机号,同上。 |
atUserIds |
Array |
否 |
被@人的userId。 |
isAtAll |
Boolean |
否 |
是否@所有人。 |
目前只支持 markdown 语法的自己,具体支持元素如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| 标题
引用 > A man who stands for nothing will fall for anything.
文字加粗、斜体 **bold** *italic*
链接 [this is a link](http://name.com)
图片(建议不要超过20张) 
无序列表 - item1 - item2
有序列表 1. item1 2. item2
|
整体跳转ActionCard类型
1 2 3 4 5 6 7 8 9 10 11 12
| { "actionCard": { "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", "text": " ### 乔布斯 20 年前想打造的苹果咖啡厅 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", "btnOrientation": "0", "singleTitle" : "阅读全文", "singleURL" : "https://www.dingtalk.com/" }, "msgtype": "actionCard" }
|
参数 |
类型 |
是否必填 |
说明 |
msgtype |
String |
是 |
消息类型,此时固定为:actionCard |
title |
String |
是 |
首屏会话透出的展示内容。 |
text |
String |
是 |
markdown格式的消息。如果要实现@功能,在 text 内容中添加@用户的 userId,如 @manager7675 |
singleTitle |
String |
是 |
单个按钮的标题。 |
singleURL |
String |
是 |
点击消息跳转的URL,打开方式同链接。 |
btnOrientation |
String |
否 |
按钮排列方式: - 0:按钮竖直排列 - 1:按钮横向排列 |
独立跳转ActionCard类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| { "msgtype": "actionCard", "actionCard": { "title": "我 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", "text": " \n\n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", "btnOrientation": "0", "btns": [ { "title": "内容不错", "actionURL": "https://www.dingtalk.com/" }, { "title": "不感兴趣", "actionURL": "https://www.dingtalk.com/" } ] } }
|
参数 |
类型 |
是否必填 |
说明 |
msgtype |
|
|
|
title |
|
|
|
text |
|
|
|
btns |
Array |
是 |
按钮 |
title |
String |
是 |
按钮标题 |
actionURL |
|
|
|
btnOrientation |
String |
否 |
|
FeedCard类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| { "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" } ] } }
|
参数 |
类型 |
是否必填 |
说明 |
msgtype |
|
|
|
title |
|
|
|
messageURL |
|
|
|
picURL |
|
|
|