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