From 1910ddc8a68ff7bf95e1ff26b954223d13385cf4 Mon Sep 17 00:00:00 2001
From: baymax55 <35788491+baymax55@users.noreply.github.com>
Date: Tue, 22 Nov 2022 09:40:17 +0800
Subject: [PATCH] use http instead of alibaba-dingtalk-service-sdk(#844) (#996)
* use http instead of alibaba-dingtalk-service-sdk
* rm alibaba-dingtalk-service-sdk dependency
* optimize DingMsg result
---
hippo4j-message/pom.xml | 12 -----
.../platform/DingSendMessageHandler.java | 50 +++++++++++++------
pom.xml | 1 -
3 files changed, 34 insertions(+), 29 deletions(-)
diff --git a/hippo4j-message/pom.xml b/hippo4j-message/pom.xml
index 09fed8e6..e865476f 100644
--- a/hippo4j-message/pom.xml
+++ b/hippo4j-message/pom.xml
@@ -15,18 +15,6 @@
hippo4j-core
${revision}
-
- com.aliyun
- alibaba-dingtalk-service-sdk
- ${dingtalk-sdk.version}
-
-
-
- log4j
- log4j
-
-
-
commons-codec
commons-codec
diff --git a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/DingSendMessageHandler.java b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/DingSendMessageHandler.java
index a9b4db2d..a8329e07 100644
--- a/hippo4j-message/src/main/java/cn/hippo4j/message/platform/DingSendMessageHandler.java
+++ b/hippo4j-message/src/main/java/cn/hippo4j/message/platform/DingSendMessageHandler.java
@@ -21,16 +21,16 @@ import cn.hippo4j.common.toolkit.CollectionUtil;
import cn.hippo4j.common.toolkit.FileUtil;
import cn.hippo4j.common.toolkit.Singleton;
import cn.hippo4j.common.toolkit.StringUtil;
+import cn.hippo4j.common.toolkit.JSONUtil;
+import cn.hippo4j.common.toolkit.Assert;
+import cn.hippo4j.common.toolkit.http.HttpUtil;
import cn.hippo4j.message.dto.NotifyConfigDTO;
import cn.hippo4j.message.enums.NotifyPlatformEnum;
import cn.hippo4j.message.platform.base.AbstractRobotSendMessageHandler;
import cn.hippo4j.message.platform.base.RobotMessageActualContent;
import cn.hippo4j.message.platform.base.RobotMessageExecuteDTO;
import cn.hippo4j.message.platform.constant.DingAlarmConstants;
-import com.dingtalk.api.DefaultDingTalkClient;
-import com.dingtalk.api.DingTalkClient;
-import com.dingtalk.api.request.OapiRobotSendRequest;
-import com.taobao.api.ApiException;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
@@ -38,11 +38,14 @@ import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Objects;
import static cn.hippo4j.message.platform.constant.DingAlarmConstants.*;
/**
+ * doc:自定义机器人接入
* Send ding notification message.
*/
@Slf4j
@@ -86,20 +89,35 @@ public class DingSendMessageHandler extends AbstractRobotSendMessageHandler {
log.error("Failed to sign the message sent by nailing.", ex);
}
}
- DingTalkClient dingTalkClient = new DefaultDingTalkClient(serverUrl);
- OapiRobotSendRequest request = new OapiRobotSendRequest();
- request.setMsgtype("markdown");
- OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
- markdown.setTitle(Objects.equals(notifyConfig.getType(), "CONFIG") ? DING_NOTICE_TITLE : DING_ALARM_TITLE);
- markdown.setText(robotMessageExecuteDTO.getText());
- OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
- at.setAtMobiles(CollectionUtil.newArrayList(notifyConfig.getReceives().split(",")));
- request.setAt(at);
- request.setMarkdown(markdown);
+ String title = Objects.equals(notifyConfig.getType(), "CONFIG") ? DING_NOTICE_TITLE : DING_ALARM_TITLE;
+ String text = robotMessageExecuteDTO.getText();
+ ArrayList atMobiles = CollectionUtil.newArrayList(notifyConfig.getReceives().split(","));
+
+ HashMap markdown = new HashMap<>();
+ markdown.put("title", title);
+ markdown.put("text", text);
+ HashMap at = new HashMap<>();
+ at.put("atMobiles", atMobiles);
+
+ HashMap markdownJson = new HashMap<>();
+ markdownJson.put("msgtype", "markdown");
+ markdownJson.put("markdown", markdown);
+ markdownJson.put("at", at);
try {
- dingTalkClient.execute(request);
- } catch (ApiException ex) {
+ String responseBody = HttpUtil.post(serverUrl, markdownJson);
+ DingRobotResponse response = JSONUtil.parseObject(responseBody, DingRobotResponse.class);
+ Assert.isTrue(response != null, "response is null");
+ if (response.getErrcode() != 0) {
+ log.error("Ding failed to send message,reason : {}", response.errmsg);
+ }
+ } catch (Exception ex) {
log.error("Ding failed to send message", ex);
}
}
+
+ @Data
+ static class DingRobotResponse {
+ private Long errcode;
+ private String errmsg;
+ }
}
diff --git a/pom.xml b/pom.xml
index 064bcf36..b2de7eed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,6 @@
6.1.5.Final
0.9.0
2.11.1
- 2.0.0
2.1.214
3.0.5