使用webhook推送消息给钉钉机器人

1.需求

   在项目中将某个操作后的数据发送给钉钉机器人。

2.配置自定义的钉钉机器人

  钉钉的 WebHook 自定义机器人的配置文档:https://ding-doc.dingtalk.com/doc#/serverapi3/iydd5h

   下载钉钉电脑版,创建一个群,选择智能群助手,添加自定义机器人

   

   然后选择加密方式,这里选标签加密,会生成webhook的地址和秘钥

3.封装参数发送的代码:

 //1.添加安全设置,构造请求uri(此处直接封装uri而非用String类型来进行http请求:RestTemplate 在执行请求时,如果路径为String类型,将分析路径参数并组合路径,此时会丢失sign的部分特殊字符)
            long timestamp = System.currentTimeMillis();
            URI uri = new URI(hook.getWebhookPath() + "&timestamp=" + timestamp + "&sign=" + addSignature(hook.getSecret(), timestamp));
            //2.添加发送类型
            request.put("msgtype", "markdown");
            //3.添加@对象
            Map<String, Object> at = new HashMap<>();
            at.put("isAtAll", CollectionUtils.isEmpty(mobiles));
            if (!CollectionUtils.isEmpty(mobiles)) {
                at.put("atMobiles", mobiles);
            }
            request.put("at", at);
            for (String mobile : mobiles) {
                text = "@" + mobile + text;
            }
            //4.添加发送内容
            Map<String, Object> markdown = new HashMap<>();
            markdown.put("text", text);
            markdown.put("title", title);
            request.put("markdown", markdown);
            //额外内容
            request.put("web_uri", uri);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("requestBody", JSON.toJSONString(request));
            webHookJsonSendDTO.setObjectAttributes(jsonObject);
            //5.发送请求
            webhookRecordDTO.setSendTime(new Date());
            webhookRecordDetailDTO.setRequestHeaders(REQUEST_HEADER);
            webhookRecordDetailDTO.setRequestBody(webHookJsonSendDTO.getObjectAttributes().get("requestBody").toString());
            response = template.postForEntity(uri, request, String.class);

测试:

此时传过来相应的参数,机器人就会在群里推送消息

猜你喜欢

转载自blog.csdn.net/weixin_37650458/article/details/105280528