java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java 钉钉机器人发消息

java通过钉钉机器人发消息的实现示例

作者:小非肥

本文主要介绍了java通过钉钉机器人发消息的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

钉钉自定义机器人使用 加签的配置 发送消息

注意:内部群才可以创建自定义机器人
钉钉网址-自定义机器人创建

1、获得的钉钉配置信息workhook和secret

//url路径
    private String URL = "https://oapi.dingtalk.com/robot/send?access_token=08ebaa04f98f7faacbacd80fa879463d85cdccdd6cef184ef01bb5a8b6ae6f6c";
//加签密钥
    private String DINGDING_SECRET = "SEC27596efd776991b2f6786270fa59552459f64612b17adf377295669361af3fae";

2、配置加签

配置路径

    private String getSign() {
        Long timestamp = System.currentTimeMillis();
        String stringToSign = timestamp + "\n" + DINGDING_SECRET;
        Mac mac = null;
        String sign = null;
        try {
            mac = Mac.getInstance("HmacSHA256");
            mac.init(new SecretKeySpec(DINGDING_SECRET.getBytes("UTF-8"), "HmacSHA256"));
            byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
            sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
        } catch (Exception e) {
            throw new IllegalArgumentException("加签处理有误");
        }
        return "&timestamp=" + timestamp + "&sign=" + sign;
    }

3、按照钉钉要求整理json数据结构

如果phone为null则发送普通消息,不为空则发送给特定的人

   private JSONObject buildDingDingMessage(String phone, String message) {
        //2、按要求配置参数格式
        JSONObject json = new JSONObject();
        json.put("msgtype", "text");
        json.put("text", new JSONObject() {{
            put("content", message);
        }});
        if (!UtilString.isBlank(phone)) {
            ArrayList<String> list = new ArrayList<>();
            list.add(phone);
            json.put("at", new JSONObject() {{
                put("atMobiles", list.toArray());
            }});
        }
        return json;
    }
    @Override
    public void doSendMessage(String phone, String message) {
        //1、检查数据
        if (UtilString.isBlank(message)) {
            throw new IllegalArgumentException("请输入钉钉服务机器人要输出的信息");
        }
        //2、配置钉钉信息
        JSONObject  json = buildDingDingMessage(phone, message);
        //3、请求
        String url = URL + getSign();
        String responseText = HttpClient.textBody(url)
                .json(json.toJSONString())
                .connectTimeout(60)
                .readTimeout(5 * 60)
                .writeTimeout(5 * 60)
                .asString();
//无错则不发送日志消息
        JSONObject responseJson = JSON.parseObject(responseText);
        if (!responseJson.getString("errmsg").equals("ok")) {
            log.error(responseJson.getString("errmsg"));
        }
    }

到此这篇关于java通过钉钉机器人发消息的实现示例的文章就介绍到这了,更多相关java 钉钉机器人发消息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文