From 34de9e39066f0d1720ca0228166c633fab691605 Mon Sep 17 00:00:00 2001 From: 3y Date: Thu, 2 Jun 2022 22:01:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=92=89=E9=92=89=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=AF=B9=E5=90=84=E7=A7=8D=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...el.java => DingDingRobotContentModel.java} | 15 +--- .../dto/model/DingDingWorkContentModel.java | 79 +++++++++++++++++++ .../austin/common/enums/ChannelType.java | 4 +- .../austin/common/enums/SendMessageType.java | 51 +++++++++--- .../handler/impl/DingDingRobotHandler.java | 5 +- .../impl/DingDingWorkNoticeHandler.java | 70 ++++++++++++++-- 6 files changed, 186 insertions(+), 38 deletions(-) rename austin-common/src/main/java/com/java3y/austin/common/dto/model/{DingDingContentModel.java => DingDingRobotContentModel.java} (83%) create mode 100644 austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingWorkContentModel.java diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingRobotContentModel.java similarity index 83% rename from austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingContentModel.java rename to austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingRobotContentModel.java index af93d7c..02d7db8 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingContentModel.java +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingRobotContentModel.java @@ -7,17 +7,15 @@ import lombok.NoArgsConstructor; /** * @author 3y - * 钉钉 自定义机器人 + 工作通知 + * 钉钉 自定义机器人 *

* https://open.dingtalk.com/document/group/custom-robot-access - *

- * https://open.dingtalk.com/document/orgapp-server/asynchronous-sending-of-enterprise-session-messages */ @Data @Builder @AllArgsConstructor @NoArgsConstructor -public class DingDingContentModel extends ContentModel { +public class DingDingRobotContentModel extends ContentModel { /** * 发送类型 @@ -62,13 +60,4 @@ public class DingDingContentModel extends ContentModel { * "[{\"picUrl\":\"https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png\",\"title\":\"{$title1}\",\"url\":\"https://www.dingtalk.com/\"},{\"picUrl\":\"https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png\\t\",\"title\":\"时代的火车向前开2\",\"url\":\"https://www.dingtalk.com/\"}]"} */ private String feedCards; - - - /** - * 图片、文件、语音消息 需要发送使用的素材ID字段 - */ - private String mediaId; - - // ... - } diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingWorkContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingWorkContentModel.java new file mode 100644 index 0000000..cc461c3 --- /dev/null +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/model/DingDingWorkContentModel.java @@ -0,0 +1,79 @@ +package com.java3y.austin.common.dto.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author 3y + * 钉钉 工作通知 + *

+ * https://open.dingtalk.com/document/orgapp-server/asynchronous-sending-of-enterprise-session-messages + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DingDingWorkContentModel extends ContentModel { + + /** + * 发送类型 + */ + private String sendType; + + /** + * 【文本消息】内容,【markdown消息】内容,【ActionCard消息】内容 + */ + private String content; + + /** + * 【markdown消息】标题,【ActionCard消息】标题 + */ + private String title; + + /** + * 【ActionCard消息】按钮布局 + */ + private String btnOrientation; + + /** + * 【ActionCard消息】按钮的文案和跳转链接的json + * [{"title":"一个按钮","action_url":"https://www.taobao.com"},{"title":"两个按钮","action_url":"https://www.tmall.com"}] + */ + private String btns; + + + /** + * 【链接消息】点击消息跳转的URL, + */ + private String url; + + /** + * 【链接消息】图片URL, + */ + private String picUrl; + + /** + * 图片、文件、语音消息 需要发送使用的素材ID字段 + */ + private String mediaId; + + /** + * 语音时长 + */ + private String duration; + + /** + * OA消息头 + * {"bgcolor":"FFBBBBBB","text":"头部标题"} + */ + private String head; + + /** + * OA消息内容 + * {"title":"正文标题","form":[{"key":"姓名:","value":"张三"},{"key":"年龄:","value":"20"},{"key":"身高:","value":"1.8米"},{"key":"体重:","value":"130斤"},{"key":"学历:","value":"本科"},{"key":"爱好:","value":"打球、听音乐"}],"rich":{"num":"15.6","unit":"元"},"content":"大段文本大段文本大段文本大段文本大段文本大段文本","image":"@lADOADmaWMzazQKA","file_count":"3","author":"李四 "} + */ + private String body; + +} diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java b/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java index 2329673..ea8b736 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/ChannelType.java @@ -24,8 +24,8 @@ public enum ChannelType { OFFICIAL_ACCOUNT(50, "OfficialAccounts(服务号)", OfficialAccountsContentModel.class, "official_accounts"), MINI_PROGRAM(60, "miniProgram(小程序)", MiniProgramContentModel.class, "mini_program"), ENTERPRISE_WE_CHAT(70, "EnterpriseWeChat(企业微信)", EnterpriseWeChatContentModel.class, "enterprise_we_chat"), - DING_DING_ROBOT(80, "dingDingRobot(钉钉机器人)", DingDingContentModel.class, "ding_ding_robot"), - DING_DING_WORK_NOTICE(90, "dingDingWorkNotice(钉钉工作通知)", DingDingContentModel.class, "ding_ding_work_notice"), + DING_DING_ROBOT(80, "dingDingRobot(钉钉机器人)", DingDingRobotContentModel.class, "ding_ding_robot"), + DING_DING_WORK_NOTICE(90, "dingDingWorkNotice(钉钉工作通知)", DingDingWorkContentModel.class, "ding_ding_work_notice"), ; /** diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java b/austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java index 6eabe2d..791bbda 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/SendMessageType.java @@ -14,27 +14,37 @@ import lombok.ToString; @AllArgsConstructor public enum SendMessageType { - TEXT("10", "文本", "text"), - VOICE("20", "语音", null), - VIDEO("30", "视频", null), - NEWS("40", "图文", "feedCard"), - TEXT_CARD("50", "文本卡片", null), - FILE("60", "文件", null), - MINI_PROGRAM_NOTICE("70", "小程序通知", null), - MARKDOWN("80", "markdown", "markdown"), - TEMPLATE_CARD("90", "模板卡片", null), - IMAGE("100", "图片", null), - LINK("110", "链接消息", "link"), - ACTION_CARD("120", "跳转卡片消息", "actionCard"), + TEXT("10", "文本", "text", "text"), + VOICE("20", "语音", null, "voice"), + VIDEO("30", "视频", null, null), + NEWS("40", "图文", "feedCard", null), + TEXT_CARD("50", "文本卡片", null, null), + FILE("60", "文件", null, "file"), + MINI_PROGRAM_NOTICE("70", "小程序通知", null, null), + MARKDOWN("80", "markdown", "markdown", "markdown"), + TEMPLATE_CARD("90", "模板卡片", null, null), + IMAGE("100", "图片", null, "image"), + LINK("110", "链接消息", "link", "link"), + ACTION_CARD("120", "跳转卡片消息", "actionCard", "action_card"), + OA("130", "OA消息", null, "oa"), ; private String code; private String description; + + /** + * 钉钉工作消息的类型值 + */ private String dingDingRobotType; + /** + * 钉钉机器人消息的类型值 + */ + private String dingDingWorkType; + /** - * 通过code获取钉钉的Type值 + * 通过code获取钉钉机器人的Type值 * * @param code * @return @@ -48,5 +58,20 @@ public enum SendMessageType { return null; } + /** + * 通过code获取钉钉工作通知的Type值 + * + * @param code + * @return + */ + public static String getDingDingWorkTypeByCode(String code) { + for (SendMessageType value : SendMessageType.values()) { + if (value.getCode().equals(code)) { + return value.getDingDingWorkType(); + } + } + return null; + } + } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java index f73b50b..2c92c98 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingRobotHandler.java @@ -4,13 +4,12 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.google.common.base.Throwables; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.constant.SendAccountConstant; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.dto.account.DingDingRobotAccount; -import com.java3y.austin.common.dto.model.DingDingContentModel; +import com.java3y.austin.common.dto.model.DingDingRobotContentModel; import com.java3y.austin.common.enums.ChannelType; import com.java3y.austin.common.enums.SendMessageType; import com.java3y.austin.handler.domain.dingding.DingDingRobotParam; @@ -74,7 +73,7 @@ public class DingDingRobotHandler extends BaseHandler implements Handler { } // 消息类型以及内容相关 - DingDingContentModel contentModel = (DingDingContentModel) taskInfo.getContentModel(); + DingDingRobotContentModel contentModel = (DingDingRobotContentModel) taskInfo.getContentModel(); DingDingRobotParam param = DingDingRobotParam.builder().at(atVo) .msgtype(SendMessageType.getDingDingRobotTypeByCode(contentModel.getSendType())) .build(); diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java index 3ddee90..fe60d1e 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/DingDingWorkNoticeHandler.java @@ -11,8 +11,11 @@ import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.constant.SendAccountConstant; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.dto.account.DingDingWorkNoticeAccount; -import com.java3y.austin.common.dto.model.DingDingContentModel; +import com.java3y.austin.common.dto.model.DingDingRobotContentModel; +import com.java3y.austin.common.dto.model.DingDingWorkContentModel; import com.java3y.austin.common.enums.ChannelType; +import com.java3y.austin.common.enums.SendMessageType; +import com.java3y.austin.handler.domain.dingding.DingDingRobotParam; import com.java3y.austin.handler.handler.BaseHandler; import com.java3y.austin.handler.handler.Handler; import com.java3y.austin.support.utils.AccountUtils; @@ -22,6 +25,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import java.util.List; + /** * 钉钉消息自定义机器人 消息处理器 *

@@ -73,7 +78,7 @@ public class DingDingWorkNoticeHandler extends BaseHandler implements Handler { */ private OapiMessageCorpconversationAsyncsendV2Request assembleParam(DingDingWorkNoticeAccount account, TaskInfo taskInfo) { OapiMessageCorpconversationAsyncsendV2Request req = new OapiMessageCorpconversationAsyncsendV2Request(); - DingDingContentModel contentModel = (DingDingContentModel) taskInfo.getContentModel(); + DingDingWorkContentModel contentModel = (DingDingWorkContentModel) taskInfo.getContentModel(); try { // 接收者相关 if (AustinConstant.SEND_ALL.equals(CollUtil.getFirst(taskInfo.getReceiver()))) { @@ -83,13 +88,64 @@ public class DingDingWorkNoticeHandler extends BaseHandler implements Handler { } req.setAgentId(Long.parseLong(account.getAgentId())); - // 内容相关 + OapiMessageCorpconversationAsyncsendV2Request.Msg message = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); - message.setMsgtype("text"); - OapiMessageCorpconversationAsyncsendV2Request.Text textObj = new OapiMessageCorpconversationAsyncsendV2Request.Text(); - textObj.setContent(contentModel.getContent()); - message.setText(textObj); + message.setMsgtype(SendMessageType.getDingDingWorkTypeByCode(contentModel.getSendType())); + // 根据类型设置入参 + if (SendMessageType.TEXT.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.Text textObj = new OapiMessageCorpconversationAsyncsendV2Request.Text(); + textObj.setContent(contentModel.getContent()); + message.setText(textObj); + } + if (SendMessageType.IMAGE.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.Image image = new OapiMessageCorpconversationAsyncsendV2Request.Image(); + image.setMediaId(contentModel.getMediaId()); + message.setImage(image); + } + if (SendMessageType.VOICE.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.Voice voice = new OapiMessageCorpconversationAsyncsendV2Request.Voice(); + voice.setMediaId(contentModel.getMediaId()); + voice.setDuration(contentModel.getDuration()); + message.setVoice(voice); + } + if (SendMessageType.FILE.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.File file = new OapiMessageCorpconversationAsyncsendV2Request.File(); + file.setMediaId(contentModel.getMediaId()); + message.setFile(file); + } + if (SendMessageType.LINK.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.Link link = new OapiMessageCorpconversationAsyncsendV2Request.Link(); + link.setText(contentModel.getContent()); + link.setTitle(contentModel.getTitle()); + link.setPicUrl(contentModel.getPicUrl()); + link.setMessageUrl(contentModel.getUrl()); + message.setLink(link); + } + + if (SendMessageType.MARKDOWN.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.Markdown markdown = new OapiMessageCorpconversationAsyncsendV2Request.Markdown(); + markdown.setText(contentModel.getContent()); + markdown.setTitle(contentModel.getTitle()); + message.setMarkdown(markdown); + + } + if (SendMessageType.ACTION_CARD.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.ActionCard actionCard = new OapiMessageCorpconversationAsyncsendV2Request.ActionCard(); + actionCard.setTitle(contentModel.getTitle()); + actionCard.setMarkdown(contentModel.getContent()); + actionCard.setBtnOrientation(contentModel.getBtnOrientation()); + actionCard.setBtnJsonList(JSON.parseArray(contentModel.getBtns(), OapiMessageCorpconversationAsyncsendV2Request.BtnJsonList.class)); + message.setActionCard(actionCard); + + } + if (SendMessageType.ACTION_CARD.getCode().equals(contentModel.getSendType())) { + OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA(); + oa.setMessageUrl(contentModel.getUrl()); + oa.setHead(JSON.parseObject(contentModel.getHead(), OapiMessageCorpconversationAsyncsendV2Request.Head.class)); + oa.setBody(JSON.parseObject(contentModel.getBody(), OapiMessageCorpconversationAsyncsendV2Request.Body.class)); + message.setOa(oa); + } req.setMsg(message); } catch (Exception e) { log.error("assembleParam fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); From ca477107e2d108e2e90c709a915d4b184b900722 Mon Sep 17 00:00:00 2001 From: 3y Date: Fri, 3 Jun 2022 08:36:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8D=87=E7=BA=A7fastjson=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7b500bd..2506f6e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.alibaba fastjson - 1.2.78 + 1.2.83 From 24801d136e26e4dbf9f0e6cc6d8a6b55ae04786b Mon Sep 17 00:00:00 2001 From: 3y Date: Fri, 3 Jun 2022 16:50:15 +0800 Subject: [PATCH 3/3] update README.md --- README.md | 6 ++++-- .../java3y/austin/support/utils/AccountUtils.java | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2e02f25..90479b9 100644 --- a/README.md +++ b/README.md @@ -154,12 +154,14 @@ curl -XPOST "127.0.0.1:8080/send" -H 'Content-Type: application/json' -d '{"co - [x] 接入微信服务号渠道(已有pull request代码) - [x] 接入微信小程序渠道(已有pull request代码) - [x] 接入PUSH渠道 +- [x] 接入云片短信渠道,并短信支持流量配置,拉取腾讯云短信回执 +- [x] 完成接入钉钉机器人渠道所有类型的消息 - [ ] 总体架构已完成,持续做基础建设和优化代码 -**近期更新时间**:5月9号 +**近期更新时间**:6月3号 -**近期更新功能**:接入个推PUSH,安卓发送推送消息 +**近期更新功能**:完成接入钉钉机器人渠道所有类型的消息 ## 项目交流 diff --git a/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java b/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java index 77f4c7f..b72b952 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java +++ b/austin-support/src/main/java/com/java3y/austin/support/utils/AccountUtils.java @@ -21,13 +21,13 @@ public class AccountUtils { private Config config; /** - * (key:smsAccount)短信参数示例:[{"sms_10":{"url":"sms.tencentcloudapi.com","region":"ap-guangzhou","secretId":"AKIDhDUUDfrmQnvmMfhSw95lCMEqBF1WljQq","secretKey":"B4h39yWnnX0C6k7D2btue7JErDJ8gxyi","smsSdkAppId":"1400592125","templateId":"1182097","signName":"Java3y公众号","supplierId":10,"supplierName":"腾讯云"}},{"sms_20":{"url":"https://sms.yunpian.com/v2/sms/tpl_batch_send.json","apikey":"ca55d4c856d72e5d589361c4511b5cd7","tpl_id":"5236082","supplierId":20,"supplierName":"云片"}}] - * (key:emailAccount)邮件参数示例:[{"email_10":{"host":"smtp.qq.com","port":465,"user":"403686131@qq.com","pass":"","from":"403686131@qq.com"}}] - * (key:enterpriseWechatAccount)企业微信参数示例:[{"enterprise_wechat_10":{"corpId":"wwf87603333e00069c","corpSecret":"-IFWxS2222QxzPIorNVUQn144444D915DM","agentId":10044442,"token":"rXROB3333Kf6i","aesKey":"MKZtoFxHIM44444M7ieag3r9ZPUsl"}}] - * (key:dingDingRobotAccount) 钉钉自定义机器人参数示例:[{"ding_ding_robot_10":{"secret":"SEC996d8d9d4768aded74114faae924f229229de444475a1c295d64fedf","webhook":"https://oapi.dingtalk.com/robot/send?access_token=8d03b644ffb6534b203d87333367328b0c3003d164715d2c6c6e56"}}] - * (key:dingDingWorkNoticeAccount) 钉钉工作消息参数示例:[{"ding_ding_work_notice_10":{"appKey":"dingh6yyyyyyycrlbx","appSecret":"tQpvmkR863333yyyyyHP3QHyyyymy9Ao1yoL1oQX5Nlx_fYLLLlpPJWHvWKbTu","agentId":"152333383622"}}] - * (key:officialAccount) 微信服务号模板消息参数示例:[{"official_10":{"appId":"wxecb4693d2eef1ea7","secret":"6240870f4d91701640d769ba20120821","templateId":"JHUk6eE9T5Ts7a5JO3ZQqkBBrZBGn5C9iIiKNDQsk-Q","url":"http://weixin.qq.com/download","miniProgramId":"xiaochengxuappid12345","path":"index?foo=bar"}}] - * (key:miniProgramAccount) 微信小程序订阅消息参数示例:[{"mini_program_10":{"appId":"wxecb4693d2eef1ea7","appSecret":"6240870f4d91701640d769ba20120821","templateId":"JHUk6eE9T5Ts7a5JO3ZQqkBBrZBGn5C9iIiKNDQsk-Q","grantType":"client_credential","miniProgramState":"trial","page":"index?foo=bar"}}] + * (key:smsAccount)短信参数示例:[{"sms_10":{"url":"sms.tencentcloudapi.com","region":"ap-guangzhou","secretId":"AKIDhDxxxxxxxx1WljQq","secretKey":"B4hwww39yxxxrrrrgxyi","smsSdkAppId":"1423123125","templateId":"1182097","signName":"Java3y公众号","supplierId":10,"supplierName":"腾讯云"}},{"sms_20":{"url":"https://sms.yunpian.com/v2/sms/tpl_batch_send.json","apikey":"caffff8234234231b5cd7","tpl_id":"523333332","supplierId":20,"supplierName":"云片"}}] + * (key:emailAccount)邮件参数示例:[{"email_10":{"host":"smtp.qq.com","port":465,"user":"4032222131@qq.com","pass":"","from":"4036333131@qq.com"}}] + * (key:enterpriseWechatAccount)企业微信参数示例:[{"enterprise_wechat_10":{"corpId":"wwf87603333e00069c","corpSecret":"-IFWxS2222QxzPIorNV11144D915DM","agentId":10044442,"token":"rXROB3333Kf6i","aesKey":"MKZtoFxHIM44444M7ieag3r9ZPUsl"}}] + * (key:dingDingRobotAccount) 钉钉自定义机器人参数示例:[{"ding_ding_robot_10":{"secret":"SEC9222d4768aded74114faae92229de422222fedf","webhook":"https://oapi.dingtalk.com/robot/send?access_token=8d03b6442222203d87333367328b0c3003d164715d2c6c6e56"}}] + * (key:dingDingWorkNoticeAccount) 钉钉工作消息参数示例:[{"ding_ding_work_notice_10":{"appKey":"dingh6yyyyyyycrlbx","appSecret":"tQpvmkR863333yyyyyHP3QHyyyymy9Ao1yoL1oQX5NsdfsWHvWKbTu","agentId":"1523123123183622"}}] + * (key:officialAccount) 微信服务号模板消息参数示例:[{"official_10":{"appId":"wxecb4693d2eef1ea7","secret":"624asdfsa1640d769ba20120821","templateId":"JHUk6eE9T5Ts7asdfsadfiKNDQsk-Q","url":"http://weixin.qq.com/download","miniProgramId":"xiaochengxuappid12345","path":"index?foo=bar"}}] + * (key:miniProgramAccount) 微信小程序订阅消息参数示例:[{"mini_program_10":{"appId":"wxecb4693d2eef1ea7","appSecret":"6240870f4d91701640d769ba20120821","templateId":"JHUk6eE9T5TasdfCrQsk-Q","grantType":"client_credential","miniProgramState":"trial","page":"index?foo=bar"}}] */ public T getAccount(Integer sendAccount, String apolloKey, String prefix, Class clazz) { String accountValues = config.getProperty(apolloKey, AustinConstant.APOLLO_DEFAULT_VALUE_JSON_ARRAY);