项目消息发送到钉钉群聊

背景

小项目内部出现异常情况需要通知到人员,因为日常使用的就是钉钉,于是就是想如果项目内部一些消息通知到钉钉里面。

实现原理

创建钉钉群聊,群聊增加机器人。机器人可以用HTTP调用将需要的数据以消息的形式发送到群聊里面。

具体实践

创建群聊,并设置群聊机器人

创建钉钉群聊

增加机器人

获取 access_token 和 密钥

结合项目发送消息

文档资料:机器人发送群聊消息 - 钉钉开放平台

发送代码

@Slf4j
public class DingUtils {

    /**
     * 发送钉钉消息
     */
    public static void sendDingMsg(SendDingMsgDto sendDingMsg) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {
        StringBuilder url = new StringBuilder(sendDingMsg.getUrl()).append("?access_token=")
                .append(sendDingMsg.getAccessToken());
        Long timestamp = System.currentTimeMillis() + 60 * 1000;
        String stringToSign = timestamp + "\n" + sendDingMsg.getSecret();
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(sendDingMsg.getSecret().getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
        byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
        String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
        url.append("&timestamp=").append(timestamp).append("&sign=").append(sign);
        String result = HttpUtil.post(url.toString(), JSONUtil.toJsonStr(sendDingMsg.getDingMessageDto()));
        log.info("推送结果:{}", result);
    }
}

@Data
@Builder
public class SendDingMsgDto {

    /**
     * url
     */
    private String url;

    /**
     * accessToken
     */
    private String accessToken;

    /**
     * secret
     */
    private String secret;

    /**
     * 消息内容
     */
    private DingMessageDto dingMessageDto;
}

@Data
@Builder
public class DingMessageDto {

    /**
     * 消息类型
     */
    private String msgtype;

    /**
     * markdown类型消息
     */
    private MarkDownDto markdown;

    /**
     * 文本消息
     */
    private TextDto text;


    public static String TEXT = "text";
    public static String MARKDOWN = "markdown";
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值