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() + "×tamp=" + 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);
测试:
此时传过来相应的参数,机器人就会在群里推送消息