前言超级简单:
首先在钉钉群设置
第一步:
添加依赖:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.3.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency> 在这里插入代码片 |
第二步:
编写钉钉发送消息工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | package com.kongzhong.aw.autogift.dingding; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.google.common.collect.Maps; import com.kongzhong.aw.autogift.param.BaseParam; import org.apache.commons.codec.binary.Base64; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.time.Instant; import java.util.List; import java.util.Map; /** * @Description : 钉钉工具类 * @Author : caoxiya * @Date: 2020-05-22 19:16 */ public class DingUtil { /** * 给钉钉群发送消息方法 * * @param content 消息内容 * @return * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException * @throws InvalidKeyException */ public static String sendMsg(String content) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException { try { //群机器人复制到的秘钥secret //String secret = "SECc986f2d199370a58870e17d86f976e12f6dc31bb6e3d71e44efas0a538bb5278"; String secret = "你的秘钥secret"; //获取系统时间戳 long timestamp = Instant.now().toEpochMilli(); //拼接 String stringToSign = timestamp + "\n" + secret; //使用HmacSHA256算法计算签名 Mac mac = Mac.getInstance("HmacSHA256"); mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); //进行Base64 encode 得到最后的sign,可以拼接进url里 String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); //钉钉机器人地址(配置机器人的webhook) String dingUrl = "https://oapi.dingtalk.com/robot/send?access_token=a99413dtd5524b651f289357ab84196fb2bbf13d2c0c925c1f1d2d1df89b74b3×tamp=" + timestamp + "&sign=" + sign; String result = HttpUtil.post(dingUrl, content); return result; } catch (Exception e) { // log.error("钉钉推送消息出现异常"); return null; } } /** * @param content 内容 * @param isAtAll 是否@所有人 如果写true mobileList失效 * @param mobileList @人的手机号 * @return * @throws NoSuchAlgorithmException * @throws InvalidKeyException * @throws UnsupportedEncodingException */ public static String buildReqStr(String content, boolean isAtAll, List<String> mobileList) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException { //消息内容 Map<String, String> contentMap = Maps.newHashMap(); contentMap.put("content", content); //通知人 Map<String, Object> atMap = Maps.newHashMap(); //1.是否通知所有人 atMap.put("isAtAll", isAtAll); //2.通知具体人的手机号码列表 atMap.put("atMobiles", mobileList); Map<String, Object> reqMap = Maps.newHashMap(); reqMap.put("msgtype", "text"); reqMap.put("text", contentMap); reqMap.put("at", atMap); String contens = JSON.toJSONString(reqMap); String result = DingUtil.sendMsg(contens); return result; } public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException { try { Integer i = null; if (i < 1) { } }catch(Exception e){ DingUtil.buildReqStr("异常====>"+e.getMessage(), true, BaseParam.PHONELIST); } } } |