1 钉钉群机器人定义

群机器人是钉钉群的高等扩展功能。
群机器人可以将第三方做事的信息聚合到群聊中,实现自动化的信息同步。
目前,大部分机器人在添加后,还须要进行Webhook配置,才可正常利用(配置解释详见操作流程中的帮助链接)。

例如:

钉钉免登php应用钉钉自界说机械人推送新闻PHP版 Vue.js

通过聚合GitHub,GitLab等源码管理做事,实现源码更新同步。
通过聚合Trello,JIRA等项目折衷做事,实现项目信息同步。
群机器人支持Webhook协议的自定义接入。
例如:你可将运维报警通过自定义机器人聚合到钉钉群实现提醒功能。

这里我们采取末了一种来实现

2 机器人发送频率限定

发送太频繁会严重影响群成员的利用体验,大量发的场景(譬如系统监控报警)可以将这些信息进行整合,通过markdown以择要的形式发送到群里。

每个机器人每分钟最多发送20条。
如果超过20条,会限流10分钟。

3 PC客户端配置入口

登录钉钉PC客户端(请升级至最新版),操作入口:

窗口右上角点击【头像】,进入”机器人管理“, 可对所有机器人进行统一管理。

进入一个钉钉群,在群的顶部功能栏中,点击【群设置】,进入菜单可以看到【群机器人】的入口,点击进入“群机器人”的管理面板后,可以进行添加、编辑和删除群机器人的操作。

我们这里利用末了一个webhook

4 获取自定义机器人webhook

步骤一,在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送的群。
如果须要的话,可以为机器人设置一个头像。
点击“完成添加”,完成后会天生Hook地址,如下图:

步骤二,点击“复制”按钮,即可得到这个机器人对应的Webhook地址,其格式如下:

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

5 利用自定义机器人

获取到Webhook地址后,用户可以向这个地址发起HTTP POST 要求,即可实现给该钉钉群发送。
把稳,发起POST要求时,必须将字符集编码设置成UTF-8。
当前自定义机器人支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard、FeedCard类型,大家可以根据自己的利用场景选择得当的类型,达到最好的展示样式。
自定义机器人发送时,可以通过手机号码指定“被@人列表”。
在“被@人列表”里面的职员收到该时,会有@提醒(免打扰会话仍旧关照提醒,首屏涌现“有人@你”)。
当前机器人尚不支持应答机制 (该机制指的是群里成员在谈天@机器人的时候,钉钉回调指定的做事地址,即Outgoing机器人)。

6 php 实当代码

​<?php/ php 利用钉钉机器人发送. User: Administrator Date: 2019/8/29 Time: 23:40 /​function request_by_curl($remote_server, $post_string){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $remote_server); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8')); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 不用开启curl证书验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); //$info = curl_getinfo($ch); //var_dump($info); curl_close($ch); return $data;}​$webhook = \"大众https://oapi.dingtalk.com/robot/send?access_token=xxxxxx\"大众;​// text类型$textString = json_encode([ 'msgtype' => 'text', 'text' => [ \"大众content\公众 => \"大众我便是我, 是不一样的烟火@156xxxx8827\公众 ], 'at' => [ 'atMobiles' => [ \"大众156xxxx8827\"大众, \"大众189xxxx8325\"大众 ], 'isAtAll' => false​ ]]);​// link类型$textString = json_encode([ \"大众msgtype\公众 => \"大众link\"大众, \"大众link\公众 => [ \"大众text\公众 => \"大众这个即将发布的新版本,创始人陈航(花名“无招”)称它为“红树林”。
而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是“红树林”?\公众, \公众title\公众 => \"大众时期的火车向前开\"大众, \"大众picUrl\"大众 => \"大众\"大众, \公众messageUrl\"大众 => \"大众https://www.dingtalk.com/\"大众, ]]);​// markdown类型$textString = json_encode([ \公众msgtype\"大众 => \"大众markdown\"大众, \"大众markdown\"大众 => [ \"大众title\公众 => \"大众杭州景象\公众, \"大众text\公众 => \公众#### 杭州景象 @156xxxx8827\n\"大众 . \公众> 9度,西北风1级,空气良89,相对温度73%\n\n\"大众 . \公众> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n\公众 . \"大众> ###### 10点20分发布 [景象](http://www.thinkpage.cn/) \n\"大众 ], \"大众at\公众 => [ \"大众atMobiles\公众 => [ \"大众156xxxx8827\"大众, \"大众189xxxx8325\"大众 ], \公众isAtAll\"大众 => false ]]);​// 整体跳转ActionCard类型$textString = json_encode([ \"大众actionCard\公众 => [ \"大众title\"大众 => \公众乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身\"大众, \公众text\公众 => \公众![screenshot](@lADOpwk3K80C0M0FoA) ### 乔布斯 20 年前想打造的苹果咖啡厅 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向实在可以追溯到 20 年前苹果一个建立咖啡馆的操持\"大众, \"大众hideAvatar\"大众 => \"大众0\公众, \公众btnOrientation\公众 => \公众0\"大众, \"大众singleTitle\"大众 => \"大众阅读全文\公众, \"大众singleURL\"大众 => \公众https://www.dingtalk.com/\"大众 ], \"大众msgtype\"大众 => \公众actionCard\"大众]);​​// 独立跳转ActionCard类型$textString = json_encode([ \"大众actionCard\"大众 => [ \"大众title\公众 => \"大众乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身\公众, \"大众text\公众 => \"大众![screenshot](@lADOpwk3K80C0M0FoA) ### 乔布斯 20 年前想打造的苹果咖啡厅 Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向实在可以追溯到 20 年前苹果一个建立咖啡馆的操持\"大众, \"大众hideAvatar\"大众 => \公众0\"大众, \"大众btnOrientation\公众 => \"大众0\"大众, \"大众btns\"大众 => [ [ \"大众title\公众 => \公众内容不错\"大众, \"大众actionURL\"大众 => \"大众https://www.dingtalk.com/\"大众 ], [ \"大众title\"大众 => \"大众不感兴趣\"大众, \"大众actionURL\"大众 => \公众https://www.dingtalk.com/\"大众 ] ] ], \"大众msgtype\"大众 => \"大众actionCard\"大众]);​// FeedCard类型$textString = json_encode([ \公众feedCard\公众 => [ \"大众links\"大众 => [ [ \公众title\公众 => \公众时期的火车向前开1\公众, \"大众messageURL\"大众 => \"大众https://www.dingtalk.com/\公众, \"大众picURL\"大众 => \"大众https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1567105217584&di=4c91fefc045f54267edcf8c544e3bd3b&imgtype=0&src=http%3A%2F%2Fk.zol-img.com.cn%2Fdcbbs%2F16420%2Fa16419096_s.jpg\"大众 ], [ \公众title\"大众 => \公众时期的火车向前开2\"大众, \公众messageURL\"大众 => \公众https://www.dingtalk.com/\公众, \"大众picURL\"大众 => \"大众\"大众 ] ] ], \公众msgtype\公众 => \"大众feedCard\"大众]);​​$result = request_by_curl($webhook, $textString);echo $result;​> 终极效果​

字段格式和含义请参考官方:

https://ding-doc.dingtalk.com/doc#/serverapi3/iydd5h