SpringBoot接入釘釘自定義機(jī)器人預(yù)警通知
1、使用pom安裝依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>2、發(fā)送機(jī)器人消息規(guī)則
釘釘公開API
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx


3、釘釘消息發(fā)送代碼
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:釘釘消息發(fā)送工具類
* @Date: 10:44 AM 2019/6/12
* @Modified By:
*/
@Slf4j
public class DingDingMsgSendUtils {
/**
* 處理發(fā)送的釘釘消息
*
* @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("【發(fā)送釘釘群消息】消息響應(yīng)結(jié)果:" + JSON.toJSONString(result));
}
} catch (Exception e) {
log.error("【發(fā)送釘釘群消息】error:" + e.getMessage(), e);
}
}
/**
* 發(fā)送釘釘群消息
*
* @param accessToken
* @param content
*/
public static void sendDingDingGroupMsg(String accessToken, String content) {
String textMsg = "{ \"msgtype\": \"text\", \"text\": {\"content\": \"" + content + "\"}}";
dealDingDingMsgSend(accessToken, textMsg);
}
/**
* 發(fā)送釘釘群消息(可以艾特人)
*
* @param accessToken 群機(jī)器人accessToken
* @param content 發(fā)送內(nèi)容
* @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系統(tǒng)消息】釘釘消息推送測試,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("", "產(chǎn)品人員"),
DATA_ANALYST_PHONE("", "數(shù)據(jù)分析人員");
private String phone;
private String name;
DingMsgPhoneEnum(String phone, String name) {
this.phone = phone;
this.name = name;
}
}import lombok.Getter;
/**
* @Author: yansf
* @Description:釘釘消息群機(jī)器人access_token
* @Date: 10:45 AM 2019/6/12
* @Modified By:
*/
@Getter
public enum DingTokenEnum {
SEND_SMS_BY_DEVELOPER_TOKEN("此處自己申請token", "系統(tǒng)消息通知,技術(shù)專用");
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 + "環(huán)境,errorMsg=" + ex, DingMsgPhoneEnum.DEVELOPER_PHONE_yansf.getPhone());
}
profile配置
@Value("${spring.profiles.active}") private String profile;
4、 結(jié)果演示

到此這篇關(guān)于SpringBoot接入釘釘自定義機(jī)器人預(yù)警通知的文章就介紹到這了,更多相關(guān)SpringBoot釘釘機(jī)器人預(yù)警內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot實(shí)現(xiàn)釘釘機(jī)器人消息推送的示例代碼
- SpringBoot-Admin實(shí)現(xiàn)微服務(wù)監(jiān)控+健康檢查+釘釘告警
- Springboot詳解RocketMQ實(shí)現(xiàn)消息發(fā)送與接收流程
- Springboot詳細(xì)講解RocketMQ實(shí)現(xiàn)順序消息的發(fā)送與消費(fèi)流程
- springboot?使用websocket技術(shù)主動(dòng)給前端發(fā)送消息的實(shí)現(xiàn)
- SpringBoot項(xiàng)目發(fā)送釘釘消息功能實(shí)現(xiàn)
相關(guān)文章
Java編程數(shù)組中最大子矩陣簡便解法實(shí)現(xiàn)代碼
這篇文章主要介紹了Java編程數(shù)組中最大子矩陣簡便解法實(shí)現(xiàn)代碼,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
JAVA大作業(yè)之圖書管理系統(tǒng)實(shí)現(xiàn)全解
隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對圖書館的日常工作進(jìn)行管理勢在必行,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)圖書管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2022-01-01
Spring配置多個(gè)數(shù)據(jù)源并實(shí)現(xiàn)數(shù)據(jù)源的動(dòng)態(tài)切換功能
這篇文章主要介紹了Spring配置多個(gè)數(shù)據(jù)源并實(shí)現(xiàn)數(shù)據(jù)源的動(dòng)態(tài)切換功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
Java進(jìn)階之高并發(fā)核心Selector詳解
前幾篇文章介紹了Java高并發(fā)的一些基礎(chǔ)內(nèi)容,認(rèn)識(shí)了Channel,Buffer和Selector的基本用法,有了感性認(rèn)識(shí)之后,來看看Selector的底層是如何實(shí)現(xiàn)的。,需要的朋友可以參考下2021-05-05
SpringBoot中支持Https協(xié)議的實(shí)現(xiàn)
本文主要介紹了SpringBoot中支持Https協(xié)議的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
SpringBoot項(xiàng)目中使用@Scheduled讀取動(dòng)態(tài)參數(shù)
這篇文章主要介紹了SpringBoot項(xiàng)目中使用@Scheduled讀取動(dòng)態(tài)參數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

