package com.dy.pipIrrGlobal.config;
|
|
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.util.Collections;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2024-07-31 9:20
|
* @LastEditTime 2024-07-31 9:20
|
* @Description 钉钉客户端工具类
|
*/
|
@Slf4j
|
@Component
|
public class DingTalk {
|
@Value("${dingtalk.robot.url}")
|
private String URL;
|
|
@Value("${dingtalk.robot.access-token}")
|
private String CUSTOM_ROBOT_TOKEN;
|
|
@Value("${dingtalk.robot.secret}")
|
private String SECRET;
|
|
@Value("${dingtalk.at-all}")
|
private Boolean AT_ALL;
|
|
@Value("${dingtalk.mobile}")
|
private String MOBILE;
|
|
public void sendMessage(String message) {
|
try {
|
Long timestamp = System.currentTimeMillis();
|
String secret = SECRET;
|
String stringToSign = timestamp + "\n" + secret;
|
Mac mac = Mac.getInstance("HmacSHA256");
|
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
|
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
|
|
//sign字段和timestamp字段必须拼接到请求URL上,否则会出现 310000 的错误信息
|
DingTalkClient client = new DefaultDingTalkClient( URL + "?sign=" + sign + "×tamp=" + timestamp);
|
OapiRobotSendRequest req = new OapiRobotSendRequest();
|
/**
|
* 发送文本消息
|
*/
|
//定义文本内容
|
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
|
text.setContent(message);
|
//定义 @对象
|
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
if(AT_ALL) {
|
at.setIsAtAll(true);
|
}else {
|
at.setAtMobiles(Collections.singletonList(MOBILE));
|
}
|
//设置消息类型
|
req.setMsgtype("text");
|
req.setText(text);
|
req.setAt(at);
|
OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN);
|
log.info(rsp.getBody());
|
} catch (ApiException e) {
|
log.error("钉钉发送消息异常", e);
|
//e.printStackTrace();
|
} catch (UnsupportedEncodingException e) {
|
log.error("钉钉发送消息异常", e);
|
//e.printStackTrace();
|
} catch (NoSuchAlgorithmException e) {
|
log.error("钉钉发送消息异常", e);
|
//e.printStackTrace();
|
} catch (InvalidKeyException e) {
|
log.error("钉钉发送消息异常", e);
|
//e.printStackTrace();
|
} catch (Exception e){
|
log.error("钉钉发送消息异常", e);
|
//e.printStackTrace();
|
}
|
}
|
}
|