钉钉机器人开箱即用
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 + "×tamp=" + 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);
}
}
4523






