0%

钉钉群机器人开发

钉钉群机器人定义

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

例如:

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

机器人发送消息频率限制

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

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

添加群机器人

参考官网:https://ding-doc.dingtalk.com/doc#/serverapi3/iydd5h

下载SDK简化开发

下载链接:https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02

将SDK安装到本地maven仓库

mvn install:install-file -Dfile=D:/taobao-sdk-java-auto-20191203.jar -DgroupId=com.taobao -DartifactId=taobao-sdk-java-auto-20191203 -Dversion=1.0.0 -Dpackaging=jar

项目中引用

<dependency>
    <groupId>com.taobao</groupId>
    <artifactId>taobao-sdk-java-auto-20191203</artifactId>
    <version>1.0.0</version>
</dependency>

开发样例

DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=566cc69da782ec33e42541b09b08551f09fbe864eb8008112e994b43887");
OapiRobotSendRequest request = new OapiRobotSendRequest();
//文本类型
request.setMsgtype("text");
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent("测试文本消息");
request.setText(text);
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
at.setAtMobiles(Arrays.asList("132xxxxxxxx"));
request.setAt(at);
 
//link类型
request.setMsgtype("link");
OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();
link.setMessageUrl("https://www.dingtalk.com/");
link.setPicUrl("");
link.setTitle("时代的火车向前开");
link.setText("这个即将发布的新版本,创始人xx称它为“红树林”。\n" +
        "而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是“红树林");
request.setLink(link);
 
//markdown类型
request.setMsgtype("markdown");
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
markdown.setTitle("杭州天气");
markdown.setText("#### 杭州天气 @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");
request.setMarkdown(markdown);
OapiRobotSendResponse response = client.execute(request);

常用的三种类型如上所示,具体参考官网类型

应答机制

自定义机器人尚不支持应答机制 (该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人)。

错误码

开发者每次调用接口时,可能获得正确或错误的返回码,企业可以根据返回码信息调试接口,排查错误。

注意:开发者的程序应该根据errcode来判断出错的情况,而不应该依赖errmsg来匹配,因为errmsg可能会调整。

参考官网:错误码