本文主要介绍了SpringBoot接入钉钉自定义机器人预警通知,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1、使用pom安装依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>
2、发送机器人消息规则
钉钉公开API
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
3、钉钉消息发送代码
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONSerializer;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.util.*;
/**
* @Author: yansf
* @Description:钉钉消息发送工具类
* @Date: 10:44 AM 2019/6/12
* @Modified By:
*/
@Slf4j
public class DingDingMsgSendUtils {
/**
* 处理发送的钉钉消息
*
* @param accessToken
* @param textMsg
*/
private static void dealDingDingMsgSend(String accessToken, String textMsg) {
HttpClient httpclient = HttpClients.createDefault();
String WEBHOOK_TOKEN = "https://oapi.dingtalk.com/robot/send?access_token=" + accessToken;
HttpPost httppost = new HttpPost(WEBHOOK_TOKEN);
httppost.addHeader("Content-Type", "application/json; charset=utf-8");
StringEntity se = new StringEntity(textMsg, "utf-8");
httppost.setEntity(se);
try {
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(response.getEntity(), "utf-8");
log.info("【发送钉钉群消息】消息响应结果:" + JSON.toJSONString(result));
}
} catch (Exception e) {
log.error("【发送钉钉群消息】error:" + e.getMessage(), e);
}
}
/**
* 发送钉钉群消息
*
* @param accessToken
* @param content
*/
public static void sendDingDingGroupMsg(String accessToken, String content) {
String textMsg = "{ \"msgtype\": \"text\", \"text\": {\"content\": \"" + content + "\"}}";
dealDingDingMsgSend(accessToken, textMsg);
}
/**
* 发送钉钉群消息(可以艾特人)
*
* @param accessToken 群机器人accessToken
* @param content 发送内容
* @param atPhone 艾特人电话,如:176********,156********,
*/
public static void sendDingDingGroupMsg(String accessToken, String content, String atPhone) {
content = content.replace("\"", "'");
String textMsg = "";
// String textMsg = "{\n" +
// " \"msgtype\": \"text\", \n" +
// " \"text\": {\n" +
// " \"content\": \"" + content + "\"\n" +
// " }, \n" +
// " \"at\": {\n" +
// " \"atMobiles\": [\n" +
// " " + atPhone +
// " ], \n" +
// " \"isAtAll\": false\n" +
// " }\n" +
// "}";
MsgDto msgDto = new MsgDto();
msgDto.setMsgtype("text");
TextDto textDto = new TextDto();
textDto.setContent(content);
msgDto.setText(textDto);
AtDto atDto = new AtDto();
atDto.setIsAtAll(false);
List<String> result = Arrays.asList(atPhone.split(","));
atDto.setAtMobiles(result);
msgDto.setAt(atDto);
textMsg = JSONSerializer.toJSON(msgDto).toString();
System.out.println(textMsg);
dealDingDingMsgSend(accessToken, textMsg);
}
public static void main(String[] args) {
try {
int s = Integer.parseInt("df12");
// System.out.println(1 / 0);
} catch (Exception e) {
//e.printStackTrace();
sendDingDingGroupMsg(DingTokenEnum.SEND_SMS_BY_DEVELOPER_TOKEN.getToken(), "【JAVA系统消息】钉钉消息推送测试,by:闫淑芳..." + e, DingMsgPhoneEnum.DEVELOPER_PHONE_yansf.getPhone());
}
}
}
import lombok.Getter;
/**
* @Author: yansf
* @Description:钉钉消息接收用户,配置钉钉绑定的电话即可
* @Date: 10:44 AM 2019/6/12
* @Modified By:
*/
@Getter
public enum DingMsgPhoneEnum {
GENERAL_PURPOSE("176*****983", "bug不存在的"),
DEVELOPER_PHONE_yansf("176*****983", "yansf"),
DEVELOPER_PHONE_all("176*****983,176*****982,176*****981,176*****980", "all"),
PRODUCT_PERSONNEL_PHONE("", "产品人员"),
DATA_ANALYST_PHONE("", "数据分析人员");
private String phone;
private String name;
DingMsgPhoneEnum(String phone, String name) {
this.phone = phone;
this.name = name;
}
}
import lombok.Getter;
/**
* @Author: yansf
* @Description:钉钉消息群机器人access_token
* @Date: 10:45 AM 2019/6/12
* @Modified By:
*/
@Getter
public enum DingTokenEnum {
SEND_SMS_BY_DEVELOPER_TOKEN("此处自己申请token", "系统消息通知,技术专用");
private String token;
private String name;
DingTokenEnum(String token, String name) {
this.token = token;
this.name = name;
}
}
import lombok.Data;
import java.util.List;
/**
* @Author: yansf
* @Description:
* @Date:Creat in 2:13 PM 2019/6/12
* @Modified By:
*/
@Data
public class AtDto {
private List<String> atMobiles;
private Boolean isAtAll = false;
}
import lombok.Data;
/**
* @Author: yansf
* @Description:
* @Date:Creat in 2:13 PM 2019/6/12
* @Modified By:
*/
@Data
public class MsgDto {
private String msgtype;
private TextDto text;
private AtDto at;
}
import lombok.Data;
/**
* @Author: yansf
* @Description:
* @Date:Creat in 2:13 PM 2019/6/12
* @Modified By:
*/
@Data
public class TextDto {
private String content;
}
异常捕获
try{
//todo
} catch (Exception ex) {
DingDingMsgSendUtils.sendDingDingGroupMsg(DingTokenEnum.SEND_SMS_BY_DEVELOPER_TOKEN.getToken(), "***异常," + profile + "环境,errorMsg=" + ex, DingMsgPhoneEnum.DEVELOPER_PHONE_yansf.getPhone());
}
profile配置
@Value("${spring.profiles.active}") private String profile;
4、 结果演示
到此这篇关于SpringBoot接入钉钉自定义机器人预警通知的文章就介绍到这了,更多相关SpringBoot钉钉机器人预警内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:SpringBoot接入钉钉自定义机器人预警通知
基础教程推荐
猜你喜欢
- Java实现查找文件和替换文件内容 2023-04-06
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java数据结构之对象比较详解 2023-03-07
- java实现多人聊天系统 2023-05-19
- java基础知识之FileInputStream流的使用 2023-08-11
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java实现线程插队的示例代码 2022-09-03
- springboot自定义starter方法及注解实例 2023-03-31
- Java并发编程进阶之线程控制篇 2023-03-07
- Java文件管理操作的知识点整理 2023-05-19