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