软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot接入钉钉自定义机器人预警通知

SpringBoot接入钉钉自定义机器人预警通知

作者:Sibylsf  发布时间:2022-07-23 00:29:45 

标签: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

SpringBoot接入钉钉自定义机器人预警通知

SpringBoot接入钉钉自定义机器人预警通知

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接入钉钉自定义机器人预警通知

来源:https://blog.csdn.net/Sibylsf/article/details/91980783

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com