钉钉机器人开箱即用

钉钉机器人开箱即用
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.codec.binary.Base64;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;

public class testrobot {
public static void main(String[] args) {
/**
* 主要的执行方法
*/
StringBuffer stringBuffer = new StringBuffer();

    try {
        stringBuffer.append("赌博伤肾,建议直接转账我").append("\n").append("[对勾]");// 添加钉钉消息
        sendDingDing(stringBuffer);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * 发送钉钉消息
 *
 * @param stringBuffer 钉钉机器人消息内容
 */
private static void sendDingDing(StringBuffer stringBuffer) {

    try {
        // 钉钉机器人地址(配置机器人的webhook)
        String baseUrl = "https://oapi.dingtalk.com/robot/send?access_token=";

        String token = "1ad2a5bb7fcc83dd4f15f76f73xx3042920a5208f5da92c276cff61d4a0";
        String secret = "SEC935bccf01b770df04a539000xxefaacd18a76adb220412737e8eb9a9aae47";

        long timestamp = System.currentTimeMillis();
        String stringToSign = timestamp + "\n" + secret;

        Mac mac = Mac.getInstance("HmacSHA256");// 消息认证码(Message Authentication Code,MAC)的生成和验证
        mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));

        byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));

        String dingUrl = baseUrl + token + "&timestamp=" + timestamp + "&sign="
                + URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");

        // 是否通知所有人
        boolean isAtAll = true;// true:@所有人
        // 通知具体人的手机号码列表
        List<String> mobileList = Lists.newArrayList();

// mobileList.add(“+86-137xx4293”);// @指定的人员

        String content = stringBuffer.toString();

        // 组装请求内容
        String reqStr = packageBuildReqData(content, isAtAll, mobileList);

        // 推送消息(http请求)
        String result = HttpUtil.doPosthttp(dingUrl, reqStr);

        System.out.println("result == " + result);
    } catch (Exception e) {
        e.printStackTrace();
    }

}

/**
 * 组装请求报文
 *
 * @param content    消息内容
 * @param isAtAll    是否通知所有人
 * @param mobileList 通知人的手机号码列表
 * @return 组装后的请求报文
 */
private static String packageBuildReqData(String content, boolean isAtAll, List<String> mobileList) {
    // 消息内容
    Map<String, String> contentMap = Maps.newHashMap();
    contentMap.put("content", content);
    // 通知人
    Map<String, Object> atMap = Maps.newHashMap();
    // 1. 是否通知所有人
    atMap.put("isAtAll", isAtAll);
    // 2. 通知具体人的手机号码列表
    atMap.put("atMobiles", mobileList);

    Map<String, Object> reqMap = Maps.newHashMap();
    reqMap.put("msgtype", "text");
    reqMap.put("text", contentMap);
    reqMap.put("at", atMap);

    return JSON.toJSONString(reqMap);
}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值