diff --git a/xservice-third-part/pom.xml b/xservice-third-part/pom.xml
index a2acabf..cbbb731 100644
--- a/xservice-third-part/pom.xml
+++ b/xservice-third-part/pom.xml
@@ -37,6 +37,12 @@
alidns20150109
3.4.7
+
+
+ commons-codec
+ commons-codec
+ 1.11
+
\ No newline at end of file
diff --git a/xservice-third-part/src/main/java/com/xiang/xservice/basic/xservice/dingTalk/service/DingTalkService.java b/xservice-third-part/src/main/java/com/xiang/xservice/basic/xservice/dingTalk/service/DingTalkService.java
index 2cc10cb..5a602f2 100644
--- a/xservice-third-part/src/main/java/com/xiang/xservice/basic/xservice/dingTalk/service/DingTalkService.java
+++ b/xservice-third-part/src/main/java/com/xiang/xservice/basic/xservice/dingTalk/service/DingTalkService.java
@@ -6,13 +6,22 @@ import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiChatSendRequest;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
+import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiChatSendResponse;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
+import com.dingtalk.api.response.OapiRobotSendResponse;
import com.xiang.xservice.basic.xservice.dingTalk.enums.DingTalkUrlEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+import java.util.List;
+
@Slf4j
@Service
public class DingTalkService {
@@ -30,7 +39,6 @@ public class DingTalkService {
/**
* 组织ID
- *
*/
private static final String CORP_ID = "dingf2c4425cd179a26ef2c783f7214b6d69";
@@ -44,12 +52,55 @@ public class DingTalkService {
private static final String MSG_TYPE = "text";
+ /**
+ * 自定义机器人token
+ */
+ private static final String CUSTOM_ROBOT_TOKEN = "4709b708d961846e0aee523c5abc3b67e8fa424ee292501d85efd4e504f15a8b";
+
+ /**
+ * 密钥
+ */
+ private static final String SECRET = "SEC768ed578c0fb31a9aec84b1c1db4f195f5aca203985bbb9d549e23e41c8874d1";
+
+
+ public static String sendRobotMessage(String msg) throws Exception {
+ Long timestamp = System.currentTimeMillis();
+ String stringToSign = timestamp + "\n" + SECRET;
+ Mac mac = Mac.getInstance("HmacSHA256");
+ mac.init(new SecretKeySpec(SECRET.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
+ byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
+ String sign = URLEncoder.encode(Base64.getEncoder().encodeToString(signData), StandardCharsets.UTF_8);
+
+ //sign字段和timestamp字段必须拼接到请求URL上,否则会出现 310000 的错误信息
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?sign=" + sign + "×tamp=" + timestamp);
+ OapiRobotSendRequest req = new OapiRobotSendRequest();
+ /**
+ * 发送文本消息
+ */
+ //定义文本内容
+ OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
+ text.setContent(msg);
+ //定义 @ 对象
+ OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
+ at.setAtUserIds(List.of(USER_ID));
+ //设置消息类型
+ req.setMsgtype("text");
+ req.setText(text);
+ req.setAt(at);
+ OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN);
+ return rsp.getBody();
+ }
+
+ public static void main(String[] args) throws Exception {
+ System.out.println(DingTalkService.sendRobotMessage("机器人测试"));
+ }
/**
* 发送消息到企业群
+ *
* @return
*/
- public String sendChatMessage(String chatId, String message) throws Exception{
+ public String sendChatMessage(String chatId, String message) throws Exception {
String token = getToken();
DefaultDingTalkClient client = new DefaultDingTalkClient(DingTalkUrlEnum.DING_TALK_CHAR_MESSAGE.getUrl());
OapiChatSendRequest req = new OapiChatSendRequest();
@@ -66,7 +117,8 @@ public class DingTalkService {
}
/**
- * 异步发送工作同志--文本类型
+ * 异步发送个人工作通知--文本类型
+ *
* @param userId
* @param message
* @return