首頁 > 軟體

SpringBoot接入釘釘自定義機器人預警通知

2022-07-15 14:05:58

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": falsen" +
//                "    }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釘釘機器人預警內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com