版权声明:转载记得宣传奥~。~ https://blog.csdn.net/c_ym_ww/article/details/85251874
获取自定义机器人webhook
- 钉钉机器人文档网址
- 钉钉里面新建群,在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。如果需要的话,可以为机器人设置一个头像。点击“完成添加”
- 获取webhook,这个webhook是钉钉来识别消息要发送到哪个群的标识
消息类型及数据格式
本着要写成工具类的方法,所以把需要用到类型都写成实体类
-
文本类型
TextRebootModel类 @Data public class TextRebootModel { /** * 此消息类型为固定text */ public String msgtype = "text"; public ContentModel text; public AtMobiles at; } ContentModel类 @Data public class ContentModel { /** * 消息内容 */ private String content; } AtMobiles类 @Data public class AtMobiles { /** * 被@人的手机号 * @return */ private List<String> atMobiles; /** * @所有人时:true,否则为:false */ private Boolean isAtAll; }
-
MarkDown类型
MarkDownRebootModel类 @Data public class MarkDownRebootModel { /** * 此消息类型为固定markdown */ public String msgtype = "markdown"; public MarkDownModel markdown; public AtMobiles at; } MarkDownModel类 @Data public class MarkDownModel { /** * 首屏会话透出的展示内容 */ private String title; /** * markdown格式的消息 */ private String text; }
钉钉机器人封装工具类方法
public class RebootUtil {
/**
* 组装 发送的信息
*
* @param isAt 是否需要 @所有人
* @param msgContent 要发送信息的主体
* @param telList 要 @人的电话号码,如果@单独的几个人,就传一个空list,而不是 null
* @return
*/
public static String setMessage(boolean isAt, String msgContent, List<String> telList) {
TextRebootModel model = new TextRebootModel();
AtMobiles atMobiles = new AtMobiles();
atMobiles.setIsAtAll(isAt);
atMobiles.setAtMobiles(telList);
ContentModel contentModel = new ContentModel();
contentModel.setContent(msgContent);
model.setAt(atMobiles);
model.setText(contentModel);
String toMsg = JSON.toJSONString(model);
return toMsg;
}
/**
* 组装 发送的信息
*
* @param isAt 是否需要 @所有人
* @param title 标题
* @param msgContent 要发送信息的主体
* @param telList 要 @人的电话号码,如果@单独的几个人,就传一个空list,而不是 null
* @return
*/
public static String setMarkDown(boolean isAt, String title, String msgContent, List<String> telList) {
MarkDownRebootModel model = new MarkDownRebootModel();
AtMobiles atMobiles = new AtMobiles();
atMobiles.setIsAtAll(isAt);
atMobiles.setAtMobiles(telList);
MarkDownModel markDownModel = new MarkDownModel();
markDownModel.setTitle(title);
markDownModel.setText(msgContent);
model.setAt(atMobiles);
model.setMarkdown(markDownModel);
String Message = JSON.toJSONString(model);
return Message;
}
/**
* post 请求,发送给哪一个机器人
*
* @param reboot 机器人的token
* @param message 发送的消息
* @return
*/
public static String sendPost(String reboot, String message) {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(reboot);
httppost.addHeader("Content-Type", "application/json; charset=utf-8");
String textMsg = message;
StringEntity se = new StringEntity(textMsg, "utf-8");
httppost.setEntity(se);
String result = null;
HttpResponse response = null;
try {
response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = EntityUtils.toString(response.getEntity(), "utf-8");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 查错机器人
* @param message 封装的消息
* @return
* @throws Exception
*/
public static String sendErrorReboot(String message) throws Exception {
return sendPost("钉钉机器的webhook", message);
}
}
text类型的消息:
String text=RebootUtil.setMessage(true,"我就是我, @1825718XXXX 是不一样的烟火",Arrays.asList(""));
markDown类型的消息:使用于字体加粗,超链接隐藏
String text=RebootUtil.setMarkDown(true,"杭州天气","#### 杭州天气 \n > 9度,@1825718XXXX 西北风1级,空气良89,相对温度73%\n\n > ![screenshot](http://i01.lw.aliimg.com/media/lALPBbCc1ZhJGIvNAkzNBLA_1200_588.png)\n > ###### 10点20分发布 [天气](http://www.thinkpage.cn/)",Arrays.asList(""));
调用工具类,try-catch一下
RebootUtil.sendErrorReboot(text);
总结
钉钉调用机器人还是比较简单的,在一些统计数据方面可以有效的集成开发。
本文中的2个IDEA插件GsonFormat和Lombok还是挺方便的,详细安装方法可以查看文章