钉钉群-推送消息-Java

import com.alibaba.fastjson2.JSON;

import com.dingtalk.api.DefaultDingTalkClient;

import com.dingtalk.api.DingTalkClient;

import com.dingtalk.api.request.OapiRobotSendRequest;

import com.dingtalk.api.response.OapiRobotSendResponse;

import com.taobao.api.ApiException;

import lombok.extern.slf4j.Slf4j;

import org.apache.commons.codec.binary.Base64;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;

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.Date;

/**

* @ClassName DingDingUtils

* @Descripition

* @Author

* @Date 2024/9/20 18:00

*/

@Slf4j

@Component

public class DingDingUtils {

/**

*

* 推送钉钉消息

*

* @param content

*/

public static void sendDingTalkMsg(String content) {

try {

// 钉钉发送消息路径

String sendMessageUrl = "https://oapi.dingtalk.com/robot/send?access_token=自定义token";

// 秘钥

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 = sendMessageUrl + "&timestamp=" + timestamp + "&sign=" + sign;

DingTalkClient client = new DefaultDingTalkClient(dingUrl);

OapiRobotSendRequest sendRequest = new OapiRobotSendRequest();

// ‌钉钉自定义机器人支持的消息类型包括text类型、link类型、markdown类型、actioncard类型和feedcard类型

sendRequest.setMsgtype("markdown");

StringBuilder sb = new StringBuilder();

// 标题‌:通过#的数量来表示不同级别的标题,例如# 标题1、## 标题2等。

sb.append("#### 【自定义标题】: ").append("****").append("\n\n");

// ‌引用块‌:使用>符号开头,例如> 这是引用的文本块`。

sb.append("> ##### 告警提示: ").append("【自定义信息文本】").append("\n\n");

sb.append("> ##### 时间: ").append(DateUtil.parseDateToStr(new Date(), "yyyy-MM-dd HH:mm:ss")).append("\n\n");

sb.append("> ##### 内容: ").append(content);

OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();

markdown.setText(sb.toString());

markdown.setTitle("告警");

sendRequest.setMarkdown(markdown);

OapiRobotSendResponse response = client.execute(sendRequest);

log.info("DingDingUtils.sendDingTalkMsg 钉钉消息发送结果 response: {}", JSON.toJSONString(response));

if (!response.isSuccess()) {

log.error("DingDingUtils.sendDingTalkMsg 钉钉消息发送失败! response: {}", JSON.toJSONString(response));

}

} catch (NoSuchAlgorithmException e) {

log.error("DingDingUtils.sendDingTalkMsg NoSuchAlgorithmException getMessage : {}", e.getMessage(), e);

} catch (InvalidKeyException e) {

log.error("DingDingUtils.sendDingTalkMsg InvalidKeyException getMessage : {}", e.getMessage(), e);

} catch (UnsupportedEncodingException e) {

log.error("DingDingUtils.sendDingTalkMsg UnsupportedEncodingException getMessage : {}", e.getMessage(), e);

} catch (ApiException e) {

log.error("DingDingUtils.sendDingTalkMsg ApiException getMessage : {}", e.getMessage(), e);

}

}

public static void main(String\[\] args) {

sendDingTalkMsg("测试发消息");

}

}

备注:钉钉发送消息路径 和 秘钥

  1. 创建机器人

    • 登录钉钉,进入需要接收通知的群聊。
    • 点击群设置(一般在群聊窗口右上角的"..."菜单中)。
    • 选择"智能群助手"或"群机器人",然后点击"添加机器人"。
    • 选择"自定义机器人",为机器人命名,并设置安全选项(如加签)。完成后,会生成一个Webhook地址,复制保存,稍后将会用到。

示例如图:


相关推荐
yyxx4121233 天前
上海企业如何选择专业的钉钉服务商
java·大数据·人工智能·钉钉
小懿互联集成平台4 天前
金蝶云星空与钉钉OA审批对接-构建一体化财务付款管理体系
钉钉·金蝶云星空·数据对接·小懿互联·构建一体化财务付款
TMT星球8 天前
钉钉发布DingTalk A1豆蔻医生版,售价999元
人工智能·深度学习·钉钉
河北小博博9 天前
OpenClaw 接入飞书 / 钉钉 / 企业微信:从 HTTP Webhook 到 WebSocket 长连接
钉钉·飞书·企业微信
Linlingu9 天前
OpenClaw接入钉钉企业内部机器人完整实操教程(Stream模式无公网部署)
人工智能·windows·机器人·钉钉·办公自动化·小龙虾
神一样的老师12 天前
用 AI 助手直接操作钉钉?QoderWork 连接钉钉的体验分享
人工智能·钉钉
CIO_Alliance14 天前
鼎捷和钉钉系统集成破局:iPaaS成制造业破解“系统割裂”关键
人工智能·钉钉·ipaas·系统集成·制造业·企业数智化转型·零售电商
科技与数码14 天前
鸿蒙智能待办:钉钉学而思待办自动同步日历
华为·钉钉·harmonyos
roseonly_h16 天前
如何将钉钉微应用在浏览器打开
前端·钉钉
Miss roro17 天前
通用OA能不能替代专业法务系统?钉钉飞书和律杏法务云的实测对比
java·钉钉·飞书·法律科技·企业诉讼管理·法务管理系统